View
previous topic :: View
next topic |
Author |
Message |
Zero_G Moderator
Joined: 20
May 2004 Posts: 1084 Location: The Dark Side of the
Moon
|
Posted: Mon Oct 17, 2005
11:43 pm Post
subject: |
|
|
|
il primo JNZ della funzione
è quello a 0042975C che va a 004297B0 (a cui ho messo la label
"EXIT"); se vuoi andare subito alla chiusura della funzione lo
devi trasformare in JMP, così il salto da condizionato diventa
incondizionato.
-=[Zero_G]=- _________________ "To see a World in a grain of Sand,
Hold Infinity in palm of your Hand." | |
Back
to top |
|
|
koala223223 Newbie
Joined: 08
Oct 2004 Posts: 37
|
Posted: Tue Oct 18, 2005
4:07 pm Post subject:
|
|
|
|
Zero_G wrote: |
... se metti un breakpoint
sulle varie API per accedere ai file (CreateFile,
OpenFile, ReadFile, ecc...) ti dovrai districare in una
serie di chiamate che il sistema cmq fa all'avvio di un
programma (cache, profilo personale, ...), ma nonostante
questo lo trovi abbastanza bene il punto in cui viene
ricontrollato il seriale (è a 00429B4B) e una volta
arrivato lì ti accorgerai che il programmatore è stato
pigro perché ha usato la stessa funzione chiamata dalla
maschera di registrazione (infatti accetta solo un
parametro e restituisce 1 o 0)!
|
Ok
ho provato con Apimonitor e Filemonitor ma con questi
programmi non sono riuscito ad arrivare a 00429B4B... cioè
vedo che il file è aperto,letto e chiuso ma nessuna
informazione in merito agli offset! ... dove sbaglio?
Devo mettere "decinaia" di bp su _lopen
fopen etc etc all'interno di olly?
Scusa e scusate
tutte queste domande ma preferirei imparare (nei limiti del
possibile) piuttosto che far finta di aver capito! | |
Back
to top |
|
|
Zero_G Moderator
Joined: 20
May 2004 Posts: 1084 Location: The Dark Side of the
Moon
|
Posted: Wed Oct 19, 2005
7:41 am Post subject:
|
|
|
|
koala223223
wrote: |
Scusa e scusate tutte queste domande ma
preferirei imparare (nei limiti del possibile) piuttosto
che far finta di aver capito! | no, tranquillo, questo forum è fatto
apposta per imparare.
cmq sono
io che mi sono spiegato male, pardon: in genere si cerca di
provare prima gli approcci più immediati, poi quelli meno
diretti ed in questo caso era ragionevole ipotizzare che la
stessa funzione venisse usata sia quando valida il seriale
dopo l'immissione, sia quando lo rilegge da file, quindi
semplicemente bastava lasciare il breakpoint alla prima
istruzione (00429720) e vedevi subito che ci ripassava al
riavvio del programma.
se
vuoi provare in ogni caso ad intercettare l'effettiva chiamata
all'API di lettura è sufficiente che dall'elenco dei moduli
(la 'E' in alto) tu selezioni KERNEL32.DLL e poi con il destro
"View Names": dall'elenco scorri fino a "OpenFile" e metti un
breakpoint sull'export (F2); quando riavvii, vedrai che Olly
si ferma proprio alla prima istruzione di questa funzione
nella DLL ed in basso a destra nello Stack vedrai questo:
Code: |
0012E390 / CALL to OpenFile from
pdf2rtf.00429AEC <== importante! 0012E394 |
FileName = "C:\\WINDOWS\\system32\\pdf2word.DAT"
0012E398 | pOfstruct = 0012E4B0
0012E39C \ Mode =
OF_READ|OF_SHARE_COMPAT|OF_EXIST | e quindi vedi bene che la chiamata arriva
da 00429AEC.
-=[Zero_G]=- _________________ "To see a World in a grain of Sand,
Hold Infinity in palm of your Hand."
Last edited by Zero_G on Fri Oct 21,
2005 12:39 am; edited 2 times in
total | |
Back
to top |
|
|
koala223223 Newbie
Joined: 08
Oct 2004 Posts: 37
|
Posted: Thu Oct 20, 2005
7:36 pm Post subject:
|
|
|
|
Alleluia! (leggasi alla the
worm) BOOOOOM!
Questi sono i colpi di R3volv3r che mi
piacciono!!!
Grazie Zero come al solito un Mito!
(Ora ho capito e sono già passato ad un programmi più
carino packato con UPX)
P.S. Vorrei suggerirti un
tool, appena posso ti dico tutto ...
Ciao e grazie a
te ed a tutti quelli che hanno risposto ed hanno aiutato!
C U | |
Back
to top |
|
|
|