Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
Внизможно ли как-либо отловить вызов dll в коде? Найти похожие ветки
← →
Starkom (2002-04-17 12:26) [0]Есть приложение, которое в вызывает dll, которая в свою очередь сама вызывает другие dll"ки. Может ли приложение отслеживать, какие dll"ки вызывает первая dll"ка?
← →
Alx2 (2002-04-17 12:37) [1]Некоторые dll можно еще до запуска узнать из таблицы импорта.
Про остальные IMHO перехват API вызовов LoadLibrary, LoadLibraryEx. А это надо?
← →
Starkom (2002-04-17 12:45) [2]Да, надо.
Дело не в том, чтобы узнать какие dll"ки использует первая dll"ка, это я и так знаю.
Я хочу запустить вызов первой dll"ки в потоке, чтобы другой поток получал управление непосредственно ДО вызова первой dll"кой нужной мне функции из другой, вполне определенной dll"ки и выполнял определенные действия.
← →
Digitman (2002-04-17 13:11) [3]А не намудрил ли ты ?
Пусть твой хост-процесс грузит обе DLL (имена ж их и требуемые точки входа известны тебе) и вызывает их в сколь угодно сложном порядке в любых нужных потоках !
← →
Starkom (2002-04-17 13:18) [4]в том то и дело, что одна dll"ка стороннего разработчика без исходных текстов. Как она устроена, я понятия не имею. Знаю только, что она вызывает функцию из dll"ки, написанной мной. Как раз и надо получить управление до вызова этой функции. Можно, конечно, делать это из самой функции, но тогда, как получить доступ к данным самого приложения?
← →
Alx2 (2002-04-17 13:41) [5]> как получить доступ к данным самого приложения?
Так получается, что адресное пространство едино и до всех данных своего приложения можно достучаться. Особливо, если структура известна.
Потом: почему именно до вызова своей функции? На первый взгляд все едино: что до вызова, что обработать то же самое в начале выполнения функции.
← →
Digitman (2002-04-17 13:49) [6]Все равно непонятно, что значит "получить управление"...
Если твою ф-цию в твоей же DLL кто-то вызывает, это вполне можно считать ситуацией, когда ты получил управление.
← →
Starkom (2002-04-17 14:18) [7]2 Alx2: а как достучаться?
есть form1 на буттон1клик создаем
Thread:=TFormExecutor.Create(false);
в TFormExecutor.Execute вызываем внешнюю dll"ку - она потом вызывает мою dll"ку. Так в моей dll"ке Form1=nil!
я просто не въезжаю, как получить доступ к данным приложения.
← →
Виктор Щербаков (2002-04-17 14:25) [8]
> я просто не въезжаю, как получить доступ к данным приложения
Положи их в проецированный файл. Если уж до конца извращаться, то туда можно положить адрес некоторой функции твоего хост-приложения, а длл, при получении управления будет вызывать эту функцию.
← →
Starkom (2002-04-17 14:27) [9]2 Виктор Щербаков:
:)) проще уж приложение COM-server"ом сделать. А при вызове функции из dll создавать клиент.
← →
Alx2 (2002-04-17 14:27) [10]>Starkom (17.04.02 14:18)
Опиши подробнее задачу. С трудом допираю. Почему Form1 не должна быть nil. Проблема в том, чтобы наблюдать Form1 у хоста?
← →
Starkom (2002-04-17 14:31) [11]2 Виктор Щербаков:
:)) проще уж приложение COM-server"ом сделать. А при вызове функции из dll создавать клиент.
← →
Digitman (2002-04-17 14:40) [12]Можно, TCKB E; YF NJ GJIKJ? "поизвращаться" и куда более изощреннее)
Всякая Делфи-форма, существующая в run-time, имеет свое окно.
В процессе конструирования формы создаваемое окно получает уникальное св-во (с именем создаваемогого конструктором формы спец-но для этой цели глоб.атома), значение которого равно адресу экз-ра формы в памяти приложения (иными словами - копии того, что содержится в той самой переменной Form1 у автора). Дело за малым : найти любым удобным и доступным способом хэндл окна формы, получить хэндл глолб.атома, получить зн-е св-ва окна и привести его к известному заранее типу - классу целевой формы.
Подробности - в модуле controls.pas,
см. все, что связано с "магическим" объявлением в этом модуле :
var
WindowAtom: TAtom;
ControlAtom: TAtom;
← →
Digitman (2002-04-17 14:53) [13]В дополнение :
Замечательную, кстати, "дыру" Борланд оставляет для желающих "поистязать" чужие приложения, написанные в Делфи)
При определенном желании и упорстве можно получить ПОЛНЫЙ контроль над объектом Application, "живущим" в АП "чужого" процесса, стартовавшего из EXE, сверстанного в Делфи и использующего объект TApplication)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c