таблица импорта

Тема в разделе "WASM.WIN32", создана пользователем nMaxwell, 23 мар 2011.

  1. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Сразу так бы написал. Вот исправленая версия, флажки секции надо было сменить.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    Добавить элемент IAT это конечно круто, оно как оно поможет в задаче ТС-а? Ему-то нужно перенаправить вызов в другую dll.
     
  3. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Это не далает код выше?

    add: Первый пост ТС'a говорит о другом. Задача-то выполняется, все-то что просил ТС делает код. Не?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    Нет, это просто добавление ещё одной функции из другой dll. Вызов всё равно идёт в kernel32.dll.
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    Перечитайте ещё раз. Просто добавить функцию это бесполезно в данном случае, нужно чтобы она вызывалась.
     
  6. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Понял теперь, я по другому представлял задачу.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    Ну и я про то, тут или патч в рантайме или форвард длл. ТС этого понять никак не хочет.
     
  8. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Ну тут иначе никак, сам ехе так не отредактируешь, хотя если он с релоками...

    А так решения уже высказали для ТС'a.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Релоки здесь не причём. Невозможно отредактировать импорт так, чтобы часть функций перешла в другую dll. Они отделяются нулями, а это гарантия запоротого импорта.
     
  10. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Смотри, перебираем релоки, смотрим на то, что идет в таблицу импорта, т.е. легко можно определить вызовы нужных API, и перенаправить их прямо в коде на другую секцию. Разве нет?

    ps: чат какой-то получается)
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    По вашему релоки для импорта? Никогда бы не подумал. Если там есть переходники, то и релоки никакие не нужны(но и это не надо, ведь есть же импорт), но опять таки это надо модифицировать не только таблицу импорта, но и писать свой код, который будет в рантайме патчить, чего TC категорически не желает.
     
  12. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Нет, но они указывают на то, где-нужно поправить адрес, верно? У нас есть список адресов исходя из релоков. Ведь не составит труда определить принадлежность адреса из списка к импорту, даже если с переходниками, просто кода немного больше, верно? Соответствено можно определить к какой API из какой DLL идет вызов, и если это целевая API, то поменять этот адрес первоначальный на адрес из новой IID. Что я не правильно думаю?
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    И кто и где это будет делать? Или оно само магически сделается? И зачем это всё? Есть же импорт.
     
  14. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Программа которая будет обрабатывать входной ехе.
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    Куда она перенаправит вызовы?
     
  16. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    В новый IMAGE_IMPORT_DESCRIPTOR.

    [​IMG]

    0x10017A4, разве этот адрес нельзя изменить на другой?
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Хотя да, можно перенаправить на новую функцию в импорте. Но релоки это экзотика, переходники гораздо реальнее. Ну или найти все вызовы искомой функции. В общем вполне приемлемое решение, хоть и не универсальное.
     
  18. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Универсальное, в случае если есть релоки, если их нет, то форвард длл. Патчить конечно в рантайме всех проще, но задача ТС это запрещает.
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sunzer
    Если есть переходники, то достаточно их пропатчить. А релоки это фантастика.
     
  20. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Фантастика в смысле редко встречаются в ехе? В крайнем случае построение графов для определения адресов вызовов никто не отменял.