• 标 题:幻影2。0b3的脱壳 (1千字)
  • 作 者:yahoo007
  • 时 间:2002-5-31 1:58:34
  • 链 接:http://bbs.pediy.com

幻影2。0b3的脱壳

该版有了很大变化,代码得到优化,运行速度很快,是一个相当不错的加壳
软件。

1。anti-debug

主要有:1)通过改变int03的中断门,解码
        2)程序启动时用pushf设置一个暗桩解码。单步通过这pushf,后面的解码就会错误。
        3)通过int0和int41的中断门,xor,判断是否有调试软件
        4)createfile判断常用的调试和侦察软件
        5)在ring0,清除drx寄存器
        6)运用in、out指令,判断调试跟踪(这里的原理我还没有弄明白)
注册码的计算及比较在壳中。

2。脱壳

用trw2000装载运行dbpe.exe,躲过上述anti-debug,在7b703d cmp [esi],00处停下,从这里开始
解码被加壳程序,当解码完毕,用pedump dump.exe出文件。这时dump.exe中包含了正确的输入表,
输入表的RVA是ca000.不过在IMAGE_IMPORT_DESCRIPTOR中,OriginalFirstThunk、Name、FirstThunk三项
已加密,它的加密很简单,先NOT,再分别与02020202、01010101、03030303 XOR后,就是正确的RVA了。手工
将这些加密的还原回来。

它的OEP是401000(RVA 1000),Import Tatle的RVA是ca000,用pe编辑器将dump.exe的这两个值改回来。

这样修改dump.exe后,还不行。原壳从7B7620处开始,将对4b7b0c后的代码进行处理。跟踪后发现,它将
IAT中的函数指针作了处理。在这里,适当将原代码作一下处理,我是将 mov ebx,[ebx] nop掉,再将mov [edi],esi改
为 mov [edi],ebx.这样改后,等这段代码处理完毕(计数寄存器ecx为零)后,将4b7b0c后的a20字节代码写入一个文件
1.bin,退出原程序dbpe.exe。将1.bin中的数据写进dump.exe的offset b7b0c开始的a20个字节中。

dump.exe经过这样处理,已成功脱壳并修复输入表。

幻影新版真的不错。。。。建议去使用和注册。