Доброго времени всем. У меня такой вопрос: Когда внедряю свой dll в чужой exe, (в моем случае, программа MineSweeper (Vista), в dll кроме MessageBox ничего нет) в секции данных по адресу 78С7 <"Beginner> записываю имя моей dl.dll далее, где происходит выбор уровня сложности игры, а именно по адресу 1АF59 правлю код на загрузку моей dll push 78С7 адрес в вызове call правлю на адрес 6020, где хранится _stdcall LoadLibrary при запуске приложения, при выборе уровня сложности, нет вызова моей .dll. есть еще вариант, когда при запуске приложения сразу вылезает окно выбора сложности игры. До этого пробовал внедрить dll через LordPE и AppInit_DLLs - все нормально получилось А тут уже сижу 4 дня и все никак. Посмотрите пожалуйста - что делаю не так. https://rapidshare.com/files/4021698840/Minesweeper.rar
Было: Код (Text): .0101AF59: 68C8780001 push 0010078C8 ;'Beginner' .0101AF5E: 8B4D08 mov ecx,[ebp][08] .0101AF61: E8E0580200 call .001040846 --↓7 .0101AF66: 8B4508 mov eax,[ebp][08] .0101AF69: C9 leave .0101AF6A: C20800 retn 8 Стало : Код (Text): .0101AF59: 68C8780000 push 0000078C8 ;' ???????? .0101AF5E: 8B4D08 mov ecx,[ebp][08] .0101AF61: FF6020 jmp d,[eax][20] ???????? .0101AF64: 0200 add al,[eax] .0101AF66: 8B4508 mov eax,[ebp][08] .0101AF69: C9 leave .0101AF6A: C20800 retn 8 Промахнулись вы батенька со своей правкой. Испортили push и call где? Вместо него нечто невразумительное. Нужный call dword[1006020] не влезет тут. Относительный адрес ссылки на LoadLibrary возможно и 6020, но почему-то мне кажется что надо задать 1006020 и возможно еще релоки исправить.
valterg Cпасибо за старание донести до меня ошибки. Но огорчу вас - тщетно. Перелопатил весь ехе-шник сапера, уже дописывал в нулевые биты в конец в файла: Код (Text): push 0D3A20 ;разместил dll call 601C ;вы оказались правы, LoadLibrary лежит немного по другому смещению push 0D5617 ;имя функции push eax call 6018 ;GetProcAdr потом вызываю это изменением адреса джампа функции PostQuitMessage по адресу 2E3CE Вроде все нормально, приложение запускается, работает. и в момент выхода из него, где по идее должен вызваться dl.dll, аварийно завершается. Прикрепляю его. (для запуска нужна еще родная длл-ка. еще доступна там же https://rapidshare.com/files/4021698840/Minesweeper.rar) Успокойте мою душу - подскажите, подробно куда и что писать. похоже что все-таки лыжи-то едут... а вот дело во мне
Alastor Господи, ну откуда ты эти адреса берешь : 6018 и т.д. В экзе-файле у тебя стоят 1006018 (HIEW конечно выдает с коррекцией, но я смотрел хекс-вьювером и там тоже 1000000+adr). На днях еще раз проверю. И уж никак не call адрес, а именно то что я написал.