eXeL@B —› Вопросы новичков —› Не возвращается управление отладчику |
Посл.ответ | Сообщение |
|
Создано: 04 мая 2019 22:35 · Личное сообщение · #1 |
|
Создано: 04 мая 2019 22:51 · Поправил: plutos · Личное сообщение · #2 |
|
Создано: 04 мая 2019 22:55 · Личное сообщение · #3 |
|
Создано: 04 мая 2019 22:56 · Поправил: f13nd · Личное сообщение · #4 Управление может не возвращаться в принципе, потому что так задумано. Ольга этим часто болеет при step over через SendMessageW например. ----- 2 оттенка серого | Сообщение посчитали полезным: hash87szf |
|
Создано: 05 мая 2019 04:29 · Личное сообщение · #5 Flari пишет: При изучении программы заметил, что есть call, после которого управление отладчику не передается, а в этом call'e еще такой же и так далее При Step Over не передаётся? В первом случае в функции, которая вызывается инструкцией call, может прога уже запускается, может бесконечная рекурсия, может на какой-то рекурсии бесконечный цикл, а может быть реализован один или несколько приёмов антиотладки. Попробуй, например, поставить бряк на NtSetInformationThread, перед эти дойдя до этого колла. Остановится там прога? Если да - смотри, что в аргументах. Если во втором 0x11 - прога прячет себя от отладчика, переставь eip на ret. ----- IZ.RU |
|
Создано: 05 мая 2019 12:38 · Личное сообщение · #6 |
|
Создано: 05 мая 2019 13:11 · Личное сообщение · #7 Заходить в каждый call не очень хочется. Ну-ну, в реализации вмп нет call, все они трактуются как push any; jmp addr; и возврата из них в принципе быть не может. ----- Everything is relative... | Сообщение посчитали полезным: Flari |
|
Создано: 05 мая 2019 13:31 · Личное сообщение · #8 |
|
Создано: 05 мая 2019 13:43 · Личное сообщение · #9 Flari Читайте ----- Everything is relative... |
|
Создано: 05 мая 2019 14:27 · Поправил: difexacaw · Личное сообщение · #10 |
|
Создано: 05 мая 2019 21:51 · Поправил: DenCoder · Личное сообщение · #11 Flari пишет: А есть какие-то способы облегчить себе работу в изучении такой реализации? Во-первых, тебе не нужно заходить в каждый call! И тем более не нужно ждать, что из него будет выход. Для вмп это смешно. Во-вторых, для вмп нужен статико-динамический анализ - дизасм + дебаггер/эмулятор. Для статики вот тебе скрипт для иды на питоне. Не доработан, правда, даже до 90%, я там учитывал всё по мере столкновения, но всё же он мне помог: Code:
Скриптом хэндлеры превращаются в более удобное представление, чтобы проанализировать и как-то их обозвать. Адреса находишь свои. vm1_init - точка входа в вм с новым адресом ленты vm1_startVmTrace - инициализация указателя ленты вм vm1_entry - начало выборки следующего примитива vm1_verStack - адрес кода проверки вм-стека Извините за названия точек, но я не сильно заморачивался. Для дебага x86 можно иду же и использовать. Ставишь на выходе из диспетчера hwbp и в условиях скрипт на питоне(пишем сами) для логирования вм-команд и если надо значений в окно вывода. Важные операции как раз там. Правда после распаковки, если она есть... Это из старых разработок. Можно в статике распаковать и девиртуализировать ----- IZ.RU |
|
Создано: 06 мая 2019 10:21 · Личное сообщение · #12 |
|
Создано: 06 мая 2019 11:16 · Поправил: DenCoder · Личное сообщение · #13 Можно. Выкладываю в сыром виде, как есть 9274_06.05.2019_EXELAB.rU.tgz - defTail.py Скрипт под иду 6.8. Для 7.0 надо менять ----- IZ.RU |
eXeL@B —› Вопросы новичков —› Не возвращается управление отладчику |