巨难的问题,delphi区无人能解,只好到vc区求助,分不够再加。

时间:2022-12-13 21:24:51
如何躲过IsDebuggerpresent 函数的检测,调用加过反调试保护的程序的?
我用winexec(),ShellExecute(),CreateProcess()打开加过反调试保护的程序时老出错。用生成一个批处理的文件方式,在用winexec()调用批处理文件来打来反调试保护的程序是来是出错。但我自己运行批处理文件却可以打开被反调试保护的程序。我看过一个OD(一种手工脱壳工具)的插件HideOD,可以帮助OD躲过IsDebuggerpresent 函数的检测。我不知道他是怎么做到,我在delphi区发贴无人能解。希望能在VC区有所收获,谢谢各位帮忙的大虾了。

25 个解决方案

#1


没人知道??
我顶呀。

#2


这也没人知道?

#3


不懂

#4


关注。。

#5


三儿都关注了~~~

#6


不会 学习

#7


帮你顶~ 期待大牛

#8


怎么会用这种反debug呢,你看看ollydbg有插件,点一下就过了,且该函数是一个ring3的对softice没反应啊,用它形同虚设,你看看fly该得那个.....又看了下你的文章,你要实现这个插件吗,就是一个内存补丁啊,修改掉调试器的符号,或hook掉可以让attach process的函数,绕来绕去就是,hook住IsDebuggerpresent ,就行了,还要记住,凡调试在虚拟机中进行,还有就是记住有专门的调试器设备~~~~~~~~~~应该打开你的思路了吧

#9


看看这篇文章:
不过用的也是CreateProcess
http://developer.ccidnet.com/art/322/20030116/36811_1.html

#10


hook IsDebuggerpresent!

#11


学习

#12


1.修改掉调试器的符号
2.hook IsDebuggerpresent!
3.最简单...
因为你已经可以自己运行bat文件载入他,只是还无法在程序中打开那个bat文件来顺利载入它对吧?那是因为他的防DEBUG模块检测到了你当前运行BAT文件的父进程具备某种DEBUG程序的特性,因此不让打开,你试试这样,用一个turbo c/c++或borland C/C++都可以,用汇编也可以,写一个最最简单的语句,就是运行调用你这个bat文件,因为简单可能就可通过检测,如果这样能成功,你再使用一些其它方法来接管这个程序.

4.顺利说一下,反debug的技术有很多种,其中一种就是检测载入自身的进程是否存在"非法"特征,我之前成功的改过一个OD版本,使之逃过了一款暴强壳的检测,从而顺利将其载入进行动态跟踪。

#13


你调试的是什么程序呀?

#14


楼主:
我觉得你的问题不是IsDebuggerpresent 的问题。。。

应该是那个程序检查到他的父进程不是Explorer.exe造成的。。。

你把你的程序文件名改为Explorer.exe试试看吧

我猜的。。。如果不成功,你可把那个程序发给我,我可以帮你分析一下

#15


我要写的是一个管理工具软件类的程序,该程序要调用多种不同工具软件,这些工具软件大部分都是加过壳的。这些加过壳程序用winexec(),ShellExecute(),CreateProcess()直接调用也无法打开。我估计都加了IsDebuggerpresent来检测。
我估计目前只能用hook IsDebuggerpresent来解决问题了。但很多提出了可行的方法,却没有具体的方案,我估计大家也都不清楚该怎么做才好。
http://www.pediy.com/tools/debuggers/ollydbg/plugin.htm 
这里面有几个反IsDebuggerpresent 的程序 如hidedbg 0.1 (内含源码),SV_IsDebug14.zip,里面都是带源码的,但都是汇编代码。我头都晕了。希望能有大虾帮忙整理出有用的关键代码。感激不尽。

#16


to:  xikug(xIkUg[CCG][RCT]) 
 晕,我用过这招新建了个Explorer.exe程序 再调用那个加过壳的程序还是弹出反调试窗口。我调用的不是1个程序,而是很多不同的工具程序。所用用加壳程序加过反调试保护的都没办法调用。您用ASProtect 把反调试保护选中然后 随便给个程序加壳然后调用都可以看到反调试保护窗口的。

#17


ASProtect 自己可以 调用这种加过反调试保护的程序的,但别的程序不可以。当然系统的Explorer.exe 也是可以调用的。但自己写的Explorer.exe 还是不可以。

#18


ASProtect加过壳的程序可以通过CreateProcess运行。。。我做过Loader的。。。可能是你要调用的程序特殊处理过吧。。。是什么工具?可以发给我看看吗?

xikug.xp [at] gmail.com

#19


是个外挂程序 http://219.153.14.84:82/jdbz128.exe

#20


如果只用ASProtect 加壳的话,是可以调用的,但ASProtect 有反调试保护功能,如果把这个功能选上的话,就无法调用了。

#21


你是怎么调用的。。。CreateProcess的时候只要不是传入的Debug标志,壳的IsDebuggerpresent是检测不出来的自己正在被调试的。。。。。。

#22


CreateProcess(nil,  PChar(strPath),  nil,  nil,
False,  IDLE_PRIORITY_CLASS,  nil,  nil,  StartUpInfo,
ProcessInfo) 
delphi代码,你是怎么调用的?怎么就可以不传入 debug 标志?

#23


我也是用delphi的。。。
试试这个
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);

#24


不行,还是一样的。

#25


啥鸡8鸟程序啊。。。

你给你程序下载地址不能下载啊。。。

#1


没人知道??
我顶呀。

#2


这也没人知道?

#3


不懂

#4


关注。。

#5


三儿都关注了~~~

#6


不会 学习

#7


帮你顶~ 期待大牛

#8


怎么会用这种反debug呢,你看看ollydbg有插件,点一下就过了,且该函数是一个ring3的对softice没反应啊,用它形同虚设,你看看fly该得那个.....又看了下你的文章,你要实现这个插件吗,就是一个内存补丁啊,修改掉调试器的符号,或hook掉可以让attach process的函数,绕来绕去就是,hook住IsDebuggerpresent ,就行了,还要记住,凡调试在虚拟机中进行,还有就是记住有专门的调试器设备~~~~~~~~~~应该打开你的思路了吧

#9


看看这篇文章:
不过用的也是CreateProcess
http://developer.ccidnet.com/art/322/20030116/36811_1.html

#10


hook IsDebuggerpresent!

#11


学习

#12


1.修改掉调试器的符号
2.hook IsDebuggerpresent!
3.最简单...
因为你已经可以自己运行bat文件载入他,只是还无法在程序中打开那个bat文件来顺利载入它对吧?那是因为他的防DEBUG模块检测到了你当前运行BAT文件的父进程具备某种DEBUG程序的特性,因此不让打开,你试试这样,用一个turbo c/c++或borland C/C++都可以,用汇编也可以,写一个最最简单的语句,就是运行调用你这个bat文件,因为简单可能就可通过检测,如果这样能成功,你再使用一些其它方法来接管这个程序.

4.顺利说一下,反debug的技术有很多种,其中一种就是检测载入自身的进程是否存在"非法"特征,我之前成功的改过一个OD版本,使之逃过了一款暴强壳的检测,从而顺利将其载入进行动态跟踪。

#13


你调试的是什么程序呀?

#14


楼主:
我觉得你的问题不是IsDebuggerpresent 的问题。。。

应该是那个程序检查到他的父进程不是Explorer.exe造成的。。。

你把你的程序文件名改为Explorer.exe试试看吧

我猜的。。。如果不成功,你可把那个程序发给我,我可以帮你分析一下

#15


我要写的是一个管理工具软件类的程序,该程序要调用多种不同工具软件,这些工具软件大部分都是加过壳的。这些加过壳程序用winexec(),ShellExecute(),CreateProcess()直接调用也无法打开。我估计都加了IsDebuggerpresent来检测。
我估计目前只能用hook IsDebuggerpresent来解决问题了。但很多提出了可行的方法,却没有具体的方案,我估计大家也都不清楚该怎么做才好。
http://www.pediy.com/tools/debuggers/ollydbg/plugin.htm 
这里面有几个反IsDebuggerpresent 的程序 如hidedbg 0.1 (内含源码),SV_IsDebug14.zip,里面都是带源码的,但都是汇编代码。我头都晕了。希望能有大虾帮忙整理出有用的关键代码。感激不尽。

#16


to:  xikug(xIkUg[CCG][RCT]) 
 晕,我用过这招新建了个Explorer.exe程序 再调用那个加过壳的程序还是弹出反调试窗口。我调用的不是1个程序,而是很多不同的工具程序。所用用加壳程序加过反调试保护的都没办法调用。您用ASProtect 把反调试保护选中然后 随便给个程序加壳然后调用都可以看到反调试保护窗口的。

#17


ASProtect 自己可以 调用这种加过反调试保护的程序的,但别的程序不可以。当然系统的Explorer.exe 也是可以调用的。但自己写的Explorer.exe 还是不可以。

#18


ASProtect加过壳的程序可以通过CreateProcess运行。。。我做过Loader的。。。可能是你要调用的程序特殊处理过吧。。。是什么工具?可以发给我看看吗?

xikug.xp [at] gmail.com

#19


是个外挂程序 http://219.153.14.84:82/jdbz128.exe

#20


如果只用ASProtect 加壳的话,是可以调用的,但ASProtect 有反调试保护功能,如果把这个功能选上的话,就无法调用了。

#21


你是怎么调用的。。。CreateProcess的时候只要不是传入的Debug标志,壳的IsDebuggerpresent是检测不出来的自己正在被调试的。。。。。。

#22


CreateProcess(nil,  PChar(strPath),  nil,  nil,
False,  IDLE_PRIORITY_CLASS,  nil,  nil,  StartUpInfo,
ProcessInfo) 
delphi代码,你是怎么调用的?怎么就可以不传入 debug 标志?

#23


我也是用delphi的。。。
试试这个
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);

#24


不行,还是一样的。

#25


啥鸡8鸟程序啊。。。

你给你程序下载地址不能下载啊。。。