Hook API-之進程保護
Hook API-之進程保護
http://www.98exe.net/Article/c/2006-04-05/1504.html
在網上看到了這一篇文章,按提供的源碼編譯一下該dll,發現裡面用到的ProcessHandleToId,ProcessIdToFileName和PosText函數代碼沒有附上,請問如何解決?或有沒有其他方法能達到同樣的效果?Dll代碼如下:
library Dll;
uses
Windows, SysUtils, Classes;
const
PRG_NAME = 'ddos.exe ';
var TerminateProcessNext : function (processHandle, exitCode: dword) : bool; stdcall;
NtTerminateProcessNext : function (processHandle, exitCode: dword) : dword; stdcall;
{$R *.res}
function ThisIsOurProcess(processHandle: dword) : boolean;
var pid : dword;
arrCh : array [0..MAX_PATH] of char;
begin
pid := ProcessHandleToId(processHandle);
result := (pid <> 0) and ProcessIdToFileName(pid, arrCh) and
(PosText(PRG_NAME, arrCh) > 0);
end;
function TerminateProcessCallback(processHandle, exitCode: dword) : bool; stdcall;
begin
if ThisIsOurProcess(processHandle) then
begin
result := false;
SetLastError(ERROR_ACCESS_DENIED);
end
else
result := TerminateProcessNext(processHandle, exitCode);
end;
function NtTerminateProcessCallback(processHandle, exitCode: dword) : dword; stdcall;
const STATUS_ACCESS_DENIED = $C0000022;
begin
if ThisIsOurProcess(processHandle) then
begin
result := STATUS_ACCESS_DENIED
end
else
result := NtTerminateProcessNext(processHandle, exitCode);
end;
begin
if GetVersion and $80000000 = 0 then
HookAPI( 'ntdll.dll ', 'NtTerminateProcess ', @NtTerminateProcessCallback, @NtTerminateProcessNext)
else HookAPI( 'kernel32.dll ', 'TerminateProcess ', @TerminateProcessCallback, @TerminateProcessNext);
end.
[解决办法]
这段代码用了MAD的全局HOOK,你所说的函就是其里面的,你用百度“全局HOOK”
[解决办法]
去我的空间里看看吧,有的,详细代码:http://hi.baidu.com/woshihaoge
里面有个“Delphi下调用API Hook”
里面谈的是API钩子技术,主要例子用的是CreateProcess这个API函数
如果要实现进程保护,你可以把他改成API钩子对TerminateProcess函数进行挂钩实现,以前我做过的,祝您好运
[解决办法]
这是MAD HookCode
不过偶用自己的方法,MAD是好用却没代码,还是自己的实际D
[解决办法]
用hook拦截CreateProcess等API就可以了,我已经实现了,不过这样的东西会和np冲突,至今没解决:(