首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Hook API-之進程保護解决方案

2012-02-23 
Hook API-之進程保護HookAPI-之進程保護http://www.98exe.net/Article/c/2006-04-05/1504.html在網上看到

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冲突,至今没解决:(

热点排行