Проблема:
Я занимаюсь прикручивания VB к универсальной библиотеке перехвата АПИ функций.
Проэкт: www.madshi.net
При использовании этой длл перехват любых АПИ превращаеться в тривиально простую
задачу.
В двух словах КАК это работает:
1. Библиотека перехвата АПИ - Delphi.
2. Инжекция либы во все процессы включая системные вызовом из ВБ приложения.
3. Создаётся IPC Queue внутри этого приложения.
4. При перехвате АПИ длл по IPC Queue вызывает функцию по указателю
внутри приложения инжектора, передавая внутрь параметры и указатель на
буфер для ответа.
Что у меня:
1. ДЛЛ для перехвата АПИ перехватывает.
2. Она успешно ВЫЗЫВАЕТ callback процедуру в модуле ВБ инжектора.
1) я НЕ МОГУ добраться до параметров /
2) я НЕ могу записать данные в буфер ответа.
--
Memory cannot be ... и дплее по тексту.
Передаются указатели на буферы.
Примеры:
1. Длл перехватывает:
CreateProcessA
CreateProcessW
WinExec
Код callback-a:
- Код: Выделить всё
'-----------------------------------------------------------------
Public Function IPCCallbackFunction(IPCname As String, _
messageBuf As Long, _
MessageLength As Long, _
AnswerBuffer As Long, _
AnswerLengh As Long) As Long
'Любой анализ параметров - даёт сбой
End Function
'-----------------------------------------------------------------
'Установка IPC Queue:
Private Sub cb_CreateIPCQ_Click()
If CreateIpcQueueEx("myIPCQueueName" & Chr(0), _
AddressOf IPCCallbackFunction, _
1, _
6000) Then
'^^^ Is locared in the Module!
'^^^ Unique IPC Name!
M "IPC Started" & vbCrLf
Else
M "IPC FAILED" & vbCrLf
End If
End Sub
'-----------------------------------------------------------------
Весь код в аттаче:
1. Перехват CP.
2. Перехват принтера.
Вопрос:
Из за чего access violation?
Как построить IPCQueue что бы не только параметры из длл передавались,
но и ответ в длл возвращался?
--
comments PO DELU are welcomed!
--
заранее огромное спасибо!