Добрый время суток уважаемые Гуру. Буду описывать проблему по существу. Цель: дописать в начало выполняемого кода программы строчку которая будет запускать уже присутствующую в exe-нике импортируемую функцию. call dword ptr [4700d0] Возможные пути решения: 1) Воспользоваться Win32 Dasm пропатчить какую-то ненужную строку и изменить ее Hex-редактором. ВОзникаемая проблема: как найти такую строку замена которой не отражалась бы на работоспособности программы 2) Дописать каким-то образом новую строчку кода после точки входа в программу ВОзникаемая проблема: Во-первых незнаю как это сделать, Во-вторых поидее все адреса нужно будет как-то смещать что-ли 3) Возможно существуют уже готовые утилитки по дописанию одной асемблерной строчки после позиции "Входа в рограмму" и последующей ее корректной сборки Суть такого мероприятия:Для одной программы нужно сделать так чтобы она запускалась только при определенных условия иначе завершалась. Решение нашел такое: создал DLL где будет происзодить проверка этого самого условия, далее при помощи утилитки IID King дописал в импортируемую область мою функцию проверки из DLL, теперь нужно запустить эту проверку в начале программы. Заранее благодарю за помощь.
Ищешь нули в файле, пишешь туда нужную команду, после нее делаешь джапм на оригинальную точку входа, изменяешь точку входа на адресс своей команды.
-ищеш в файле цепочку нулей(или добавляеш новую секцию)(есть утилита для этого название забыл) -смотриш значения точки входа запоминаеш его -в свободное место дописываеш + переход на оригинальную точку входа -исправляеш значение точки входа на RVA своего кода
А при помощи каких программ все это делать ? Можно описать все более подробно - я ведь специально написл в раздел WASM.BEGINNERS поскольку с таким видом деятельности раньше не сталкивался. Мне всего лишь нужно это сделать для одной программы.
Да нафиг всё это надо? Если ты добавил новый импорт то твоя библа будет на автомате грузится при запуске приложения. Вот и вызови свою функцию на DllMain.
Ну так объясните как это сделать. Я же говорил что с этим все делом не знаком. С ассемблером да и со всем этим деасемблированием знаком на очень низком уровне знаний.
Длл ты писал ? Если да, тогда все нужные действия можно делать в процедуре DllMain, без заморочек с правкой файла.
в DllMain выполни свою проверку, если все ОК, верни управление (выйди через ret) если не ОК - вызови ExitProcess
DLL я писал. Теперь все понял... DLLMain вызывается при инициализации импортныйх библиотек. Ну что ж сейчас попробую... так должно быть даже проще. спасибо всем за советы.