2017-07-25 4 views
0

Utilisation de l'IDA Pro pour analyser un fichier, j'ai couru à travers un code que je ne comprends pas tout à fait:Qu'est-ce que ce code implique: ss: dword_410CC5 [ebp]?

mov eax, ss:dword_410CC5[ebp] ; 
call eax; Indirect Call Near Proc 

Aller à cette adresse - 410CC5 - Je vois ceci:

ile.........Clos 
eHandle......... 

I suppose que dans le premier extrait de code dans EAX le nom de la fonction bibliothèque est stockée, qui est ensuite appelé par

call eax; Indirect Call Near Proc 

Mais le problème est le 410CC5 d'adresse n'a pas entièrement correspondent à ce nom (voir pièce jointe). À cette adresse sont en fait juste des zéros.

Est-ce que cela signifie de toute façon que, à

call eax; Indirect Call Near Proc 

nous appelons CloseHandle? Si oui, pourquoi la bonne adresse n'est-elle pas transmise à EAX?

Code snippet

+5

'dword_410CC5 [ebp]' n'est pas l'adresse absolue '410CC5', la valeur de' ebp' devrait être ajoutée. C'est juste une syntaxe idiote pour '[ebp + 410CC5]'. De plus, 'call eax' n'invoquera pas une fonction par son nom. – Jester

+1

Sûrement, dans cette première ligne de code, il manque une instruction 'MOV'? –

+0

Oui, désolé à ce sujet. – ShHolmes

Répondre

1

Lorsqu'une instruction call apparaît dans le démontage, cela signifie qu'une autre routine/fonction est appelée à ce moment-là.

Si la routine a une adresse absolue, l'instruction apparaîtra comme call 0xaabbccdd.

Si l'adresse de la fonction appelée est une adresse dynamique (ce type d'adresse est résolu lorsque le système d'exploitation charge l'exécutable), elle est appelée via une valeur inscrite. Cependant, cette instruction est utilisée pour appeler une routine, c'est tout.