|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2005
Messaggi: 252
|
dll, funzioni e argomenti
ciao a tutti,
ho un file dll di cui conosco i nomi delle funzioni contenute in esso, come posso scoprire quanti argomenti bisogna passare ad ogni funzione e di che tipo di argomenti si tratta? grazie! |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
se non hai l'header i tipi degli argomenti non li puoi scoprire e il numero di argomenti lo puoi scoprire solo con un minimo di disassemblaggio.
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2005
Messaggi: 252
|
disassemblaggio?
mi spiegheresti come fare? |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Per dirla in altro modo: un disassemblatore legge i codici binari presenti in un eseguibile ed è in grado di tirare fuori un listato, più o meno completo, in linguaggio assembly. A quel punto però bisogna conoscere, e molto bene, il linguaggio assembly del processore per poter capire che cosa fa il programma.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
dimenticavo: è possibile conoscere il numero di parametri solo se la convenzione di chiamata è __stdcall (bisogna analizzare le operazioni effettuate su ESP, solitamente basta vedere il valore accanto al RET finale e dividerlo per 4); se invece è __cdecl allora non è possibile - serve per forza l'header.
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
si ok lo so, quella DLL funziona anche se faccio finta che non ci siano |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Apr 2005
Messaggi: 252
|
usando un deassembler ho visto tutti i parametri delle funzioni. il numero credo sia giusto...ma tutti i parametri sono dword e questo un po mi puzza...
qui ho messo un immagine di ciò che vedo: http://www.geocities.com/bagbyte/funzioni.jpg che ne pensate? altre idee? PS: non ho capito nulla a proposito del RET, ESP e [EBP+nn], mi potreste spiegare? non capisco nulla di assembly. grazie mille |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ti dice sempre DWORD perché, come ti dicevamo, non è possibile determinare il tipo dei parametri.
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Apr 2005
Messaggi: 252
|
e quella cosa della divisione per 4? di che si tratta?
|
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
l'istruzione RET n fa sostanzialmente le seguenti cose: estrae dallo stack un puntatore, sposta l'esecuzione all'indirizzo da esso espresso, ed infine aggiunge n bytes ad ESP (cioè toglie n bytes dallo stack). ora conoscendo n come facciamo a sapere il numero di parametri della funzione, sapendo che solitamente i compilatori usano RET n per fare il cleanup?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:44.



















