persianboy
شنبه 07 آذر 1383, 19:08 عصر
سلام برو بچس !
من واسه "api hooking" باید این dll رو تو حافظه load کنم .
ولی اگه خیلی خوش شانس باشم هر 40 بار یک بار فراخونی میشه .
dll هم اینه :
library APIHook;
uses Windows, madRemote, madCodeHook, madStrings;
var TerminateProcessNext : function (processHandle, exitCode: dword) : bool; stdcall; //this is the original function
function ThisIsOurProcess(processHandle: dword) : boolean; //just a function to check is this is our process
var pid : dword;
arrCh : array [0..MAX_PATH] of char;
begin
pid := ProcessHandleToId(processHandle);
result := (pid <> 0) and ProcessIdToFileName(pid, arrCh) and
(PosText('OurApplication.exe', arrCh) > 0);
end;
function TerminateProcessCallback(processHandle, exitCode: dword) : bool; stdcall;// the callback function
begin
if ThisIsOurProcess(processHandle) then begin
result := false;
SetLastError(ERROR_ACCESS_DENIED); //if this is our process, then set an error
end else
result := TerminateProcessNext(processHandle, exitCode);//else terminate the process
end;
begin
HookAPI('kernel32.dll', 'TerminateProcess', @TerminateProcessCallback, @TerminateProcessNext); //hook the API
end.
dcu های مورد نیاز توی www.madshi.net هست .
یادتون نره "our application" رو با اسمه برنامتون عوض کنید .
ازش هم این طوری توی dpr استفاده می کنم :
InjectLibrary(ALL_SESSIONS or SYSTEM_PROCESSES, 'APIHook.dll');
کارش هم اینه که نمیذاره کاربر از توی processes list ویندوز 2000وxp برنامه رو
ببنده .
هر کی تونست بگه چه جوری load میشه کلی حال به ما و یه سری مبتدی داده !
من واسه "api hooking" باید این dll رو تو حافظه load کنم .
ولی اگه خیلی خوش شانس باشم هر 40 بار یک بار فراخونی میشه .
dll هم اینه :
library APIHook;
uses Windows, madRemote, madCodeHook, madStrings;
var TerminateProcessNext : function (processHandle, exitCode: dword) : bool; stdcall; //this is the original function
function ThisIsOurProcess(processHandle: dword) : boolean; //just a function to check is this is our process
var pid : dword;
arrCh : array [0..MAX_PATH] of char;
begin
pid := ProcessHandleToId(processHandle);
result := (pid <> 0) and ProcessIdToFileName(pid, arrCh) and
(PosText('OurApplication.exe', arrCh) > 0);
end;
function TerminateProcessCallback(processHandle, exitCode: dword) : bool; stdcall;// the callback function
begin
if ThisIsOurProcess(processHandle) then begin
result := false;
SetLastError(ERROR_ACCESS_DENIED); //if this is our process, then set an error
end else
result := TerminateProcessNext(processHandle, exitCode);//else terminate the process
end;
begin
HookAPI('kernel32.dll', 'TerminateProcess', @TerminateProcessCallback, @TerminateProcessNext); //hook the API
end.
dcu های مورد نیاز توی www.madshi.net هست .
یادتون نره "our application" رو با اسمه برنامتون عوض کنید .
ازش هم این طوری توی dpr استفاده می کنم :
InjectLibrary(ALL_SESSIONS or SYSTEM_PROCESSES, 'APIHook.dll');
کارش هم اینه که نمیذاره کاربر از توی processes list ویندوز 2000وxp برنامه رو
ببنده .
هر کی تونست بگه چه جوری load میشه کلی حال به ما و یه سری مبتدی داده !