Неясность с IAT в Win98

Тема в разделе "WASM.BEGINNERS", создана пользователем riban, 19 июн 2005.

  1. riban

    riban New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2005
    Сообщения:
    51
    Адрес:
    Russia
    Распаковываю программу, запакованную хасп-конвертом в XP, восстанавливаю таблицу импорта, всё ок. Но на 98 не запускается (оригинал работает). Делаю то же самое в 98 и наблюдаю в Олли, что в оригинальной IAT постоянно меняются базовые адреса функций. Я явно недопонимаю какого-то механизма работы с IAT в 98м.

    Объясните, плз, что делать.
     
  2. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    ты не весь импорт восстановил , у меян такое тоже было

    поэтому в xp адрес той функции ( невосстановленной )

    остался тот же что и в дампе и она себе спокойно работает



    в win98 некоторые из dll могут иметь одинаковые (или просто другие по сравнению с xp)imagebase поэтому винда их при загрузке релоцирует и соответственно импорты меняются .



    а невосстановленный импорт остаётся тот же , так как винда его н е видит и не перенастраивает



    вот он и вылетает
     
  3. Nemo

    Nemo New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2005
    Сообщения:
    2
    Аналогичная ситуация. Дошел до OEP /КОМПАС-3D V6 Plus/ программа защищена HASP. Труда не составило так как есть эмулятор. Сделал дамп. Восстанавливию импорт - одна функция неизвестна /00493707 jmp short 00493708/. Нахожу адрес откуда вызывается. Остановка на 00493707 происходит, если сделать мемори брекпоинт на секцию .protect.

    (Запускаю /КОМПАС-3D LT V6 Plus/ - это таже программа, но с некоторыми ограничениями, хаспом не защищена. Там по этому адресу вызывается функция GetProcAddress.)

    В ImpRec неизвестную функцию обозначаю GetProcAddress. Запускаю дамп - работает. Под win98 Win2000 не работает. Как полностью восстановить импорт?