首页
社区
课程
招聘
[原创]Riijjpack (version 1.0) notepad脱壳分析
发表于: 2007-1-12 20:50 4263

[原创]Riijjpack (version 1.0) notepad脱壳分析

2007-1-12 20:50
4263
【文章标题】: 【原创】Riijjpack (version 1.0) notepad脱壳分析
【文章作者】: 绫濑遥
【作者主页】: www.pediy.com
【软件名称】: Riijjpack (version 1.0) notepad
【下载地址】: http://bbs.pediy.com/showthread.php?s=&threadid=37856
【加壳方式】: Riijjpack
【使用工具】: OD + ImportRec+LordPE
【操作平台】: WinXP
【软件介绍】: Riijj大侠的新壳
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】

用OD载入后停在这里,如果我们在这里使用ESP定理,那么最终将可耻的失败,没办法,只有一步步往下跟
010014D0       55              push ebp
010014D1       8BEC            mov ebp,esp
010014D3       83EC 40         sub esp,40
010014D6       53              push ebx
010014D7       56              push esi
010014D8       57              push edi
010014D9       6A 00           push 0
010014DB       FF15 10200001   call dword ptr ds:[<&KERNEL32.GetModuleHa>; kernel32.GetModuleHandleA
010014E1       8945 C0         mov dword ptr ss:[ebp-40],eax
010014E4       8B45 C0         mov eax,dword ptr ss:[ebp-40]
010014E7       05 00300000     add eax,3000
010014EC       8945 C4         mov dword ptr ss:[ebp-3C],eax
010014EF       8B4D C4         mov ecx,dword ptr ss:[ebp-3C]
010014F2       8B11            mov edx,dword ptr ds:[ecx]
010014F4       8955 EC         mov dword ptr ss:[ebp-14],edx
010014F7       8B45 C4         mov eax,dword ptr ss:[ebp-3C]
010014FA       83C0 04         add eax,4
010014FD       8945 C4         mov dword ptr ss:[ebp-3C],eax
01001500       6A 40           push 40
01001502       68 00301000     push 103000
01001507       8B4D EC         mov ecx,dword ptr ss:[ebp-14]
0100150A       51              push ecx
0100150B       6A 00           push 0
0100150D       FF15 04200001   call dword ptr ds:[<&KERNEL32.VirtualAllo>; kernel32.VirtualAlloc 调用VirtualAlloc申请一块空间
01001513       8945 E8         mov dword ptr ss:[ebp-18],eax
01001516       8B4D EC         mov ecx,dword ptr ss:[ebp-14]
01001519       8B75 C4         mov esi,dword ptr ss:[ebp-3C]
0100151C       8B7D E8         mov edi,dword ptr ss:[ebp-18]
0100151F       8BD1            mov edx,ecx
01001521       C1E9 02         shr ecx,2
01001524       F3:A5           rep movs dword ptr es:[edi],dword ptr ds:>    将压缩数据复制到申请的空间中
01001526       8BCA            mov ecx,edx
01001528       83E1 03         and ecx,3
0100152B       F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[e>
0100152D       8B45 C4         mov eax,dword ptr ss:[ebp-3C]
01001530       0345 EC         add eax,dword ptr ss:[ebp-14]
01001533       8B08            mov ecx,dword ptr ds:[eax]
01001535       894D E4         mov dword ptr ss:[ebp-1C],ecx
01001538       8B55 E4         mov edx,dword ptr ss:[ebp-1C]
0100153B       52              push edx
0100153C       8B45 EC         mov eax,dword ptr ss:[ebp-14]
0100153F       50              push eax
01001540       8D4D E8         lea ecx,dword ptr ss:[ebp-18]
01001543       51              push ecx
01001544       E8 87FDFFFF     call notepad2.010012D0                        解压缩
01001549       83C4 0C         add esp,0C
0100154C       8D55 E4         lea edx,dword ptr ss:[ebp-1C]
0100154F       52              push edx
01001550       8D45 E8         lea eax,dword ptr ss:[ebp-18]
01001553       50              push eax
01001554       E8 F7FDFFFF     call notepad2.01001350
01001559       83C4 08         add esp,8
0100155C       8B4D E8         mov ecx,dword ptr ss:[ebp-18]
0100155F       51              push ecx
01001560       E8 8BFCFFFF     call notepad2.010011F0
01001565       83C4 04         add esp,4
01001568       8945 CC         mov dword ptr ss:[ebp-34],eax
0100156B       8B55 E8         mov edx,dword ptr ss:[ebp-18]
0100156E       52              push edx
0100156F       E8 8CFCFFFF     call notepad2.01001200
01001574       83C4 04         add esp,4
01001577       8B4D C4         mov ecx,dword ptr ss:[ebp-3C]
0100157A       03C8            add ecx,eax
0100157C       894D C8         mov dword ptr ss:[ebp-38],ecx
0100157F       8B55 E8         mov edx,dword ptr ss:[ebp-18]
01001582       52              push edx
01001583       E8 88FCFFFF     call notepad2.01001210
01001588       83C4 04         add esp,4
0100158B       8945 DC         mov dword ptr ss:[ebp-24],eax
0100158E       8D45 F0         lea eax,dword ptr ss:[ebp-10]
01001591       50              push eax
01001592       6A 40           push 40
01001594       8B4D E4         mov ecx,dword ptr ss:[ebp-1C]
01001597       51              push ecx
01001598       8B55 DC         mov edx,dword ptr ss:[ebp-24]
0100159B       52              push edx
0100159C       FF15 00200001   call dword ptr ds:[<&KERNEL32.VirtualProt>; kernel32.VirtualProtect
010015A2       85C0            test eax,eax
010015A4       75 08           jnz short notepad2.010015AE
010015A6       83C8 FF         or eax,FFFFFFFF
010015A9       E9 88000000     jmp notepad2.01001636
010015AE       6A 40           push 40
010015B0       68 00301000     push 103000
010015B5       68 00200000     push 2000
010015BA       6A 00           push 0
010015BC       FF15 04200001   call dword ptr ds:[<&KERNEL32.VirtualAllo>; kernel32.VirtualAlloc
010015C2       8945 E0         mov dword ptr ss:[ebp-20],eax
010015C5       C745 FC A014000>mov dword ptr ss:[ebp-4],notepad2.010014A>
010015CC       B9 00080000     mov ecx,800
010015D1       8B75 C0         mov esi,dword ptr ss:[ebp-40]
010015D4       8B7D E0         mov edi,dword ptr ss:[ebp-20]
010015D7       F3:A5           rep movs dword ptr es:[edi],dword ptr ds:>
010015D9       8B45 FC         mov eax,dword ptr ss:[ebp-4]
010015DC       2B45 C0         sub eax,dword ptr ss:[ebp-40]
010015DF       8B4D E0         mov ecx,dword ptr ss:[ebp-20]
010015E2       03C8            add ecx,eax
010015E4       894D F4         mov dword ptr ss:[ebp-C],ecx
010015E7       8B55 E8         mov edx,dword ptr ss:[ebp-18]
010015EA       52              push edx
010015EB       E8 10FCFFFF     call notepad2.01001200
010015F0       83C4 04         add esp,4
010015F3       8B4D DC         mov ecx,dword ptr ss:[ebp-24]
010015F6       03C8            add ecx,eax
010015F8       894D D0         mov dword ptr ss:[ebp-30],ecx
010015FB       8B55 DC         mov edx,dword ptr ss:[ebp-24]
010015FE       8955 D4         mov dword ptr ss:[ebp-2C],edx
01001601       8B45 E8         mov eax,dword ptr ss:[ebp-18]
01001604       50              push eax
01001605       E8 56FEFFFF     call notepad2.01001460                     这里恢复输入表
0100160A       83C4 04         add esp,4
0100160D       50              push eax
0100160E       52              push edx
0100160F       8B55 D4         mov edx,dword ptr ss:[ebp-2C]
01001612       64:A1 18000000  mov eax,dword ptr fs:[18]
01001618       3E:8B40 30      mov eax,dword ptr ds:[eax+30]
0100161C       3E:8950 08      mov dword ptr ds:[eax+8],edx
01001620       5A              pop edx
01001621       58              pop eax
01001622       FF75 D0         push dword ptr ss:[ebp-30]
01001625       FF75 E4         push dword ptr ss:[ebp-1C]
01001628       FF75 E8         push dword ptr ss:[ebp-18]
0100162B       FF75 DC         push dword ptr ss:[ebp-24]
0100162E       FF75 D0         push dword ptr ss:[ebp-30]
01001631       FF65 F4         jmp dword ptr ss:[ebp-C]                   可疑跳转1,我们跟进去看
01001634       33C0            xor eax,eax
01001636       5F              pop edi
01001637       5E              pop esi
01001638       5B              pop ebx
01001639       8BE5            mov esp,ebp
0100163B       5D              pop ebp
0100163C       C2 1000         retn 10

可疑跳转1来到这里,一开始我以为是系统dll的代码,可是仔细一看,发现不是系统dll的代码,太厉害了
7FF614A0       55              push ebp
7FF614A1       8BEC            mov ebp,esp
7FF614A3       53              push ebx
7FF614A4       56              push esi
7FF614A5       57              push edi
7FF614A6       8B4D 10         mov ecx,dword ptr ss:[ebp+10]
7FF614A9       8B75 0C         mov esi,dword ptr ss:[ebp+C]
7FF614AC       8B7D 08         mov edi,dword ptr ss:[ebp+8]
7FF614AF       8BC1            mov eax,ecx
7FF614B1       C1E9 02         shr ecx,2
7FF614B4       F3:A5           rep movs dword ptr es:[edi],dword ptr ds:>  拷贝数据, 恢复原来的PE头和各个区段
7FF614B6       8BC8            mov ecx,eax
7FF614B8       83E1 03         and ecx,3
7FF614BB       F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[e>
7FF614BD       FF65 14         jmp dword ptr ss:[ebp+14]                   可疑跳转2,我们跟进去看
7FF614C0       5F              pop edi
7FF614C1       5E              pop esi
7FF614C2       5B              pop ebx
7FF614C3       5D              pop ebp
7FF614C4       C3              retn

可疑跳转2来到这里,发现这里好眼熟,可能就是oep
01006420       55              push ebp
01006421       8BEC            mov ebp,esp
01006423       6A FF           push -1
01006425       68 88180001     push notepad2.01001888
0100642A       68 D0650001     push notepad2.010065D0                                ; jmp to msvcrt._except_handler3
0100642F       64:A1 00000000  mov eax,dword ptr fs:[0]
01006435       50              push eax
01006436       64:8925 0000000>mov dword ptr fs:[0],esp
0100643D       83C4 98         add esp,-68
01006440       53              push ebx
01006441       56              push esi
01006442       57              push edi
01006443       8965 E8         mov dword ptr ss:[ebp-18],esp
01006446       C745 FC 0000000>mov dword ptr ss:[ebp-4],0
0100644D       6A 02           push 2
0100644F       FF15 60110001   call dword ptr ds:[1001160]                           ; msvcrt.__set_app_type

这时,我用LordPE来脱壳,我的LordPE是这样选的

以这样的选项选完后直接dump下来,发现一件非常奇妙的事情,居然不用修输入表和oep就能直接跑,并且各个区段也完美的还原了
附上我脱壳后的文件, 还请各位大侠指点

--------------------------------------------------------------------------------
【经验总结】
  能够完成这次脱壳,应该算运气好, Riijj大侠的壳很多地方还看不懂,希望能和大家一起进步
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年01月12日 21:48:25

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
我的更奇怪,只是转存了一个区段就能跑,

7FF614BB           F3:A4           rep     movs byte ptr es:[edi], byte ptr [esi]
7FF614BD         - FF65 14         jmp     dword ptr [ebp+14]                      ; notepad2.01006420

在这个时候转存esi所指区段
上传的附件:
2007-1-12 21:02
0
雪    币: 191
活跃值: (335)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
3
学习了,LZ能说下你怎么想到这么设置的LOADPE吗?
2007-1-12 21:33
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
这个 notepad 我用 riijjpack 加了几次,一层包一层

实验能否正常运行  
2007-1-12 22:23
0
游客
登录 | 注册 方可回帖
返回
//