Detour - Wie den code in Recv schreiben ?
-
Heyho liebe Community,
Ich habe mit einem Freund zusammen grade eine Detour in c++ geschrieben. Diese sieht so wie folgend aus.
// Functions: void __stdcall hkRecv(SOCKET sSocket, char *Buffer, int length, int flags); DWORD WINAPI InitHook(LPVOID lpParams); void SpecialProlog(); void SpecialDetour(BYTE* src, BYTE* prolog, const int len); // Dirty Variables (damit ich's leichter habe, ist aber nicht sehr sauber): DWORD Jumpback; // dirty, but don't touch it or burn in hell DWORD moSocket; // that one, too DWORD msBuffer; // that one, too DWORD miLength; // that one, too DWORD miFlags; // that one, too BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hModule); CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&InitHook, 0, 0, 0); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } DWORD WINAPI InitHook(LPVOID lpParams) { HMODULE hWinsockMod = NULL; FARPROC dwRecvAddress; while (hWinsockMod == NULL) { hWinsockMod = GetModuleHandle("Ws2_32.dll"); Sleep(100); // optional } dwRecvAddress = GetProcAddress(hWinsockMod, "recv"); SpecialDetour((PBYTE)dwRecvAddress, (PBYTE)SpecialProlog, 6); return 1; } void __stdcall hkRecv(SOCKET sSocket, char *Buffer, int length, int flags) { // code return; // weitermachen kann hier nicht unterbunden werden, sonst wird der stack zerstört } void SpecialDetour(BYTE* src, BYTE* prolog, const int len) { DWORD dwOldProtection; BYTE* trampoline = (BYTE*)malloc(len+5); // platz für die trampolin funktion schaffen VirtualProtect(trampoline, len+5, PAGE_EXECUTE_READWRITE, &dwOldProtection); // die trampolinfunktion überschreibbar und ausführbar (!) machen VirtualProtect(src, len, PAGE_EXECUTE_READWRITE, &dwOldProtection); // die ersten Bytes der orginalfunktion (bzw. des interrupt points) überschreibbar machen memcpy(trampoline, src, len); // die ersten len Bytes der Funktion in's trampolin sichern sichern trampoline += len; // trampolin-pointer auf das trampolinende setzen, wo der jmp gemacht wird trampoline[0] = 0xE9; // jmp zur *(DWORD*)(trampoline+1) = (DWORD)(src + len - trampoline) - 5; // relativen adresse der orginalfunktion +len (überschrieben) Jumpback = (DWORD)(trampoline-len); src[0] = 0xE9; // jmp zur *(DWORD*)(src+1) = (DWORD)(prolog - src) - 5; // relativen adresse des prologs VirtualProtect(src, len, dwOldProtection, &dwOldProtection); // die alte protection der len bytes der orginalfunktion wiederherstellen } __declspec(naked) void SpecialProlog() { // [esp + 0x00] = ebp of Recv-Caller // [esp + 0x04] = Adress of Recv-Caller // [esp + 0x08] = 1st Arg // [esp + 0x0C] = 2nd Arg // [esp + 0x10] = 3rd Arg // [esp + 0x14] = 4th Arg _asm { push eax // alles was oben steht, verschiebt sich um 4 Bytes mov eax, [esp + 0x0C] mov moSocket, eax mov eax, [esp + 0x10] mov msBuffer, eax mov eax, [esp + 0x14] mov miLength, eax mov eax, [esp + 0x18] mov miFlags, eax pop eax pushad // die alten registerzustände speichern } hkRecv((SOCKET)moSocket, (char*)msBuffer, (int)miLength, (int)miFlags); // funktion ausführen _asm { popad // die original-registerzustände wiederherstellen jmp Jumpback // zur trampolinfunktion springen } }
Sooo, nun habe ich ein paar Code-zeilen die an sich die eigentliche Funktion des Botes ausfuehren sollen zum Beispiel
case 0x3e: DWORD target = *(DWORD*)&Buffer[7]; DWORD attacker = *(DWORD*)&Buffer[3];
case 0x32: PlayerID = *(DWORD*)&Buffer[3];
if(PlayerID == 0)
SendPacket(0x0D,"bbd",18,1,attacker);
Mein Problem ist, dass ich nicht verstehe wie ich diese Codes jetzt in die Recv schreiben soll, da ich mich mit (Syntax etc.) nicht auskenne.
Koenntet ihr mir erklaeren wo und wie diese codes jetzt korrekt eingetragen werden muessen ?// Es handelt sich hier um einen Bot, der automatisch ein Monster angreifen soll. 0xe3 steht hier fuer das packet was vom server versand wird wenn ein monster angegriffen wird.
-
Beziehungsweise -
Wie trage ich die 4 oben angefuehrten Codes hier
void __stdcall hkRecv(SOCKET sSocket, char *Buffer, int length, int flags) { // code return; // weitermachen kann hier nicht unterbunden werden, sonst wird der stack zerstört } Wie trage ich diese Codes hier sinvoll ein
ein ? Also da wo //code steht.
mfg
-
Um welches Spiel geht es ?
-
Exces schrieb:
Beziehungsweise -
Wie trage ich die 4 oben angefuehrten Codes hier [...] ein ? Also da wo //code steht.
Mit einem Editor? Versteh nicht so ganz was dein Problem ist - kann auch an der Frage liegen (siehe dazu auch Link in meiner Signatur)
Sorry, aber das sieht nach wild zusammenkopiertem Zeugs aus. Wenn du programmieren lernen willst, solltest du mit einem guten Buch anfangen.
-
Das Spiel heisst Kal Online, ich will ja eigentlich noch garnicht programmieren lernen. Ich wuerde nur gerne den Bot zum laufen bringen und bitte euch deswegen um eure Hilfe. Kriege das aufgrund meiner mangelnden kenntnisse ja leider nicht hin .
Es geht einfach darum das hier eine Detour/Hook geschrieben wuerde, die mit einem Jump eine Hackshield umgehen soll, damit der Bot funktioniet. In dieser Detour steht das eigentliche jedoch noch nicht drinn. (Also der Bot) Die Source von dem Bot habe ich ja gegeben, diese kann ich ja logischer weise aber nicht einfach in die Detour einfuegen, da ich ja nicht einfach mit "case" etc. anfangen kann, mir fehlen also die Kenntnisse zu Schaltern,Syntax etc.Waere Nett wenn ihr mir helfen koenntet, fuer Leute die sich damit auskennen sollte das ziemlich simpel sein.
Ich bedanke mich schonmal fuers zuhoeren
-
Exces schrieb:
ich will ja eigentlich noch garnicht programmieren lernen. Ich wuerde nur gerne den Bot zum laufen bringen
Dann bist du hier an der falschen Adresse. Hier im Forum gehts darum, programmieren (mit C++) zu lernen bzw. den Leuten, die programmieren bei auftretenden Problemem zu helfen. Für Auftragsarbeiten gibts ein extra-Forum, allerdings musst du damit rechnen, für die Arbeit auch was zu zahlen. Scriptkiddies und Möchtegern-"haxx0r" sind hier per se nicht gern gesehen. Wenn du jemanden suchst, der dir deinen Spielehack schreibt musst du wohl in ein Forum, wo es um Spiele-Hacks geht. Das ist hier einfach nicht die Zielgruppe des Forums. Das ist eher für die Leute, die was lernen wollen.
-
Jop,
biete 15 Euro fuer die Fertigstellung des Botes, bitte bei Interesse melden
-
Exces schrieb:
biete 15 Euro fuer die Fertigstellung des Botes, bitte bei Interesse melden
ROFL
-
Vielleicht sieht sich ja jemand dein Problem mal an, wenn du eine Null anhaengst.
-
Exces schrieb:
Ich habe mit einem Freund zusammen grade eine Detour in c++ geschrieben. Diese sieht so wie folgend aus.
Exces schrieb:
as Spiel heisst Kal Online, ich will ja eigentlich noch garnicht programmieren lernen.
Exces schrieb:
biete 15 Euro fuer die Fertigstellung des Botes, bitte bei Interesse melden
jetzt rofelts mich doch glatt durch die Firma.
Also für 50 € würde ich für euch nach einem fertigen Bot googeln.Hier kannst du alles zu recv erfahren:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspxHast du eigentlich schon nach einem fertige Compilierten Bot gesucht?
www.elitepvpers.de/forum
Schau mal ob du da fündig wirst.
-
Überteibt mal wieder nicht so maßlos
-
Suchen bringt dir da nicht viel Es gibt keine Bots mehr fuer den internationalen Server.
Ich komme von Epvp, Bots koennen nurnoch mit dem richtigen know-how geschrieben werden und das know-how war hier die Bytes um +5 zu verschieben, weil das hackshield nur die ersten parameter scannt.
Des weiteren sind das nur 4 Codes die eingetragen werden muessen und ich glaube NICHT das man dafuer 150 Euro verlangen kann. Das ist fuer Erfahrene Coder ein kinderspiel.
-
Exces schrieb:
Des weiteren sind das nur 4 Codes die eingetragen werden muessen und ich glaube NICHT das man dafuer 150 Euro verlangen kann. Das ist fuer Erfahrene Coder ein kinderspiel.
Willst du, dass ein Schüler deinen Rasen mäht oder ein Programmierer mit jahrelanger Erfahrung ein paar Stunden fachlich für dich arbeitet?
Ich könnte mir vorstellen, dass sich, wenn du ganz viel Glück hast, vielleicht ab 50 Euro ein armer Student erbarmt, falls er schon Ahnung vom Thema haben sollte. Aber für 15 Euro schreiben die meisten Leute nicht einmal eine Email. Geschweige denn wird sich jemand in das Thema eindenken, das Problem nachvollziehen, mit dir Kontakt aufnehmen und ein Geschäft abwickeln. Einzelauftragsarbeiten sind nun einmal teuer. So etwas ist man gar nicht gewöhnt in Zeiten der Massenproduktion. Du willst, dass ein Mensch mehrere Stunden seines Lebens nur für dich investiert, nicht dass ein Mensch mehrere Stunden seines Leben in ein Produkt investiert, dass er noch an eine Million andere Leute verkaufen kann.
-
Ich habe ja nicht nach einer Instruktion gesucht, mit wieviel geld ich einen Programmierer bezahlen sollte ?
von daher.. mfg
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Projekte verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
was soll das ??
-
Exces schrieb:
was soll das ??
Was? Verschiebung? Dies ist das Unterforum, wenn du Geld für die Lösung einer Aufgabe anbietest (oder um die Lösung bettelst). Eine Fachfrage zu C++ hast du schließlich nicht.
Hier lesen dein Angebot die richtigen Leute, im anderen Forum werden bloß Witze über die Höhe des Angebotes gerissen (naja, hier wahrscheinlich auch), wie du vielleicht gemerkt hast.
-
Exces schrieb:
Des weiteren sind das nur 4 Codes die eingetragen werden muessen und ich glaube NICHT das man dafuer 150 Euro verlangen kann.
Na wenn das so simpel ist, dann mach das doch eben. Oder bring dir schnell bei, wie man das macht, scheint ja nicht schwer zu sein...
Das ist fuer Erfahrene Coder ein kinderspiel.
"Erfahrene Coder" machen auch für Kinderspiele unter einem bestimmten Stundensatz keinen Finger krumm...
-
Es sind mehr als diese 4 Zeilen weil der Bot ja noch nicht fertig gecoded ist du hast nur ein paar Zeilen, und der Code an sich Funktioniert auch nicht so.
Hackshield checkt soweit ich das gelesen hatte von meak die ersten 5 Bytes also musst du gucken ob du nach den ersten 5 Bytes einfach einen Hook setzen kannst, oder irgendwo anders.
Dir fehlt auch noch die SendDetour bzw die Send Funktion allgemein.
Die ist aber auch Public auf ePvP in der KalOnline Section.