首页
社区
课程
招聘
[原创]笨笨菜菜脱壳练手六之UPX200W
发表于: 2006-10-6 18:56 3964

[原创]笨笨菜菜脱壳练手六之UPX200W

2006-10-6 18:56
3964
[菜菜打杂]笨笨菜菜脱壳练手六之UPX200W
【破解作者】 EasyStudy

【作者邮箱】 PhantomNet@163.com

【使用工具】 ODICE,LordPE,ImprotREC16F

【破解平台】 Win9x/NT/2000/XP

【软件名称】 UPX200W加壳的win98记事本程序

【加壳方式】 UPX200W

【破解声明】  我是只菜菜鸟,技术不高给新手和想学脱壳的给个示范,希望共同学习!

声明:我是在大大们的基础资料上学习的,谢谢大大们!

//OD进入在这里:
00481B30 >  60              PUSHAD  //知道汇编的朋友们都知道了解出程序是在内存里的。所以是要用这个指令的我们碰到它就找POPAD。。。。基本的心得吧。。。

00481B31    BE 15204500     MOV ESI,upx.00452015
00481B36    8DBE EBEFFAFF   LEA EDI,DWORD PTR DS:[ESI+FFFAEFEB]
00481B3C    57              PUSH EDI
00481B3D    83CD FF         OR EBP,FFFFFFFF
00481B40    EB 10           JMP SHORT upx.00481B52  //跳到主程序

//F8就跟了。。往往大大们说的找特征代码就可以找到OEP但是我习惯了F8。。因为了我碰到的壳全是变态壳根本就不是,查到的。。

00481C6E    50              PUSH EAX
00481C6F    83C7 08         ADD EDI,8
00481C72    FF96 B0130800   CALL DWORD PTR DS:[ESI+813B0]  //这里我看到了一个API

//继续F8

00481C87    FF96 B4130800   CALL DWORD PTR DS:[ESI+813B4]            ; kernel32.GetProcAddress

//看到这样的代码表示API正在解压缩中。。。

00481C87    FF96 B4130800   CALL DWORD PTR DS:[ESI+813B4]
00481C8D    09C0            OR EAX,EAX
00481C8F    74 07           JE SHORT upx.00481C98
00481C91    8903            MOV DWORD PTR DS:[EBX],EAX
00481C93    83C3 04         ADD EBX,4
00481C96  ^ EB E1           JMP SHORT upx.00481C79
00481C98    FF96 BC130800   CALL DWORD PTR DS:[ESI+813BC]

也许以前没说清楚。。像这样的循环就可以直接下断在00481C98,结果程序运行结束,下一行做断点。。看到上面代码里有跳下一行的,不是这里。。然后F9就到了跳过了很多麻烦。。老按F8也不是个事。。

00481C9E    8BAE B8130800   MOV EBP,DWORD PTR DS:[ESI+813B8]         ; kernel32.VirtualProtect
有人说可以把这个API当做喜欢的。。我也是了
实际可以把下面当作特征代码了

00481CB7    8D87 9F010000   LEA EAX,DWORD PTR DS:[EDI+19F]
00481CBD    8020 7F         AND BYTE PTR DS:[EAX],7F
00481CC0    8060 28 7F      AND BYTE PTR DS:[EAX+28],7F
00481CC4    58              POP EAX
00481CC5    50              PUSH EAX
00481CC6    54              PUSH ESP
00481CC7    50              PUSH EAX
00481CC8    53              PUSH EBX
00481CC9    57              PUSH EDI
00481CCA    FFD5            CALL EBP
00481CCC    58              POP EAX
00481CCD    61              POPAD
00481CCE    8D4424 80       LEA EAX,DWORD PTR SS:[ESP-80]
00481CD2    6A 00           PUSH 0
00481CD4    39C4            CMP ESP,EAX
00481CD6  ^ 75 FA           JNZ SHORT upx.00481CD2
00481CD8    83EC 80         SUB ESP,-80
00481CDB  - E9 30F5F7FF     JMP upx.00401210

//我想这里是OEP了。。可是感觉很不像也。。。但是API函数显示正常了。。那就算是吧。。
00401210    55              PUSH EBP
00401211    89E5            MOV EBP,ESP
00401213    83EC 14         SUB ESP,14
00401216    6A 01           PUSH 1
00401218    FF15 E0E24700   CALL DWORD PTR DS:[47E2E0]               ; msvcrt.__set_app_type
0040121E    E8 EDFEFFFF     CALL upx.00401110
00401223    8DB6 00000000   LEA ESI,DWORD PTR DS:[ESI]
00401229    8DBC27 00000000 LEA EDI,DWORD PTR DS:[EDI]
00401230    55              PUSH EBP

//DUMP程序。。。

脱壳为593KB。。。
估计差不多。。。

我发现这个UPX直接脱了。。不需要修复就很好了。。。修复了一下到是出错了嘿嘿。。。。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1667
活跃值: (286)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
我的心得就是压缩壳都可以跟到OEP,保护壳就不行了..
再碰到有暗桩的就根本不行!变态的壳我一个还没脱下来...
2006-10-6 18:57
0
游客
登录 | 注册 方可回帖
返回
//