古老的INT 2D检测调试器
从某外国的人的汇编代码移植过来的,对StrongOD无效。。。很久没在WIN32底层版发贴,当灌水了。。。
#include <Windows.h>
int main()
{
char str0[]="Debugger not detected!";
char str1[]="Debugger detected!";
char str2[]="Check Debugger";
PVOID p=(PVOID)GetProcAddress(LoadLibraryW(L"user32.dll"),"MessageBoxA");
system("pause");
__try
{
__asm //check debugger
{
int 0x2d
nop
}
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
__asm //Debugger not detected!
{
xor eax,eax
push eax
lea eax,str2
push eax
lea eax,str0
push eax
xor eax,eax
push eax
call p
}
goto end;
}
__asm //Debugger detected!
{
xor eax,eax
push eax
lea eax,str2
push eax
lea eax,str1
push eax
xor eax,eax
push eax
call p
}
end:
return 0;
}
顶 sb666 发表于 2011-8-8 19:39 static/image/common/back.gif
vb版
VERSION 5.00
Begin VB.Form Form1
还有一个绝招,强行置顶,挡住OD的界面。
当然,别人HOOK SetWindowPos这招就废了。 Tesla.Angela 发表于 2011-8-10 16:26 static/image/common/back.gif
还有一个绝招,强行置顶,挡住OD的界面。
当然,直接HOOK SetWindowPos也行。
你这两个都不现实,因为你是对其它进程操作,这个可以被轻易BAN掉。
有个鬼佬说,自己调试自己,就能防止被其它进程调试。
我没有试过,你试试吧。 sb666 发表于 2011-8-8 19:39 static/image/common/back.gif
vb版
VERSION 5.00
Begin VB.Form Form1
从唯物主义的观点看,无论StrongOD再怎么NB,也不可能做到让程序在被调试时和没有被调试时一模一样。
可以检测时间,如果在注册时,某段本需要只十几毫秒来执行的代码竟然用了大于1秒钟,即可认为被调试,直接退出即可。这个在VB里用两次TIMER函数的返回值相减取绝对值即可。 sb666 发表于 2011-8-8 19:39 static/image/common/back.gif
vb版
VERSION 5.00
Begin VB.Form Form1
"在运行到关键代码时挂起所有进程“这个某大型游戏就是这么搞的
别人可以不让你挂起。
另外下次回帖最好不要使用“点评”,否则搞得我好像在自言自语。。。 sb666 发表于 2011-8-12 12:28 static/image/common/back.gif
用驱动操作调度表呢?看谁能阻止。有些游戏都有些病态了,比如腾讯那个反外挂,挂钩一大堆钩子,处理超差 ...
对付钩子最好的办法是镜像内核。
页:
[1]