iawen 发表于 2007-11-5 22:48:20

脱RPoly主程序

【文章标题】: 脱RPoly主程序
【文章作者】: iawen
【作者邮箱】: [email protected]
【作者QQ号】: 160193626
【软件名称】: RPoly
【下载地址】: 自己搜索下载
【保护方式】: 加壳
【编写语言】: VC++
【使用工具】: OD
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一款木马加壳程序,原文件名太长了,更改后居然提示出错,说文件名不可更改,烦了!

首先用PEid查壳,显示为:
      Enigma Protector V1.1X-V1.3X -> Sukhov Vladimir & Serge N. Markin *

呵呵,没见过,不过没关系,拉出OD载入,先设置选项忽略所有异常,能运行。
重新设置忽略除“非法访问内存”之个的所有异常,并隐藏OD(因为试了一下,会侦测调试器)


载入后,程序停在:
004013CB R>55                  push ebp
004013CC   8BEC                mov ebp,esp
004013CE   83C4 F0             add esp,-10
004013D1   B8 00104000         mov eax,RPoly_ww.00401000

按Shift+F9运行,连续27次,程序运行了起来,重新来过,数次数,结果13次后就运行了起来,有时是17次,留意了一下堆栈,发现每当出现:

0012FE4C   0012FE54指向下一个 SEH 记录的指针
0012FE50   00BCBD85SE处理程序
0012FE54   0012FFE0指向下一个 SEH 记录的指针
0012FE58   00BCBEB1SE处理程序
0012FE5C   0012FF88
0012FE60   00BED12C
0012FE64   00BA0000ASCII "MZP"

ASCII "MZP"时,再按Shift+F9就会运行,这次吸取经验,不数了,就等这个!^@^……
出现后,Ctrl+G,跟随到:00BCBD85,F2下下断,Shift+F9运行:

00BCBD7E   3100                xor dword ptr ds:,eax
00BCBD80   ^ E9 1B4BFFFF         jmp 00BC08A0
00BCBD85   8B4424 0C         mov eax,dword ptr ss:
00BCBD89   8B4C24 04         mov ecx,dword ptr ss:
00BCBD8D   C740 04 00000000    mov dword ptr ds:,0
00BCBD94   C740 08 00000000    mov dword ptr ds:,0
00BCBD9B   C740 0C 00000000    mov dword ptr ds:,0
00BCBDA2   C740 10 00000000    mov dword ptr ds:,0
00BCBDA9   8160 14 F00FFFFF    and dword ptr ds:,FFFF0FF0
00BCBDB0   8160 18 00DC0000    and dword ptr ds:,0DC00
00BCBDB7   C780 B8000000 C4BDB>mov dword ptr ds:,0BCBDC4
00BCBDC1   31C0                xor eax,eax
00BCBDC3   C3                  retn         //F4

取消断点后,在返回处“retn”,按F4运行到返回处,Alt+M打开内存镜像,找到代码段:
   Memory map, 条目 22
   地址=00401000
   大小=00008000 (32768.)
   属主=RPoly_ww 00400000
   区段=
   包含=代码
   类型=Imag 01001002
   访问=R
   初始访问=RWE

F2下断,然后Shift+F9运行,程序直接停在OEP了:
004062F5   55                  push ebp
004062F6   8BEC                mov ebp,esp
004062F8   6A FF               push -1
004062FA   68 48914000         push RPoly_ww.00409148
004062FF   68 2C6E4000         push RPoly_ww.00406E2C
00406304   64:A1 00000000      mov eax,dword ptr fs:
0040630A   50                  push eax
0040630B   64:8925 00000000    mov dword ptr fs:,esp
00406312   83EC 58             sub esp,58
00406315   53                  push ebx
00406316   56                  push esi
00406317   57                  push edi
00406318   8965 E8             mov dword ptr ss:,esp
0040631B   FF15 CC904000       call dword ptr ds:                        ; kernel32.GetVersion


一看就知是VC了,呵呵,Dumped,然后修复,一切都顺顺溜溜,……没什么好补充的了!

加壳程序:
脱壳程序:


--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年11月05日 22:21:41

baby520 发表于 2007-11-7 11:04:09

呵呵 不错

学习了/:good

OEP ===62F5

[ 本帖最后由 baby520 于 2007-11-7 11:11 编辑 ]

backboy 发表于 2007-11-15 15:26:52

谢谢,学学思路!

[ 本帖最后由 backboy 于 2007-11-15 15:32 编辑 ]

dying 发表于 2007-12-15 05:06:04

有点晕~~刚入门~以后慢慢看喽~

huabbs88 发表于 2008-6-5 16:41:00

为什么我这没这地址啊 ASCII "MZP"时,再按Shift+F9就会运行,这次吸取经验,不数了,就等这个!^@^……
出现后,Ctrl+G,跟随到:00BCBD85,F2下下断,Shift+F9运行:
页: [1]
查看完整版本: 脱RPoly主程序