前些天在网上找了个软件, 想学一下脱EPE的壳. 程序是用老王的EPE
V22004810.EPE加壳的.
按照Fly兄的《EncryptPE V2.2005.3.14试炼Service保护方式脱壳》一文的思路, 但总是拦截不到想要的断点. 在EPE1段内下硬件断点或普通断点都拦不到. 连最基本的 BP IsDebuggerPresent 也不起作用(没有拦下).直接被壳把OD给关掉了并继续运行程序.
我的运行环境:
Win2000 SP4,Rollup Sp, IE6
Fly_OllyDbg1.1
已经使用系统管理员身份.
另外, 在Win98下也试过, 不过就无法下硬件断点, 下BP IsDebuggerPresent 命令时提示无法设置断点.
另外, 我想问一下: EPE一旦运行后在系统的system32目录生成的V22004810.EPE文件会在以后的系统中被调用, 看过一些文章介绍这个壳会挂接系统的消息钩子, 当调用LoadLibrary的API时动作. 但我在系统的注册表中找了很多篇还是找不到V22004810的字符串的影子. 能否告诉我它是如何与系统联系上的吗? 我用IceSword查看也查不到相应的进程和消息钩子. 真是郁闷呀!!!
下面我把我的操作过程大致说一次,请各位高手指点一下愚弟.
OD的[调试选项]窗口的[异常]页已经忽略所有异常(全部勾选),[调试]页已经勾选“使用硬件断点……”项
一.加载程序时状态栏自动显示 "Clear Debug Bit OK!",如下图:
二.接着在状态栏上的命令框下断: BP IsDebuggerPresent. 然后一步一步单步跟踪到 0091F28D处,
载入DLL,如下图:
这时内存表显示如下:
当步过0091F28D的CALL后,内存表如下:
三.这时 Ctrl+G转到 711CD000,然后搜索命令序列,找到后在CMP指令处下硬件断点,如下图:
四.然后Alt+F9运行.但OD没有中断下来,程序就已经直接进入了主界面了.
还有一点奇怪的是:用你的FlyODBG程序调试时,EPE没有把OD杀掉,而是下面的界面.
但如果用压缩包内的另一个Ollydbg.EXE时,EPE会杀掉OD的.
请问是什么原因令OD没有在所指定的断点处拦下(IsDebuggerPresent 和硬断点处都没有断下), 真的很惆怅呀. 望乞赐教!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课