Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Как передать исключение в отлаживаемую программу?
Посл.ответ Сообщение

Ранг: 7.0 (гость)
Активность: 0.020
Статус: Участник

Создано: 03 апреля 2017 02:20 · Поправил: motoroller
· Личное сообщение · #1

имею код
Code:
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 0040B960  /$  55            PUSH EBP                                 ; Abduction_Crackme_new.0040B960(guessed void)
  4. 0040B961  |.  8BEC          MOV EBP,ESP
  5. 0040B963  |.  6A FE         PUSH -2
  6. 0040B965  |.  68 60F94000   PUSH OFFSET 0040F960
  7. 0040B96A  |.  68 004B4000   PUSH 00404B00
  8. 0040B96F  |.  64:A1 0000000 MOV EAX,DWORD PTR FS:[0]
  9. 0040B975  |.  50            PUSH EAX
  10. 0040B976  |.  83C4 EC       ADD ESP,-14
  11. ; тут еще немного всякой чепухи
  12. 0040B9AE  |.  6A 04         PUSH 4                                   ; /Protect = PAGE_READWRITE
  13. 0040B9B0  |.  68 00100000   PUSH 1000                                ; |AllocType = MEM_COMMIT
  14. 0040B9B5  |.  68 00000100   PUSH 10000                               ; |Size = 65536.
  15. 0040B9BA  |.  6A 00         PUSH 0                                   ; |Address = NULL
  16. 0040B9BC  |.  8B35 30E04000 MOV ESI,DWORD PTR DS:[<&KERNEL32.Virtual ; |
  17. 0040B9C2  |.  FFD6          CALL ESI                                 ; \KERNEL32.VirtualAlloc
  18. 0040B9C4  |.  8945 E0       MOV DWORD PTR SS:[LOCAL.8],EAX
  19. 0040B9C7  |.  C600 C3       MOV BYTE PTR DS:[EAX],0C3
  20. 0040B9CA  |.  8945 E0       MOV DWORD PTR SS:[LOCAL.8],EAX
  21. 0040B9CD  |.  FF75 DC       PUSH DWORD PTR SS:[LOCAL.9]              ; /pOldProtect => [LOCAL.9]
  22. 0040B9D0  |.  68 20010000   PUSH 120                                 ; |NewProtect = PAGE_EXECUTE_READ|PAGE_GUARD
  23. 0040B9D5  |.  6A 10         PUSH 10                                  ; |Size = 16.
  24. 0040B9D7  |.  50            PUSH EAX                                 ; |Address
  25. 0040B9D8  |.  8B35 3CE04000 MOV ESI,DWORD PTR DS:[<&KERNEL32.Virtual ; |
  26. 0040B9DE  |.  FFD6          CALL ESI                                 ; \KERNEL32.VirtualProtect
  27. 0040B9E0  |.  FF55 E0       CALL DWORD PTR SS:[LOCAL.8]

собственно логика понятна, выделяем кусок памяти, делаем PAGE_GUARD и вызываем его, делая исключение. Вопрос: как попасть на обработчик прерывания, который устанавливается программой? я делал так: ставлю аппаратную точку останова на обработчик (00404B00), затем в ольке отключаю обработку всех исключений, F9 и олька все равно стопорится на вызове CALL DWORD PTR SS:[LOCAL.8]. Не вопрос, думаю я, затем иду на обработчик и New origin here, но какаказалось на стеке нет информации об исключении и все уходит в небытие... Как побороть? скрин настроек оли




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 03 апреля 2017 03:15
· Личное сообщение · #2

motoroller пишет:
иду на обработчик и New origin here, но какаказалось на стеке нет информации об исключении

а откуда бы она там взялась, если обработчик не был вызван, а просто джампнут через "New origin here"?

motoroller пишет:
в ольке отключаю обработку всех исключений

по скрину не заметно чтобы прям всех. Для трассировки одного конкретного случая должно хватить
SHIFT-F9 - pass exception to application

А чтоб выключить обработку вообще, делай вот так





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 03 апреля 2017 04:47
· Личное сообщение · #3

motoroller

> как попасть на обработчик прерывания, который устанавливается программой?
> какаказалось на стеке нет информации об исключении

Исключение начинается в KiUserExceptionDispatcher(). На стеке вся нужная инфа. Далее вызывается VEH, затем SEH. VEH напрямую не доступен, этот вектор нельзя(проблемно) получить удалённо.

Установка гварда просто так не юзается, вероятно это антидебаг.

-----
vx



 eXeL@B —› Вопросы новичков —› Как передать исключение в отлаживаемую программу?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати