Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Программирование —› Снова SDK от ap0x'a помогите плз
Посл.ответ Сообщение

Ранг: 20.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 июля 2007 22:19
· Личное сообщение · #1

Скачал SDK от ap0x'a. Все нориально Обычные бряки срабатывают (Setbpx)
А вот поставить на Api функцию не получается. Функция то там есть
SetAPIBreakPoint(dllName:LPSTR;apiName:LPSTR;bpxType:DWORD;bpxPlace:DW ORD;CALLBACK:DWORD):VOID
Но у меня не срабатывает



Ранг: 4.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 июля 2007 16:06
· Личное сообщение · #2

If you are setting a breakpoint to API the .dll must be loaded and it should be done like this:

PUSH offset CALLBACKFunction ;address of function which will be called (it has no input parameters)
PUSH 0 ;See SDK
PUSH 0 ;See SDK
PUSH offset szCloseHandle ; db "CloseHandle",0h
PUSH offset szKernel32 ;db "kernel32.dll",0h
CALL SetAPIBreakPoint


PUSH offset CALLBACKFunction ;address of function which will be called (it has no input parameters)
PUSH 0 ;See SDK
PUSH 0 ;See SDK
PUSH offset szCreateFile ; db "CreateFileA",0h (the name matches the name in kernel32.dll export table)
PUSH offset szKernel32 ;db "kernel32.dll",0h
CALL SetAPIBreakPoint


Does this help?



Ранг: 20.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 04 июля 2007 19:26
· Личное сообщение · #3

PUSH offset CALLBACKFunction ;address of function which will be called (it has no input parameters)
PUSH 0 ;See SDK
PUSH 0 ;See SDK
PUSH offset szCloseHandle ; db "CloseHandle",0h
PUSH offset szKernel32 ;db "kernel32.dll",0h
CALL SetAPIBreakPoint
А на Delphi можно??



Ранг: 4.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 июля 2007 21:58 · Поправил: ap0x
· Личное сообщение · #4

Did you look at the samples in SDK 1.3?

procedure SetAPIBreakPoint(dllName,apiName:PChar;bpxType,bpxPlace,CALLBACK:Point er); stdcall; external 'Debugger.dll' name 'SetAPIBreakPoint';

SetAPIBreakPoint(PChar("kernel32.dll"),PChar("CloseHandle"),nil,nil,@C allbackProc);

procedure CallbackProc;
var
begin
end;


Eto можно ;)



Ранг: 20.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 июля 2007 12:33
· Личное сообщение · #5

вот код

......
ProcessInfo := InitDebug(PChar(Edit1.Text),'',PChar(ExtractFilePath(Edit1.Text)));
SetAPIBreakPoint(PChar('kernel32.dll'),PChar('GetModuleHandleA'),nil,n il,@proc);
.....
procedure proc;
begin
showmessage('good');
end;

НЕ работает!
Почему?



Ранг: 4.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 июля 2007 16:18
· Личное сообщение · #6

Callback processing is done within the debug loop so you need to set a breakpoint at OEP and start the debugging with DebugLoop. After the OEP bpx callback gets called then you can do what ever you want. So the debugging is not started with InitDebug, it is started with DebugLoop.



Ранг: 20.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 июля 2007 21:04
· Личное сообщение · #7

Спасибо ap0x
Без твоей помощи мне была бы


 eXeL@B —› Программирование —› Снова SDK от ap0x'a помогите плз
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати