Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-71119
Skin
2002-08-12 21:30
2002.08.22
День недели


3-71036
Nikolai_S
2002-07-25 11:33
2002.08.22
Как в Access с помощью SQL-запроса сделать поле необязательным?


14-71324
MIFI
2002-07-22 19:37
2002.08.22
Запуск скрипта на сервере


3-70953
SemFLY
2002-08-02 00:34
2002.08.22
TDBGrid добавление поля


1-71148
VZ-KZ
2002-08-13 12:06
2002.08.22
Выделение строки в StringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский