![]() |
eXeL@B —› Вопросы новичков —› Вызов процедуры из своей DLL в чужой программе (Delphi) |
Посл.ответ | Сообщение |
|
Создано: 27 сентября 2011 08:22 · Поправил: Dazz · Личное сообщение · #1 Привет. Есть одна самописная программа(без исходников), написанная на Delphi. Назовем ее Immun.exe Написал на Delphi простенькую MyCall.dll с процедурой testcall , в которой вызывается ShowMessage('I'm from dll!'); Нужно, чтобы по нажатию кнопки в Immun.exe, была вызвана моя процедура. Нашел такую статью - По ней, добавил в Import Table свою MyCall.dll и название процедуры testcall. При запуске программы Immun.exe должна подхватиться моя MyCall.dll. Значит все в порядке, т.к. PeTools показывает, что Immun.exe загрузил мою dll. А как вызвать мою процедуру? Подскажите пожалуйста. С помощью программы IDR я нашел вызов кнопки, а вот что туда написать? Выложу пример. В архиве экзешник с одной кнопкой и dll (исходник ее ниже). Нужно по нажатию кнопки, вызвать процедуру testcall. Code:
![]() ![]() |
|
Создано: 27 сентября 2011 16:49 · Поправил: Dazz · Личное сообщение · #2 Уххх.. Весь день мучил OllyDbg - постоянно выходили эксепшены. И наконец получилось =) Я неверный адрес вызывал ![]() ![]() Но тут появляется другой вопрос... В моем примере, по нажатию кнопки, в label пишется "Thanks". Я поставил вместо этого, вызов на библиотеку. А нужно оставить оригинал, а после вызвать библиотеку, чтобы добавить функционал. Мои мысли: Нужно затереть частично оригинальную функцию и поставить в ней jmp на пустое место. В этом месте написать вызов библиотеки и jmp на оригинальную функцию. Правильно ли я мыслю?) ![]() |
|
Создано: 27 сентября 2011 16:51 · Личное сообщение · #3 Dazz да всё верно, найди в конце секции кода свободное место с нулями, туда и прыгай, выполни свой код, потом затёртые команды и вернись обратно. ----- [nice coder and reverser] ![]() |
|
Создано: 27 сентября 2011 17:22 · Личное сообщение · #4 |
|
Создано: 27 сентября 2011 17:40 · Поправил: neomant · Личное сообщение · #5 По DB 00 - нужно рассмотривать в конкретном случае. Секция кода в Delphi 7 - CODE, в вашем случае это быстрее всего .text. Так же верным признаком секции кода является её атрибут на исполнение и EP. Так же можете глянуть ----- Следуй за белым кроликом ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Вызов процедуры из своей DLL в чужой программе (Delphi) |