Выполнение участка кода

Тема в разделе "WASM.BEGINNERS", создана пользователем maverick, 25 апр 2008.

  1. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    Не судите строго, при дизассемблировании драйвера получился следующий листинг:

    Код (Text):
    1.  ; int __stdcall start(struct _DEVICE_OBJECT DeviceObject)
    2. .text:0001175B                 public start
    3. .text:0001175B start           proc near
    4. .text:0001175B
    5. .text:0001175B DeviceObject    = _DEVICE_OBJECT ptr -4
    6. .text:0001175B
    7. .text:0001175B                 push    ebp
    8. .text:0001175C                 mov     ebp, esp
    9. .text:0001175E                 add     esp, 0FFFFFFFCh
    10. .text:00011761                 lea     eax, [ebp+DeviceObject]
    11. .text:00011764                 push    eax             ; DeviceObject
    12. .text:00011765                 push    0               ; Exclusive
    13. .text:00011767                 push    0               ; DeviceCharacteristics
    14. .text:00011769                 push    22h             ; DeviceType
    15. .text:0001176B                 push    offset DeviceName ; DeviceName
    16. .text:00011770                 push    0               ; DeviceExtensionSize
    17. .text:00011772                 push    [ebp+DeviceObject.NextDevice] ; DriverObject
    18. .text:00011775                 call    IoCreateDevice
    19. .text:0001177A                 cmp     eax, 0
    20. .text:0001177D                 jnz     short locret_117C4
    21. .text:0001177F                 push    offset DeviceName ; DeviceName
    22. .text:00011784                 push    offset SymbolicLinkName ; SymbolicLinkName
    23. .text:00011789                 call    IoCreateSymbolicLink
    24. .text:0001178E                 cmp     eax, 0
    25. .text:00011791                 jnz     short loc_117BB
    26. .text:00011793                 mov     eax, [ebp+DeviceObject.NextDevice]
    27. .text:00011796                 mov     dword ptr [eax+34h], offset _IoDeleteService
    28. .text:0001179D                 mov     dword ptr [eax+38h], offset _IofCompleteRequest
    29. .text:000117A4                 mov     dword ptr [eax+40h], offset _IofCompleteRequest
    30. .text:000117AB                 mov     dword ptr [eax+70h], offset sub_1164D
    31. .text:000117B2                 mov     eax, 0
    32. .text:000117B7                 leave
    33. .text:000117B8                 retn    8
    34. .text:000117BB ; ---------------------------------------------------------------------------
    35. .text:000117BB
    36. .text:000117BB loc_117BB:                              ; CODE XREF: start+36j
    37. .text:000117BB                 lea     eax, [ebp+DeviceObject]
    38. .text:000117BE                 push    eax             ; DeviceObject
    39. .text:000117BF                 call    IoDeleteDevice
    40. .text:000117C4
    41. .text:000117C4 locret_117C4:                           ; CODE XREF: start+22j
    42. .text:000117C4                 leave
    43. .text:000117C5                 retn    8
    44. .text:000117C5 start           endp
    Вопрос - каким образом происходит вызов sub_1164D?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    При приходе в NextDevice irp_mj_device_control.
     
  3. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    спасибо!