Assembler-Prozedur ohne Aufruf?

Hi,

habe ein Programm im OllyDbg...
Eine bestimmte Prozedur wurde durch Breakpoint gefunden und wird auch erfolgreich unterbrochen...

Das Problem... in OllyDbg scheint die Prozedur keine Referenz zu besitzen...
Sie wird von keinem local-call aufgerufen und alle anderen übergeordneten Prozeduren enden mit RETN.

Wann und von welcher Prozedur / Zeile wird diese Prozedur aufgerufen?

Goofie
 
naja kann eig end sein, guck mal ob
A)wirklich keiner da ist
B)das prog nicht da nen bug hat
 
hab folgendes gefunden ein wenig höher im Assembler-Code

DD xxxxx

für xxxxx die Adresse der ersten Zeile der gefragten Prozedur...
was heißt das?
 
Das ist z.B durch indirekte Adressierung möglich
wie
MOV EAX, offset Basis;
add EAX, 0123
CALL EAX

hab folgendes gefunden ein wenig höher im Assembler-Code

DD xxxxx
(oder in diesem Fall eher):
MOV EAX, BASIS
CALL [EAX+Wert]

Soweit/so "intelligent" kann Olly es auch nicht auflösen und zeigt daher keine Referenz an.

Ich Tippe auf Delphi/Borlands C++ Builder (zumindest ist diese Konstruktion bei Borland beliebt).
Was es konkret heißt, kann man nur im Kontext sehen, aber ein Beispiel wäre eine Klassenumsetzung aus OOP (Basisadresse ist Klassenanfang und Variablen bzw. verfügbare Methoden werden "relativ" angesprochen).

Platziere einen BP auf RETN der Prozedur und schau manuell nach, wohin immer zurückgesprungen wird. Alternativ dazu gibt es Logfunktionen, wobei man bei einem BP bestimmte Registerwerte loggen kann (hab im Moment keinen Olly, um es genauer anzuschauen).
 
Zurück
Oben