Пропустить навигацию

В продолжение вот этой темы.

Как отлаживать 32-х битный код в 64-битной системе

Я упомянула логирование wow64. Это удобно для отладки (например видно сервис из какой таблицы возвратил ошибку), если нет нормальных символов. Разреверсила передаваемые аргументы  функциям в wow64log.dll и написала простой логировщик.

Прошу потестить обладателей 64-битной винды. wow64log.dll должна быть помещена в директорию \windows\system32. Затем запускаете под windbg любое 32-битное приложение и лицезреете лог.  Кстати, небольшое замечание. В wow64log.dll можно импортировать функции только из ntdll, так как иначе приложение будет угроблено.

Вот так выглядит вывод под windbg.

Download

Комментариев: 7

  1. w7 – работает отлично, лог пишется: http://pastebin.com/EsymvdHQ
    Сразу бросаются в глаза отображения нативных kernel32 и user32 (которые тут же размапируются и заменяются на пустые регионы MEM_RESERVE).

    • Спасибо за тест. Тоже тестила на 7 и vista. Ага, размапируется, иначе wow kernel32 и user32 не смогут загрузиться. это причина, по которой можно юзать в импортах only ntdll.

      PS Вот каркас wow64log. Если вдруг кто-то захочет доработать/сделать свой логгер.

      http://pastebin.com/uvwXB2Bv

      • >Ага, размапируется, иначе wow kernel32 и user32 не смогут загрузиться.
        Хм? У нативной kernel32 и wow kernel32 разные базы же (то же для user32). По крайней мере на w7.

        Спасибо за реверс логгирующего механизма. Видим это даже не столь полезным для отладки, сколько для понимания некоторых особенностей wow.

      • Для wow54!InitializeContextMapper возвращенный NtMapViewOfSection STATUS_IMAGE_NOT_AT_BASE является фатальным (как на xp, так и на 7). Вот семпл.

        http://www.sendspace.com/file/no18i6

        Добавила в импорты LoadLibrary. Так же, там в логе windbg все будет видно (как произвольное 32-битное приложение отказывается загружаться).

      • Аа, в таком плане. Да, смотрели на это. Просто при восприятии текста мы не там поставили акцент сначала.

  2. Интересный блог, жаль у меня нету времени на такие ресерчи, вчера вот как-раз ковырял как загружается wow64log и написал длл-ку точнее две wow64log и свою для скрывания отладчика от всяких протекторов. wow64log загружает мою длл используя LdrLoadDll а дальше уже моя длл устанавливает хуки на 64 битные Nt* функции таким образом можно скрыть отладчик без драйвера.

    • Здравствуйте. Кстати занятное применение этой возможности. Жаль, что wow64 – специфичное )


Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.