Набор статей и руководств по дизассемблеру IDA

Реконструирование IDA.WLL


Чтобы откорректировать IDA.WLL, сначала необходимо получить файл в расшифрованном виде. Для этого понадобятся IceDump, ProcDump и Ваш шестнадцатеричный редактор.  Изучением этой методики мы сейчас и займемся.
Запустите IDA и дождитесь появления информационного окна.  Переключитесь на адресный контекст IDA с помощью команды 'addr idag'.  Установите контрольную точку 'bpmb 8:10001000 x', в результате чего исполнение IDA.WLL остановится на "расшифрованной" точке входа.  Просмотрите в ProcDump'е PE структуру - базовый адрес 1000000, длина ac000 (base address 1000000 length ac000).  Выйдите из IDA и запустите ее снова; пропустите первое прерывание по адресу 10001000, и позвольте программе доработать до второго прерывания в этой точке.  К данному моменту все будет уже расшифровано, и содержимое памяти может быть сброшено в файл, для чего выполните команду 'pagein d 10000000 ac000 c:\temp\ida.dmp'.

Теперь с помощью ProcDump'а нужно откорректировать PE-заголовок при следующих включенных возможностях:

    recompute object size  -- (пересчитать размер)

    optimize pe structure  -- (оптимизировать  структуру PE)

    check header sections  -- (проверить заголовочные секции)

    rebuild header  -- (восстановить заголовок)

    use actual import infos  -- (использовать фактическую информацию импорта)

    Секцию импорта нам придется восстанавливать вручную (я выполнил такое восстановление достаточно быстро, копируя и вставляя информацию в шестнадцатеричном редакторе), используя структуру таблицы импорта PE.  Вы сможете найти таблицу импорта с помощью ProcDump'а и вычислить смещения - почитайте документацию по PE.  Ниже приведен фрагмент оригинального IDA.WLL:
     



    Содержание раздела