如何躲过IsDebuggerpresent 函数的检测,调用加过反调试保护的程序的?
我用winexec(),ShellExecute(),CreateProcess()打开加过反调试保护的程序时老出错。用生成一个批处理的文件方式,在用winexec()调用批处理文件来打来反调试保护的程序是来是出错。但我自己运行批处理文件却可以打开被反调试保护的程序。我看过一个OD(一种手工脱壳工具)的插件HideOD,可以帮助OD躲过IsDebuggerpresent 函数的检测。我不知道他是怎么做到,我在delphi区发贴无人能解。希望能在VC区有所收获,谢谢各位帮忙的大虾了。
我用winexec(),ShellExecute(),CreateProcess()打开加过反调试保护的程序时老出错。用生成一个批处理的文件方式,在用winexec()调用批处理文件来打来反调试保护的程序是来是出错。但我自己运行批处理文件却可以打开被反调试保护的程序。我看过一个OD(一种手工脱壳工具)的插件HideOD,可以帮助OD躲过IsDebuggerpresent 函数的检测。我不知道他是怎么做到,我在delphi区发贴无人能解。希望能在VC区有所收获,谢谢各位帮忙的大虾了。
不过用的也是CreateProcess
http://developer.ccidnet.com/art/322/20030116/36811_1.html
2.hook IsDebuggerpresent!
3.最简单...
因为你已经可以自己运行bat文件载入他,只是还无法在程序中打开那个bat文件来顺利载入它对吧?那是因为他的防DEBUG模块检测到了你当前运行BAT文件的父进程具备某种DEBUG程序的特性,因此不让打开,你试试这样,用一个turbo c/c++或borland C/C++都可以,用汇编也可以,写一个最最简单的语句,就是运行调用你这个bat文件,因为简单可能就可通过检测,如果这样能成功,你再使用一些其它方法来接管这个程序.4.顺利说一下,反debug的技术有很多种,其中一种就是检测载入自身的进程是否存在"非法"特征,我之前成功的改过一个OD版本,使之逃过了一款暴强壳的检测,从而顺利将其载入进行动态跟踪。
我觉得你的问题不是IsDebuggerpresent 的问题应该是那个程序检查到他的父进程不是Explorer.exe造成的你把你的程序文件名改为Explorer.exe试试看吧我猜的如果不成功,你可把那个程序发给我,我可以帮你分析一下
我估计目前只能用hook IsDebuggerpresent来解决问题了。但很多提出了可行的方法,却没有具体的方案,我估计大家也都不清楚该怎么做才好。
http://www.pediy.com/tools/debuggers/ollydbg/plugin.htm
这里面有几个反IsDebuggerpresent 的程序 如hidedbg 0.1 (内含源码),SV_IsDebug14.zip,里面都是带源码的,但都是汇编代码。我头都晕了。希望能有大虾帮忙整理出有用的关键代码。感激不尽。
晕,我用过这招新建了个Explorer.exe程序 再调用那个加过壳的程序还是弹出反调试窗口。我调用的不是1个程序,而是很多不同的工具程序。所用用加壳程序加过反调试保护的都没办法调用。您用ASProtect 把反调试保护选中然后 随便给个程序加壳然后调用都可以看到反调试保护窗口的。
False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
ProcessInfo)
delphi代码,你是怎么调用的?怎么就可以不传入 debug 标志?
试试这个
ZeroMemory(@StartUpInfo, sizeof(StartUpInfo));
ZeroMemory(@ProcessInfo, sizeof(ProcessInfo));
StartUpInfo.cb := sizeof(StartUpInfo);
bCreate := CreateProcess(PChar(strPath), nil, nil, nil, False,
CREATE_SUSPENDED, nil, nil, StartUpInfo, ProcessInfo);
ResumeThread(ProcessInfo.hThread);