|
|
|
|
Strumenti |
02-07-2014, 15:57 | #21 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
codice originale
-> jump al mio (parte di codice originale cancellato) pushad mio codice popad la parte del codice originale che è andato perso per fare il jump l'ho messo qui -> jump al codice originale codice originale <- qui fa errore credo ci sia un problema con i registri: quello in giallo è quando fa il jump originale->miocodice quello sotto è da miocodice->originale usando pushad e popad non dovrebbero essere uguali quando entra e quando esce? Edit: Così tutto ok: Codice:
push 0x00 push 0xFF push ebp call RtlFillMemory push 0x40 push 0xFe push ebp call RtlFillMemory push 0x41 push 0x30 push ebp call RtlFillMemory push 0x42 push 0x20 push ebp call RtlFillMemory jmp @Test questo da buffer overrun... anche cambiando 0xff con meno Codice:
push 0x3 push @TestYes push 0xff push ebp call memcpy_s test eax, eax ; test if eax=0 jnz @No ; Zero if successful; an error code on failure. jmp @Test Ultima modifica di Q_Q : 02-07-2014 alle 17:00. |
02-07-2014, 17:50 | #22 | |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Quote:
Controlla che tutte le call siano corrette, se non riesci a risolvere vedo di approfondire. |
|
02-07-2014, 19:28 | #23 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
Codice:
memcpy_s( void *dest, size_t numberOfElements, const void *src, size_t count ); push 0x3 push @TestYes push 0xff push ebx call memcpy_s test eax, eax ; test if eax=0 jnz @No ; Zero if successful; an error code on failure. jmp @Test msvcrt.memcpy_s -> INT 3 ntdll.memcpy_s -> INT 3 senza non crasha |
02-07-2014, 20:09 | #24 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Mi sembra abbastanza strano, potresti provare con CopyMemory invece di memcpy_s? Assicurati anche con il debugger che ebp contenga sempre l'indirizzo restituito da HeapAlloc.
|
02-07-2014, 20:34 | #25 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
CopyMemory is defined in ntdll.dll as RtlCopyMemory. It points to the same function as RtlMoveMemory..
mIrc non importa CopyMemory ma c'è RtlMoveMemory da kernel32 quindi ho usato quello... Crasha dando previleged instruction. Usando call ntdll.RtlMoveMemory invece funziona tutto senza crash Alcuni registri cambiano a caso quando chiamo fillmemory ma quelli con il puntatore no quindi non è quello Ho modificato così pastebin ora funziona tutto Comunque non capisco perchè va solo ntdll.RtlMoveMemory, che può essere |
03-07-2014, 08:12 | #26 | ||
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Quote:
Quote:
add esp, 16 |
||
03-07-2014, 09:27 | #27 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
Crasha
Codice:
push 0x3 push @TestYes push 0xff push edx call ntdll.memcpy_s add esp, 16 test eax, eax ; test if eax=0 jnz @No ; Zero if successful; an error code on failure. jmp @Test . . . @Fine2: pop ecx ; recupero push ebx push 0 push ecx call RtlFreeHeap <- crash test eax, eax ; test if eax=0 jnz @Fine ; If the function succeeds, the return value is nonzero. jmp @No Codice:
push 0x3 push @TestYes push 0xff push edx call ntdll.memcpy_s ;------------ test eax, eax ; test if eax=0 jnz @No ; Zero if successful; an error code on failure. jmp @Test . . . @Fine2: pop ecx ; recupero pop ecx ; recupero pop ecx ; recupero pop ecx ; recupero pop ecx ; recupero push ebx push 0 push ecx call RtlFreeHeap <-- no crash test eax, eax ; test if eax=0 jnz @Fine ; If the function succeeds, the return value is nonzero. jmp @No |
03-07-2014, 09:29 | #28 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Anche se metti i 4 pop dopo la call?
|
03-07-2014, 09:53 | #29 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
Codice:
push 0x3 push @TestYes push 0xff push edx call ntdll.memcpy_s pop ecx pop ecx pop ecx pop ecx Non crasha... con add esp, 16 crasha dando DATATYPE_MISALIGNEMENT edit: ahhhhhhhhhhhhhhhhh san gennaro add esp, 16 -> lo vede come 0x16 messo 10 ora va in pratica il problema era cdecl invece di stdcall ? Ultima modifica di Q_Q : 03-07-2014 alle 10:08. |
03-07-2014, 11:29 | #30 | ||
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Quote:
Quote:
|
||
03-07-2014, 13:01 | #31 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
Eccoti 5000 internet per l'aiuto Comincia a piacermi l'asm, ora mi cerco qualche guida da 0 |
03-07-2014, 13:13 | #32 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Grazie, sei molto gentile, sto provando a prenderla ma è rimaso uno strano segno circolare color arcobaleno sul monitor
|
03-07-2014, 13:15 | #33 |
Member
Iscritto dal: Jan 2008
Messaggi: 103
|
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:37.