Форум: "Основная";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];
ВнизПерхват вызова функций DLL? Найти похожие ветки
← →
kull (2002-08-12 18:58) [0]1. Есть DLL
2. Известны функции которые она экспортит
Есть ли способ перехватить вызов этих функций (и параметры), если заранее неизвестно какой процесс ее (DLL) загрузит.
← →
Skier (2002-08-12 19:03) [1]>kull
> Есть ли способ перехватить вызов этих функций
Что-то туманно...поясни что сделать хочешь.
← →
kull (2002-08-12 19:14) [2]Поясняю...
1. есть myfunctions.dll
2. В ней есть экпортируемая функция
myfunction(i: pchar): integer; stdcall;
3. неизвестно какой процесс будет ее использовать.
так вот я хочу перехватить следующую ситуацию:
1. процесс Х загружает myfunctions.dll
2. процесс Х вызывает myfunction
Задачи:
1. Надо узнать что это за процесс
2. Неплохо бы узнать и значение параметра, передаваемого в myfunction
← →
Skier (2002-08-12 19:20) [3]>kull
> 1. процесс Х загружает myfunctions.dll
procedure DLLEntyPoint(AReason: Integer);
begin
case of
DLL_PROCESS_DETACH :;
DLL_PROCESS_ATTACH :; //то что тебе нужно
DLL_THREAD_ATTACH :;
DLL_THREAD_DETACH :;
end; //case
end;
DLLProc := @DLLEntyPoint
(см. Help - для подробностей)
> 2. процесс Х вызывает myfunction
Только в самой функции...
← →
kull (2002-08-12 19:24) [4]
> Skier © (12.08.02 19:20)
Нет я имею ввиду, что исходный код myfunctions.dll не доступен.
Она имеется в готовом виде, скомпиленном виде.
← →
Skier (2002-08-12 19:25) [5]>kull
Тогда ответ отрицательный по всем пунктам...
← →
kull (2002-08-12 19:27) [6]Да... Я так и знал. :(
← →
Skier (2002-08-12 19:29) [7]>kull
А что если тебе при вызове (в своём host-прилдожении) всё и узнать ? :)
← →
DiamondShark (2002-08-12 20:20) [8]Старую ДЛЛ переименовать.
Написать новую с таким же списком экспорта, и записать вместо старой
В новой ДЛЛ грузить старую и вызывать ее функции после своей обработки
← →
MrBeer (2002-08-12 20:32) [9]Dlya etogo estj gotovie utiliti, tehnika voobhshem crackerskaya. Smotri tut http://reversing.net/tools.html
← →
bytebutcher (2002-08-12 20:33) [10]>Skier (12.08.02 19.25)
ты полностью неправ - положительный ответ по всем пунктам...
>kull
Самый простой вариант - написать FAKE DLL, т.е. DLL которая экспортирует те же самые функции что и myfunctions.dll и импортирует функции из оригинальной (LoadLibrary и GetProcAddress).
Процесс можешь узнать при инициализации DLL (т.е. DLL_PROCESS_ATTACH) или GetCurrentProcessID
Для С++ на reversing.net есть парочка DLL Wrapper Wizards
P.S.
Если очень нужно пиши на мыло - напишу поподробнее.
P.S.S Кстати в свое время писал свой вариант DLL Wrapper Wizard и с поддержкой автоматических логов (+универсальный просмотрщик) и с экспортируемыми переменными и с dllforward и с поддержкой ресурсов в DLL.....
но так и не доделал - будет время добью!!!!
← →
bytebutcher (2002-08-12 20:39) [11]>DiamondShark
Вот именно это я и имею ввиду
← →
bytebutcher (2002-08-12 20:41) [12]а можно по типу вируса добавить свой код к EXE, но это заметно сложнее будет
← →
TTCustomDelphiMaster (2002-08-12 20:49) [13]Подмени dll своей а из нее вызывай настоящию.
← →
TTCustomDelphiMaster (2002-08-12 20:55) [14]Ну вот пока пиво пил тут уже разобрались :)
← →
kull (2002-08-13 01:15) [15]Была у меня мысля заменить dll на свою, но тут это не подойдет.
На самом деле это gds32.dll (Interbase).
Хотелось сделать что-то вроде универсального SQL монитора.
Конечно есть специальные компоненты типа TIBMonitior.
Но хотелось бы решить эту задачу без использования этих компонентов исходя из того, что приложение работающее с БД может быть написано не на Delphi, но чтоб можно было осуществлять мониторинг его обращений к базе.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c