ASM Prozeduraufruf finden

Hallo,
werde wegen meinem Problem bald verrückt. Ich habe eine Funktion, deren Aufruf ich verhindern will. Um das zu tun würde ich normalerweise den ersten Befehl der Funktion in OllyDbg makieren und die Referenzen über "Find references -> to selected command" suchen. Diese Menüoption ist hier aber nicht verfügbar. Was kann ich noch tun?

Funktion:
Code:
02D00506 - B8 A8EAFE18                - mov eax,18FEEAA8 : [00000001]
02D0050B - E8 E308C5FF                - call 02950DF3
02D00510 - 8B 4C 24 30                - mov ecx,[esp+30]
02D00514 - C7 81 04020000 00000000    - mov [ecx+00000204],00000000
02D0051E - 8B F1                      - mov esi,ecx
02D00520 - C1 EE 09                   - shr esi,09
02D00523 - C6 86 00FB8904 00          - mov byte ptr [esi+0489FB00],00
02D0052A - C7 81 64010000 00000000    - mov [ecx+00000164],00000000
02D00534 - 8B F1                      - mov esi,ecx
02D00536 - C1 EE 09                   - shr esi,09
02D00539 - C6 86 00FB8904 00          - mov byte ptr [esi+0489FB00],00
02D00540 - 8B B1 60010000             - mov esi,[ecx+00000160]
02D00546 - 8D 7E 18                   - lea edi,[esi+18]
02D00549 - 81 7E 08 03000000          - cmp [esi+08],00000003
02D00550 - 0F86 1B010000              - jbe 02D00671
02D00556 - C7 07 00000000             - mov [edi],00000000
02D0055C - C1 EF 09                   - shr edi,09
02D0055F - C6 87 00FB8904 00          - mov byte ptr [edi+0489FB00],00
02D00566 - 8B 89 68010000             - mov ecx,[ecx+00000168]
02D0056C - 83 F9 00                   - cmp ecx,00
02D0056F - 0F84 2F000000              - je 02D005A4
02D00575 - 90                         - nop 
02D00576 - B8 B8EAFE18                - mov eax,18FEEAB8 : [00000001]
02D0057B - E8 66C4C4FF                - call 0294C9E6
02D00580 - 0FBE 48 10                 - movsx ecx,byte ptr [eax+10]
02D00584 - 83 F9 00                   - cmp ecx,00
02D00587 - 0F85 17000000              - jne 02D005A4
02D0058D - C6 40 10 01                - mov byte ptr [eax+10],01
02D00591 - C7 40 0C 00000000          - mov [eax+0C],00000000
02D00598 - 8B C8                      - mov ecx,eax
02D0059A - B8 FFFFFFFF                - mov eax,FFFFFFFF
02D0059F - E8 ECCBC4FF                - call 0294D190
02D005A4 - 8B E5                      - mov esp,ebp
02D005A6 - 5D                         - pop ebp
02D005A7 - 85 05 00011500             - test [00150100],eax
02D005AD - C3                         - ret 
02D005AE - E8 9DF4C8FF                - call 0298FA50
02D005B3 - E8 98F4C8FF                - call 0298FA50
02D005B8 - 89 34 24                   - mov [esp+esp],esi
02D005BB - E8 90F1C8FF                - call 0298F750
02D005C0 - E8 8BF4C8FF                - call 0298FA50
02D005C5 - E8 86F4C8FF                - call 0298FA50
02D005CA - E8 81F4C8FF                - call 0298FA50
02D005CF - E8 7CF4C8FF                - call 0298FA50
02D005D4 - E8 77F4C8FF                - call 0298FA50
02D005D9 - E8 72F4C8FF                - call 0298FA50
02D005DE - C7 04 24  00000000         - mov [esp+esp],00000000
02D005E5 - E8 66F1C8FF                - call 0298F750
02D005EA - E8 61F4C8FF                - call 0298FA50
02D005EF - E8 5CF4C8FF                - call 0298FA50
02D005F4 - 8B D2                      - mov edx,edx
02D005F6 - E8 C5FAC8FF                - call 029900C0
02D005FB - E9 BDFCFFFF                - jmp 02D002BD
02D00600 - E8 4BF4C8FF                - call 0298FA50
02D00605 - E8 46F4C8FF                - call 0298FA50
02D0060A - E8 41F4C8FF                - call 0298FA50
02D0060F - C7 04 24  01000000         - mov [esp+esp],00000001
02D00616 - E8 35F1C8FF                - call 0298F750
02D0061B - E8 30F4C8FF                - call 0298FA50
02D00620 - E8 2BF4C8FF                - call 0298FA50
02D00625 - 8B D2                      - mov edx,edx
02D00627 - E8 94FAC8FF                - call 029900C0
02D0062C - E9 6CFDFFFF                - jmp 02D0039D
02D00631 - E8 1AF4C8FF                - call 0298FA50
02D00636 - E8 15F4C8FF                - call 0298FA50
02D0063B - E8 10F4C8FF                - call 0298FA50
02D00640 - 8B D2                      - mov edx,edx
02D00642 - E8 79FAC8FF                - call 029900C0
02D00647 - E9 26FEFFFF                - jmp 02D00472
02D0064C - E8 FFF3C8FF                - call 0298FA50
02D00651 - E8 FAF3C8FF                - call 0298FA50
02D00656 - E8 F5F3C8FF                - call 0298FA50
02D0065B - C7 04 24  03000000         - mov [esp+esp],00000003
02D00662 - E8 E9F0C8FF                - call 0298F750
02D00667 - E8 E4F3C8FF                - call 0298FA50
02D0066C - E8 DFF3C8FF                - call 0298FA50
02D00671 - C7 04 24  03000000         - mov [esp+esp],00000003
02D00678 - E8 D3F0C8FF                - call 0298F750
02D0067D - E8 CEF3C8FF                - call 0298FA50
02D00682 - 90                         - nop
Viele Grüße
Littleben
 
Auch auf die Gefahr hin dich völlig missverstanden zu haben:

Einfach die Funktion durchtracen, bis du beim ersten Befehl nach der Funktion angelangt bist?

//edit: Alternativ siehst du bei dem 1. Befehl einer Funktion im Fenster unter dem Disassembler-Window "Local calls from ...." ->Falls von versch. Stellen die Funktion aufgerufen wird.
 
Zuletzt bearbeitet:
Ah, okay vielen Dank!
Noch eine ganz doofe frage nebenbei: Wenn ich mich mitten in einer Funktion befinde, wie bekomme ich dann raus, wo Anfang und wo Ende der Funktion ist?
 
Wenn ich mich mitten in einer Funktion befinde, wie bekomme ich dann raus, wo Anfang und wo Ende der Funktion ist?
STRG+F9 (execute till return). Hält beim Verlassen der Funktion. Mit dem "schwarzen Balken" ist wohl die Analysehilfe gemeint. Mit etwas Glück erscheint diese nach "STRG+A" (oder Rechtsklick -> reanalyse oder so ähnlich).

Ansonsten: Olly kann nur statische Referenzen finden. Wird die Prozedur dynamisch aufgerufen (z.B MOV eax,BLUB_STRCT+4;CALL EAX) bleibt einem nichts anderes übrig, als einen Breakpoint auf den Funktionsanfang zu setzen und jeweils die Rücksprungadresse aus dem Stack abzulesen. Alternativ gibt es konditionale Breakpoints (Rechtsklick -> Breakpoint -> Conditional log, condition = nix, Expression = [ESP] und "log always", alternativ natürlich kombinierbar).
 
Zurück
Oben