[Debuggers] OD加强版 自动过anti,不飞不飞

来源:互联网 发布:effective java 微盘 编辑:程序博客网 时间:2024/05/30 05:19

来源:http://www.52pojie.cn/forum.php?mod=viewthread&tid=35713&reltid=15368&pre_pos=9&ext=CB

OD载入程序就自动退出是比较恼人的,还没开始调试呢就退出了,这可让人如何是好。不过初学破解的人一定会遇到这个问题。网上虽然有零星的介绍但都不全面,以下是我总结的一些,希望能对各位初学者有所帮助。
(比如Peid、FI查壳查不到,OD一载入就退出,这极有可能是VMProtect的保护(虚拟机保护),用EXEinfo可以查出来一些版本的VMP,如果有这个提示那就更确定无疑了“Adebugger has been found running in your system.Please, unload it from memory and restart your program”。)
1.更换几个OD试试,OllyICE、Shadow、加强版等
2.用附加的方式加载程序,文件-->附加
,能解决很多问题
3.OD目录下,将475K 的DbgHelp.dll文件换成近1M大小的DbgHelp.dll文件,475K的有溢出漏洞
4.使用StrongOD插件,(StrongOD+原版OD试试)
5.StrongOD中选择CreateAsRestrict
6.尝试命令bp ExitProcess,看能否发现什么线索
7.改变ollydbg.ini中的驱动名称
自己改一下    
DriverName                 -      驱动文件名,设备对象名
DriverKey                     -     和驱动通信的key
HideWindow                 -    是否隐藏窗口,1为隐藏,0为不隐藏
HideProcess                 -     是否隐藏od进程,1为隐藏,0为不隐藏
ProtectProcess             -     是否隐藏保护Od进程,1为保护,0为不保护
8.改OD窗体类名,用的修改版的话一般都改过了,不需要自己再改
方法如下:
主窗体类名:
引用:
VA:004B7218
Offset:000B6018
各子窗体类名:
引用:
VA:004B565B ~ 004B568A
Offset:000B445B ~ 000B448A
改成任意,可以过GetWindow检测
9.手动修改程序“导出表”中的“函数名数目”值。
方法:使用“LordPE”打开要编辑的PE程序,然后依次选择[目录]->[导出表对应的“..”按钮],把“函数名数目”的值减1,并点击“保存”按钮,就OK了。为了好看些,也可以把“函数数目”和“函数名数目”的值都同时减1并保存,效果一样。
   解释:一般情况下EXE不会加“导出表”,如果加了,就应该给出所导出的API函数。当我们打开这类PE程序(EXE版)时,会发现它存在“导出表”,但“导出表”中并没有导出的API函数。同时“函数数目”和“函数名数目”的值都比原PE程序设置的值大了1(如:EXE版“导出表”列表中显示了0个导出的API函数,壳将其“函数数目”和“函数名数目”的值都设置成了1;DLL版“导出表”列表中显示了0xD个导出的API函数,壳将其“函数数目”和“函数名数目”的值都设置成了0xE。)。所以我们将其减1,就OK了。被修改过的PE程序,可以正常运行,不会有任何影响。

   这只是我的一点总结,附加方式加载、替换DBGHELP.DLL、使用StrongOD插件和修改导出表函数名数目的方法是可行的,能够解决一些问题。当然这些方法可能并不全面,也没有深入到理论层次去解释为什么会退出。如果哪位有更好的方法或能够解释退出的原因的,请一定不吝赐教哦。我的一点建议是尽量使用高手们修改过的OD,因为这些OD都解决了原版OD的一些BUG,比如OutputDebugString等漏洞。
   doskey是这样解释anti-debug的,文章中还有一些其它OD使用技巧:
   http://www.pediy.com/bbshtml/BBS5/pediy50412.htm
   让OD轻松躲过“ANTI-DEBUG”
   很多“ANTI-DEBUG”的程序都是在程序开始时来检查是否安装调试器的。用这种特性我们可以轻松的用OD的“Attach”绕过检查部分。如“X语言”,如果你哟内TRW2K/S-ICE/OD直接加载它的话,程序回警告你安装了调试器并结束。但是我们在“X语言”开启后再运行OD,并用“Attach”系上它就就可以了,轻松通过检查。而且在OD系上它后仍然可以用CTRL+A进行分析。

   关于反调试的实现方法请看“脱壳的艺术”一文。

参考文献:
   http://www.unpack.cn/viewthread.php?tid=35013&extra=page%3D1