-
-
[原创]+[求助]反HOOK API....
-
发表于:
2007-11-18 23:44
6858
-
因为现在的大部分游戏都有反外挂系统了..一般的反外挂系统在ring3级HOOK API..网上搜了又搜反HOOK API的.看的我一头雾水..郁闷的很..
自己安静下来想了想.
比如一个软件.做了全局HOOK .
比如我MessageBoxA弹出一个对话框.
它HOOK MessageBoxA后.无非就是在user32.dll找到函数头.改成跳转到它软件的哪个函数.
突然想到自己做一个user32.dll不就得了??
随后行动.
拷贝个user32.dll.改名字.找到MessageBoxA函数.运行之..结果成功了.但是只成功了一半.不知道为什么弹出MessageBox后.点确定会出现内存错误??郁闷..希望大虾给点提示??
源码如下.
procedure TForm1.Button1Click(Sender: TObject);
type
TCallMeDll = function(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;
var
CallMeDll: TCallMeDll;
FuncPtr: TFarProc;
hDll: THandle;
result: integer;
begin
hDll:=LoadLibrary('msg.dll');
FuncPtr:=GetProcAddress(hDll,'MessageBoxA');
@CallMeDll:=FuncPtr;
if @CallMeDll <> nil then
result:=CallMeDll(handle,'test','test',MB_Ok);
FuncPtr:=nil;
FreeLibrary(hDll);
end;
其实我也知道.这种方法很不好.就算可以OpenProcess一个游戏.但是现在反外挂系统.比如NP.都在ring0动了手脚.光反HOOK API是不够的.总之.这算做一种反HOOK API的一种笨办法吧.
附件中有我编译好的程序..因为包含了user32.dll 所以比较大点..
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课