Ich versuche jetzt schon seid ein paar stunden einen hook zum laufen zu bekommen. Leider crasht das programm direkt wenn es dort ankommt.
hier der assembler code:
Code:
.code:0052CD87 loc_52CD87: ; CODE XREF: sub_52CD70+10j
.code:0052CD87 mov ecx, [ebp+var_10]
.code:0052CD8A mov edx, [ecx+4]
.code:0052CD8D mov [ebp+len], edx
.code:0052CD90 mov eax, [ebp+var_10]
.code:0052CD93 mov ecx, [eax+5F54h]
.code:0052CD99 mov [ebp+var_C], ecx
.code:0052CD9C push 0 ; flags
.code:0052CD9E mov edx, [ebp+len]
.code:0052CDA1 push edx ; len
.code:0052CDA2 mov eax, [ebp+var_10]
.code:0052CDA5 add eax, 8 ; Add
.code:0052CDA8 push eax ; buf
.code:0052CDA9 mov ecx, [ebp+var_C]
.code:0052CDAC mov edx, [ecx+4]
.code:0052CDAF push edx ; s
.code:0052CDB0 mov ecx, [ebp+var_C]
.code:0052CDB3 call sub_52F0C0 ; Call Procedure
.code:0052CDB8 mov [ebp+Size], eax
.code:0052CDBB cmp [ebp+Size], 0FFFFFFFFh ; Compare Two Operands
.code:0052CDBF jnz short loc_52CDDA ; Jump if Not Zero (ZF=0)
.code:0052CDC1 call dword ptr byte_6920D0+0C8h ; Indirect Call Near Procedure
.code:0052CDC7 cmp eax, 2733h ; Compare Two Operands
.code:0052CDCC jnz short loc_52CDD0 ; Jump if Not Zero (ZF=0)
.code:0052CDCE jmp short loc_52CE0A ; Jump
Die andere function wo der stack ist den ich haben möchte
Code:
.code:0052F0C0 ; int __stdcall sub_52F0C0(SOCKET s, char *buf, int len, int flags)
.code:0052F0C0 sub_52F0C0 proc near ; CODE XREF: sub_52CC80+6Dp
.code:0052F0C0 ; sub_52CD70+43p
.code:0052F0C0
.code:0052F0C0 var_8 = dword ptr -8
.code:0052F0C0 var_4 = dword ptr -4
.code:0052F0C0 s = dword ptr 8
.code:0052F0C0 buf = dword ptr 0Ch
.code:0052F0C0 len = dword ptr 10h
.code:0052F0C0 flags = dword ptr 14h
.code:0052F0C0
.code:0052F0C0 push ebp
.code:0052F0C1 mov ebp, esp
.code:0052F0C3 sub esp, 8 ; Integer Subtraction
.code:0052F0C6 mov [ebp+var_8], ecx
.code:0052F0C9 mov eax, [ebp+flags]
.code:0052F0CC push eax ; flags
.code:0052F0CD mov ecx, [ebp+len]
.code:0052F0D0 push ecx ; len
.code:0052F0D1 mov edx, [ebp+buf]
.code:0052F0D4 push edx ; buf
.code:0052F0D5 mov eax, [ebp+s]
.code:0052F0D8 push eax ; s
.code:0052F0D9 call send ; Indirect Call Near Procedure
.code:0052F0DF mov [ebp+var_4], eax
.code:0052F0E2 cmp [ebp+var_4], 0FFFFFFFFh ; Compare Two Operands
.code:0052F0E6 jnz short loc_52F100 ; Jump if Not Zero (ZF=0)
.code:0052F0E8 mov ecx, 1
.code:0052F0ED test ecx, ecx ; Logical Compare
.code:0052F0EF jz short loc_52F0F3 ; Jump if Zero (ZF=1)
.code:0052F0F1 jmp short loc_52F100 ; Jump
Ich habe mir gedacht ich fange den call von der ersten function ab und versuche dann irgendwie an edx bzw eax zu kommen...
Dieser abschnitt sendet normalerweise die packet von einem Spiel. Ich will jetzt den buf auslesen. Was mich leich irritiert ist das der buf beim ersten mal EAX ist und beim 2. mal EDX.
Ich denke, es wäre ganz hilfreich, wenn du deinen eigenen code auch mal als assemblercode betrachtest, ich habe da so die Vermutung, dass du unbeabsichtigt Register verwendest. Printf hat doch einen Rückgabewert oder ? Ich nehme an, dass du allein schon damit eax veränderst.
Ich denke, es wäre ganz hilfreich, wenn du deinen eigenen code auch mal als assemblercode betrachtest, ich habe da so die Vermutung, dass du unbeabsichtigt Register verwendest. Printf hat doch einen Rückgabewert oder ? Ich nehme an, dass du allein schon damit eax veränderst.
das glaube ich eher nicht ... da ich vorher alle register gepusht habe und danach alle register wieder gepopt habe.
Ich werde mal printf weglassen und gucken was passiert
//edit
auch wenn ich das printf weglasse crasht es immernoch
Ich habe mal so einen noob debug programmiert.
Es crasht erst wenn es an mov buf,EAX kommt.
das glaube ich eher nicht ... da ich vorher alle register gepusht habe und danach alle register wieder gepopt habe.
Ich werde mal printf weglassen und gucken was passiert
//edit
auch wenn ich das printf weglasse crasht es immernoch
Ich habe mal so einen noob debug programmiert.
Es crasht erst wenn es an mov buf,EAX kommt.
Die printf's hben damit nix zu tun
kannst du das ganze mal disassemblen und die entsprechenden Stellen hier posten ?
Ich weiß nicht, ob du dir der Tatsache bewusst bist, dass du da anscheinend calls zu StartZw und EndZw hast. Bei einem Call wird ja die Adresse des nächsten Befehls auf den Stack geschoben, der dann am Ende der Prozedur von ret wieder geholt wird um dahin zu springen.
Wenn du jetzt StartZw aufrufst ist am Ende der Prozedur EDX auf dem Stack und es wird zu der Adresse gesprungen die in EDX enthalten ist.
Das kann ich aber wie gesagt nur mutmaßen, letztendlich kann ich dir einfach nichts genaues sagen, da es davon abhängt wie intelligent dein Compiler ist. Ohne den Maschinencode ist es praktisch unmöglich zu sagen, was genau da jetzt wirklich passiert.
-> der compile wird dein EBP verschieben undzwar um 0x08 .. platz für 2 variablen..
Code:
printf("Packet Sended: n");
-> diese funktion wird das EAX überschrieben ..
Code:
StartZw();
-> Ein aufruf solch einer funktion .. hat nicht gerade viel sin..
-> EBP gespeichert
-> Alle register werden gepusht
-> Alltes EBP wird wiederhergestellt (heißt so viel wie deine gepushten werte sind weg)
-> möglicher weiße wird EAX überschrieben...
Code:
EndZw();
-> selbe wie "StartZw();" ... nur das halt irgendwas gepopt wird .. weil ja dein gepushtes nicht da ist...
Code:
printf("%xn",buf);
-> Hier wird er versucehn dir irgendwas anzuzeigen .. wenn der Stack noch net im arsch ist xD
Code:
__asm jmp backsend;
-> du jumpst dort hin mit falschen werten am stack ..
... ich kann dir kurz un schnell die richtige lösung geben.. aber ich post das mal..
D3D Hook 08/09/2010 - S4 League - 6 Replies Alright, I'm trying to hook EndScene, but xtrap keeps detecting it.
I've tried to hook it using the Virtual Table, -> detected.
I've tried to hook it by just hooking EndScene in d3d9.dll -> detected.
I've seen the other hacks around and it looks to me like they fake the d3d9.dll, use some kind of wrapper, but this is very lame.
Okay second problem, I've been trying to find some values using Search Engine, but it gets detected by xtrap too. Is there any patch / bypass for Xtrap?
I've...
<help> i need the bot sir hook V12 please 02/04/2010 - Conquer Online 2 - 1 Replies hi, the patch now is 5212 and sir hook 10 not work on it sooo i need a sirhook works with the new patch 5212 please please>
Hook for Int 09/28/2009 - Kal Online - 5 Replies Hi..
hatte viel im RL zu tun und wollte mien bot wieder zum laufen bringen... kann mir wer nen tipp geben wie ich mein hook wieder zum laufen bring? haben den hooksource hier ausm forum..
wäre echt super!