Sunzer Добавить элемент IAT это конечно круто, оно как оно поможет в задаче ТС-а? Ему-то нужно перенаправить вызов в другую dll.
Это не далает код выше? add: Первый пост ТС'a говорит о другом. Задача-то выполняется, все-то что просил ТС делает код. Не?
Sunzer Нет, это просто добавление ещё одной функции из другой dll. Вызов всё равно идёт в kernel32.dll.
Sunzer Перечитайте ещё раз. Просто добавить функцию это бесполезно в данном случае, нужно чтобы она вызывалась.
Ну тут иначе никак, сам ехе так не отредактируешь, хотя если он с релоками... А так решения уже высказали для ТС'a.
Релоки здесь не причём. Невозможно отредактировать импорт так, чтобы часть функций перешла в другую dll. Они отделяются нулями, а это гарантия запоротого импорта.
Смотри, перебираем релоки, смотрим на то, что идет в таблицу импорта, т.е. легко можно определить вызовы нужных API, и перенаправить их прямо в коде на другую секцию. Разве нет? ps: чат какой-то получается)
Sunzer По вашему релоки для импорта? Никогда бы не подумал. Если там есть переходники, то и релоки никакие не нужны(но и это не надо, ведь есть же импорт), но опять таки это надо модифицировать не только таблицу импорта, но и писать свой код, который будет в рантайме патчить, чего TC категорически не желает.
Нет, но они указывают на то, где-нужно поправить адрес, верно? У нас есть список адресов исходя из релоков. Ведь не составит труда определить принадлежность адреса из списка к импорту, даже если с переходниками, просто кода немного больше, верно? Соответствено можно определить к какой API из какой DLL идет вызов, и если это целевая API, то поменять этот адрес первоначальный на адрес из новой IID. Что я не правильно думаю?
Sunzer И кто и где это будет делать? Или оно само магически сделается? И зачем это всё? Есть же импорт.
Хотя да, можно перенаправить на новую функцию в импорте. Но релоки это экзотика, переходники гораздо реальнее. Ну или найти все вызовы искомой функции. В общем вполне приемлемое решение, хоть и не универсальное.
Универсальное, в случае если есть релоки, если их нет, то форвард длл. Патчить конечно в рантайме всех проще, но задача ТС это запрещает.
Фантастика в смысле редко встречаются в ехе? В крайнем случае построение графов для определения адресов вызовов никто не отменял.