в таблице иморта PE нужно поменять в одной функции имя либы. например импортруются ReadFile и WriteFile из kernel32 и мне надо чтоб ReadFile вызывалась из kernel33 необходимо все поменять именно в exe а не в памяти
вот именно, не все просто, если просто в hex редакторе поменять имя dll (kernel33 для примера) то все функции будут из нее вызываться, что нас нахрен не нужно. формат PE копал но не докопался до нужного. нужна помощь знающего
Чисто теоретически - можно разбить таблицу импорта для этой библиотеки на две или три таблицы, одна из которых будет ссылаться на новую библиотеку импорта. Практически - Booster предложил более годный вариант.
По-моему CFF Explorer умеет добавлять новые записи к импорту, а затем дописать код на EP, который будет копировать указатели от kernel33 в IAT kernel32.
патчер мне не нужен, мне нужно чтобы все безпалевно было, нужно редактировать саму таблицу Sunzer если не сложно, выложи код плз
nMaxwell Нереально. Между элементами таблицы принадлежащими одной dll обязательно должны быть обрамляющие нули. Так что облом. >патчер мне не нужен, мне нужно чтобы все безпалевно было, нужно редактировать саму таблицу Какое ещё палево?
nMaxwell Самый простой вариант: изменить всё-таки kernel32 на kernel33, а в kernel33 сделать сквозной экспорт всех функций из kernel32. Это уже несколько раз обсуждалось, например здесь. Преимущество в том, что изменения в целевом образе — минимальные (один бит в данном случае ). P.S. Поправил ссылку. Хоть бы кто-то сказал, что я подфорум BEGINNERS отреферeнсил.
l_inc я так и делаю, но хочется чего то более удобного, например если в импорте 1000 функций, а изменить нужно одну, не писать же длл с вызовами всех функций из оригинальной либы
nMaxwell Не уверен, неверно ли Вы выразились или неправильно поняли. При сквозном экспорте никаких вызовов внутри своей dll делать не нужно. В любом случае процесс создания такой "проводящей" dll довольно просто автоматизируется (в том числе и макросами fasm, например, макрос CreateForwardedExport "C:\Windows\system32\kernel32.dll" создаёт полный набор функций, отражающих kernel32.dll). Поэтому не имеет никакого значения, сколько функций в импорте целевого образа.