Detour Problem

03/17/2012 07:38 Crack-wtf#1
Hey leute ich habe ein Problem mit einem Geplanten Detour.

Hier der Source teil.

Code:
		push ebp;
		mov [ebp+0x4],SentryGunTimeAddy1
		mov [ebp+0x8],SentryGunTimeAddy2
		mov [ebp+0xC],SentryGunTimeAddy3
		mov [ebp+0x10],SentryGunTimeAddy4
		mov [ebp+0x14],SentryGunTimeAddy5
		mov ebp,esp
		sub esp,0x2C
		jmp SentryGunTimeRetn
Das Problem dabei ist, dass er anstatt:
Code:
mov [ebp+0x4],0xmeineaddresse
Das macht...
Code:
mov [ebp+0x4],00
Das zerstört mein ganzes vorhaben -.-
Ich möchte nämlich 5 Parameter changen.
03/17/2012 08:14 theredvex#2
versuch es mal vor dem ASM code.
5 DWORDs zu erstellen mit den jeweiligen Addys und ersetze damit das "0xmeineaddresse"
03/17/2012 08:15 Omdi#3
Quote:
Originally Posted by Crack-wtf View Post
Hey leute ich habe ein Problem mit einem Geplanten Detour.

Hier der Source teil.

Code:
		push ebp;
		mov [ebp+0x4],SentryGunTimeAddy1
		mov [ebp+0x8],SentryGunTimeAddy2
		mov [ebp+0xC],SentryGunTimeAddy3
		mov [ebp+0x10],SentryGunTimeAddy4
		mov [ebp+0x14],SentryGunTimeAddy5
		mov ebp,esp
		sub esp,0x2C
		jmp SentryGunTimeRetn
Das Problem dabei ist, dass er anstatt:
Code:
mov [ebp+0x4],0xmeineaddresse
Das macht...
Code:
mov [ebp+0x4],00
Das zerstört mein ganzes vorhaben -.-
Ich möchte nämlich 5 Parameter changen.
Sicher, dass deine Addresse nicht 0 ist?
Poste mal den C/C++ Code .
Edit : Müsste das nicht so lauten?
PHP Code:
        push ebp;
        
mov [ebp+0x4],[SentryGunTimeAddy1]
        
mov [ebp+0x8],[SentryGunTimeAddy2]
        
mov [ebp+0xC],[SentryGunTimeAddy3]
        
mov [ebp+0x10],[SentryGunTimeAddy4]
        
mov [ebp+0x14],[SentryGunTimeAddy5]
        
mov ebp,esp
        sub esp
,0x2C
        jmp SentryGunTimeRetn 
Quote:
versuch es mal vor dem ASM code.
5 DWORDs zu erstellen mit den jeweiligen Addys und ersetze damit das "0xmeineaddresse"
hat er doch ;O
03/17/2012 15:39 Crack-wtf#4
Quote:
Originally Posted by Omdihar View Post
Sicher, dass deine Addresse nicht 0 ist?
Poste mal den C/C++ Code .
Edit : Müsste das nicht so lauten?
PHP Code:
        push ebp;
        
mov [ebp+0x4],[SentryGunTimeAddy1]
        
mov [ebp+0x8],[SentryGunTimeAddy2]
        
mov [ebp+0xC],[SentryGunTimeAddy3]
        
mov [ebp+0x10],[SentryGunTimeAddy4]
        
mov [ebp+0x14],[SentryGunTimeAddy5]
        
mov ebp,esp
        sub esp
,0x2C
        jmp SentryGunTimeRetn 
hat er doch ;O
Jo hab ich.

Aber wieso sollte es in eckklammern kommen?
Die werden doch nur benutzt, wenn man was addiert/subtrahiert/berechnet oder nicht?
03/17/2012 15:55 MrSm!th#5
Ihr liegt beide falsch, die Eckklammern zeigen einen Adresszugriff an, sprich man dereferenziert einen Pointer (zu dem man natürlich Offsets addieren kann).

Aber Omdihar meinte vermutlich das richtige:

Bist du sicher, dass du die ADRESSEN in die Parameter schreiben willst (sind es Pointer?) und nicht die WERTE an diesen Adressen?
Ich denke, du willst die Adressen eigentlich dereferenzieren.

Allerdings sind 2 Speicherzugriffe in einer Instruction nicht erlaubt, d.h. du brauchst ein Register zum Zwischensprichern:

Code:
mov eax, dword ptr [addr]
mov [ebp+4], eax
Und nun die Preisfrage:

Was soll das inline ASM? Wofür gibts Detours Libs? oO
03/17/2012 17:10 Crack-wtf#6
Hach schade wäre zu schön um wahr zu sein :rolleyes:
Anscheinend kann man die Parameter nicht ohne weiteres changen.
03/17/2012 17:36 Omdi#7
Quote:
Originally Posted by Crack-wtf View Post
Hach schade wäre zu schön um wahr zu sein :rolleyes:
Anscheinend kann man die Parameter nicht ohne weiteres changen.
Doch, natürlich.
Mit Detours funktioniert das wunderbar ;O
03/17/2012 17:47 MrSm!th#8
Selbst mit inline ASM, wobei Detours angenehmer sind.

Ich hab dir nen fertigen Detour auch per PM gesendet.