Сохранение DLL в OllyDBG(Loaddll)

Тема в разделе "WASM.BEGINNERS", создана пользователем tagegor, 28 сен 2010.

  1. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    Здравствуйте, мучал пару часов одну дллку, настало время для сохранения, но не тут то было. По нажатию правой кнопки в списке не появляется Copy to Executable...
    Пробовал сохранять память и восстанавливать дллку через LordPE, не получается, не грузит у меня дебаггер свежеиспеченную дллку...

    Как мне быть?
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Так нельзя же просто взять память и сохранить. Надо снова привести все рва к смещениям и т.д. Надо делать именно дамп образа, а не просто сохранения памяти. Лорд РЕ вроде так умеет
     
  3. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    tagegor,

    В памяти DLL настроена на реальный адрес, по которому она загружена, в отличие от IMAGE_OPTIONAL_HEADER.ImageBase (т.е. фиксапы уже отработали). Если повезёт, им будет нечего делать. В противном случае надо отмотать всё взад (правда, приводить надо не RVA к смещениям, а скорее наоборот). Можно найти свободное место в адресном постранстве и перебазировать исходную .DLL с помощью editbin /rebase, чтобы не было нестыковки.
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    да нет, как раз рва к смещениям :) в памяти-то секции находятся по виртуальным адресам (рва + база), а на диске по физическим смещениям, которые не всегда равны рва
     
  5. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    MSoft,

    Я имел в виду то, что пофикшеный dword надо откорректировать на разницу между базой дампа и файла. В обоих случаях (и в дампе, и в PE) этот dword является VA, а так как в PE часто используется термин RVA, я и употребил "скорее наоборот". В чистом виде RVA нужны для структур самого PE (импорт/экспорт/ресурсы/etc.), в коде/данных самой программы они используются редко.

    То, что смещение в файле обычно не совпадает с RVA — естественно. Хотя для дампа — скорее наоборот. :derisive: