ImpRec. Принципы работы.

Тема в разделе "WASM.RESEARCH", создана пользователем BlackParrot, 10 апр 2009.

  1. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Вобщем хочется поинтересоваться как работает ImpRec. Как определяется адрес IAT исходя из OEP? Мне представляется, что после нажатия на кнопку Get Imports просходит сканирование от OEP и поиск инструкций вида CALL DWORD PTR [XXX] либо CALL YYY;JMP DWORD PTR [XXX]. После нахождения хотя бы одного такого вызова для конкретной DLL можно видеть, адрес внутри IAT найден, а т.к. все IMAGE_THUNK_DATA's в теории должны быть смежными, чтобы не разбухивать размер, то банально пройдясь вверх по адресам, проверяя определенные условия можно получить начало IAT. Размер можно получить также сканируя по адресам вверх и сравнивая определенные условия. Условиями могут быть принадлежность DWORD выделенному адресу процесса или просто возможность чтения-записи. Валидность импорта может определяться исходя из самих адресов и сравнением их с экспортом модулей загруженных в адресное пространство процесса. Get API Calls тоже понятно - сканирование определенных по переходам/аттрибутам регионов кода и получение всех CALL [XXX]/CALL XXX инструкций и их анализ как было описано выше. Интересуют опции Trace Level X. Зачем вообще нужна трассировка. Я понимаю, что для анализа невалидных найденных вхождений, но как это работает? Что делает каждый из уровней трассировки? Спасибо.
     
  2. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Доку к нему почитай, там кое-что есть, тулса эта для сложных случаев, вероятно такие не нужны и хватит сорсов ollydump.
     
  3. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    J0E
    Доку читал хорошо и не раз, но про трассивровку там не написано.
     
  4. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Неправда.

    3 default tracers (disasm, hook & ring3) to find APIs in redirected code
    Use the "Show Invalid" button to see all unresolved slots. You will need to trace into them to find the real API. Always try the Tracer Level1 first because it does not execute any code of the target.

    Трассировка нужна для восстановления импорта после "продвинутых" протекторов. Судя по твоим соседним топикам тебе надо не это и хватит алгоритма выше.
     
  5. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    J0E
    И что тут написано про трассировку? Или ты думаешь что объяснение
    достаточно? Я просил описать случаи изнутри, а не писать общими фразами. Уже не требуется, мне помогли на краклаб.
     
  6. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Опс, не угадал. Откуда узнать, что достаточно? Полное воссоздание алгоритма? вряд ли кто возьмется, проще написать свой. На краклабе отправили дальше доки читать, потому ссылки и нет :)