首页
社区
课程
招聘
分享脱未知壳,适合菜鸟练手。多多指正!
发表于: 2005-7-3 12:37 4650

分享脱未知壳,适合菜鸟练手。多多指正!

2005-7-3 12:37
4650
【破文作者】   dfui

【作者主页】   http://dfui.ys168.com/

【 E-mail 】   qxqasdf@163.com

【 作者QQ 】   3374972

【文章题目】   分享一种壳,适合菜鸟

【软件名称】   简易记事本1.9

【下载地址】   http://try.nease.net/bdiary.exe

----------------------------------------------------------------------------------------------
【加密方式】   未知*

【破解工具】   Ollydbg、PEiD、ImportREC 1.6

【软件限制】   30天试用。时间限制

【破解平台】   WinXP SP2

----------------------------------------------------------------------------------------------
【软件简介】

简易日记本是一款用于在电脑上写日记和收集资料的软件,支持常用的文字编辑排版功能,和Word2000操作类似,简单易用。
软件特点:  

    可以记录日记、资料和文件,树状结构显示,直观明了;
    编辑器和RTF格式兼容,可以导入导出Doc,RTF,Html,Txt文件;
    编辑器可以插入表情图标,插入图片,背景图片,可以打印预览;
    可以保存附件;
    丰富的表情图标(QQ,MSN,泡泡......),节点图标自定义;
【文章简介】

第一次脱未知壳。学了好多长时间。从未脱过,试练。有不对的地方还请多多指正。适合练习手工脱。
----------------------------------------------------------------------------------------------
【破解过程】

设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
进入OD来到这里:
008B6082 >  60              PUSHAD
008B6083    E8 00000000     CALL bdiary.008B6088
008B6088    5D              POP EBP
008B6089    81ED 22A54500   SUB EBP,bdiary.0045A522
008B608F    8DBD 1CA54500   LEA EDI,DWORD PTR SS:[EBP+45A51C]
008B6095    81EF 82000000   SUB EDI,82
008B609B    89BD 84A84500   MOV DWORD PTR SS:[EBP+45A884],EDI
008B60A1    8B4F 18         MOV ECX,DWORD PTR DS:[EDI+18]
008B60A4    89FE            MOV ESI,EDI
008B60A6    0377 14         ADD ESI,DWORD PTR DS:[EDI+14]
008B60A9    8B47 10         MOV EAX,DWORD PTR DS:[EDI+10]
008B60AC    E8 2A060000     CALL bdiary.008B66DB
008B60B1    8B4F 24         MOV ECX,DWORD PTR DS:[EDI+24]
008B60B4    89FE            MOV ESI,EDI
008B60B6    0377 20         ADD ESI,DWORD PTR DS:[EDI+20]
008B60B9    8B47 1C         MOV EAX,DWORD PTR DS:[EDI+1C]
008B60BC    E8 1A060000     CALL bdiary.008B66DB
008B60C1    6A 00           PUSH 0
008B60C3    FF95 F4A84500   CALL DWORD PTR SS:[EBP+45A8F4]
008B60C9    8985 24A84500   MOV DWORD PTR SS:[EBP+45A824],EAX
008B60CF    E8 15060000     CALL bdiary.008B66E9
008B60D4    0F82 7F020000   JB bdiary.008B6359
008B60DA    E8 13070000     CALL bdiary.008B67F2
008B60DF    0F82 F7010000   JB bdiary.008B62DC
008B60E5    8BBD 84A84500   MOV EDI,DWORD PTR SS:[EBP+45A884]
008B60EB    68 00040000     PUSH 400
008B60F0    6A 00           PUSH 0
008B60F2    FF95 04A94500   CALL DWORD PTR SS:[EBP+45A904]
008B60F8    09C0            OR EAX,EAX
008B60FA    0F84 DC010000   JE bdiary.008B62DC
008B6100    8985 2CA84500   MOV DWORD PTR SS:[EBP+45A82C],EAX......
...............省略。。F8慢慢来到下面
008B61EE    E8 49060000     CALL bdiary.008B683C
008B61F3    8B95 58A84500   MOV EDX,DWORD PTR SS:[EBP+45A858]
008B61F9    0357 2C         ADD EDX,DWORD PTR DS:[EDI+2C]
008B61FC    83C2 04         ADD EDX,4
008B61FF    8B8D 60A84500   MOV ECX,DWORD PTR SS:[EBP+45A860]
008B6205    2B4F 2C         SUB ECX,DWORD PTR DS:[EDI+2C]
008B6208    83E9 04         SUB ECX,4
008B620B    E8 2C060000     CALL bdiary.008B683C
008B6210    3B47 30         CMP EAX,DWORD PTR DS:[EDI+30]
008B6213    75 15           JNZ SHORT bdiary.008B622A
008B6215    8A47 49         MOV AL,BYTE PTR DS:[EDI+49]
008B6218    08C0            OR AL,AL
008B621A    0F84 BC000000   JE bdiary.008B62DC                       ; 大跳转跟随
来到这里看仔细
008B62DC    8DB5 2CA84500   LEA ESI,DWORD PTR SS:[EBP+45A82C]
008B62E2    8DBD 44A84500   LEA EDI,DWORD PTR SS:[EBP+45A844]
008B62E8    39FE            CMP ESI,EDI
008B62EA    7D 12           JGE SHORT bdiary.008B62FE
008B62EC    8B06            MOV EAX,DWORD PTR DS:[ESI]
008B62EE    83C6 04         ADD ESI,4
008B62F1    09C0            OR EAX,EAX
008B62F3  ^ 74 F3           JE SHORT bdiary.008B62E8
008B62F5    50              PUSH EAX
008B62F6    FF95 08A94500   CALL DWORD PTR SS:[EBP+45A908]
008B62FC  ^ EB EA           JMP SHORT bdiary.008B62E8                ; F4过
008B62FE    8DB5 58A84500   LEA ESI,DWORD PTR SS:[EBP+45A858]
008B6304    8DBD 60A84500   LEA EDI,DWORD PTR SS:[EBP+45A860]
008B630A    39FE            CMP ESI,EDI
008B630C    7D 12           JGE SHORT bdiary.008B6320
008B630E    8B06            MOV EAX,DWORD PTR DS:[ESI]
008B6310    83C6 04         ADD ESI,4
008B6313    09C0            OR EAX,EAX
008B6315  ^ 74 F3           JE SHORT bdiary.008B630A
008B6317    50              PUSH EAX
008B6318    FF95 20A94500   CALL DWORD PTR SS:[EBP+45A920]
008B631E  ^ EB EA           JMP SHORT bdiary.008B630A                ; F4过
008B6320    8DB5 44A84500   LEA ESI,DWORD PTR SS:[EBP+45A844]
008B6326    8DBD 58A84500   LEA EDI,DWORD PTR SS:[EBP+45A858]
008B632C    39FE            CMP ESI,EDI
008B632E    7D 12           JGE SHORT bdiary.008B6342
008B6330    8B06            MOV EAX,DWORD PTR DS:[ESI]
008B6332    83C6 04         ADD ESI,4
008B6335    09C0            OR EAX,EAX
008B6337  ^ 74 F3           JE SHORT bdiary.008B632C
008B6339    50              PUSH EAX
008B633A    FF95 14A94500   CALL DWORD PTR SS:[EBP+45A914]
008B6340  ^ EB EA           JMP SHORT bdiary.008B632C                ; F4过
008B6342    8B85 80A84500   MOV EAX,DWORD PTR SS:[EBP+45A880]
008B6348    09C0            OR EAX,EAX
008B634A    74 0D           JE SHORT bdiary.008B6359
008B634C    896C24 1C       MOV DWORD PTR SS:[ESP+1C],EBP
008B6350    61              POPAD
008B6351    6A 00           PUSH 0
008B6353    FF90 00A94500   CALL DWORD PTR DS:[EAX+45A900]
008B6359    8BBD 84A84500   MOV EDI,DWORD PTR SS:[EBP+45A884]
008B635F    E8 07040000     CALL bdiary.008B676B                     ; F4过
008B6364  ^ 72 E6           JB SHORT bdiary.008B634C                 ; 运行一次(不知为什老是运行)
008B6366    8B85 24A84500   MOV EAX,DWORD PTR SS:[EBP+45A824]
008B636C    0347 28         ADD EAX,DWORD PTR DS:[EDI+28]
008B636F    894424 1C       MOV DWORD PTR SS:[ESP+1C],EAX
008B6373    61              POPAD
008B6374    FFE0            JMP EAX                                   这里就跳了。
跟随。。。来到这里
008B2001    60              PUSHAD
008B2002    E8 03000000     CALL bdiary.008B200A                     ; F8不行F4也不行F7进去就出不来了。
008B2007  - E9 EB045D45     JMP 45E824F7
008B200C    55              PUSH EBP                                   必须用F4来这里。上面两个都启动程序
008B200D    C3              RETN
008B200E    E8 01000000     CALL bdiary.008B2014                     ; F4过
008B2013    EB 5D           JMP SHORT bdiary.008B2072

下面来到这里。。。。
008B2180    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
008B2182    8BC8            MOV ECX,EAX
008B2184    83E1 03         AND ECX,3
008B2187    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
008B2189    5E              POP ESI
008B218A    68 00800000     PUSH 8000
008B218F    6A 00           PUSH 0
008B2191    FFB5 52010000   PUSH DWORD PTR SS:[EBP+152]
008B2197    FF95 51050000   CALL DWORD PTR SS:[EBP+551]
008B219D    83C6 08         ADD ESI,8
008B21A0    833E 00         CMP DWORD PTR DS:[ESI],0
008B21A3  ^ 0F85 1EFFFFFF   JNZ bdiary.008B20C7                      ; F4过
008B21A9    68 00800000     PUSH 8000
008B21AE    6A 00           PUSH 0
008B21B0    FFB5 56010000   PUSH DWORD PTR SS:[EBP+156]
008B21B6    FF95 51050000   CALL DWORD PTR SS:[EBP+551]
008B21BC    8B9D 31050000   MOV EBX,DWORD PTR SS:[EBP+531]
。。。。。。。
008B21C6    8B03            MOV EAX,DWORD PTR DS:[EBX]
008B21C8    8785 35050000   XCHG DWORD PTR SS:[EBP+535],EAX
008B21CE    8B95 22040000   MOV EDX,DWORD PTR SS:[EBP+422]
008B21D4    8B85 2D050000   MOV EAX,DWORD PTR SS:[EBP+52D]
008B21DA    2BD0            SUB EDX,EAX
008B21DC    74 79           JE SHORT bdiary.008B2257                 ; 大跳转跟随
008B21DE    8BC2            MOV EAX,EDX
来到这里。。。。
008B22F6    FFB5 45050000   PUSH DWORD PTR SS:[EBP+545]
008B22FC    FF95 490F0000   CALL DWORD PTR SS:[EBP+F49]
008B2302    85C0            TEST EAX,EAX
008B2304    5B              POP EBX
008B2305    75 6F           JNZ SHORT bdiary.008B2376                ; 大跳转跟随
008B2307    F7C3 00000080   TEST EBX,80000000

来这里008B2376    8907            MOV DWORD PTR DS:[EDI],EAX               ; ntdll.RtlDeleteCriticalSection
008B2378    8385 49050000 0>ADD DWORD PTR SS:[EBP+549],4
008B237F  ^ E9 32FFFFFF     JMP bdiary.008B22B6                      ; F4过
008B2384    8906            MOV DWORD PTR DS:[ESI],EAX
008B2386    8946 0C         MOV DWORD PTR DS:[ESI+C],EAX
008B2389    8946 10         MOV DWORD PTR DS:[ESI+10],EAX
008B238C    83C6 14         ADD ESI,14
008B238F    8B95 22040000   MOV EDX,DWORD PTR SS:[EBP+422]
008B2395  ^ E9 EBFEFFFF     JMP bdiary.008B2285                      ; F4过
008B239A    B8 D4DB2700     MOV EAX,27DBD4
。。。。。。。。。来到这里
008B239F    50              PUSH EAX
008B23A0    0385 22040000   ADD EAX,DWORD PTR SS:[EBP+422]
008B23A6    59              POP ECX
008B23A7    0BC9            OR ECX,ECX
008B23A9    8985 A8030000   MOV DWORD PTR SS:[EBP+3A8],EAX
008B23AF    61              POPAD                                    看到光明了。往下走
008B23B0    75 08           JNZ SHORT bdiary.008B23BA
008B23B2    B8 01000000     MOV EAX,1
008B23B7    C2 0C00         RETN 0C
008B23BA    68 D4DB6700     PUSH bdiary.0067DBD4
008B23BF    C3              RETN
跳转后来到这里。光明一片。。。。。
0067DBD4    55              PUSH EBP                             脱壳在当前进程。
0067DBD5    8BEC            MOV EBP,ESP
0067DBD7    83C4 F0         ADD ESP,-10
0067DBDA    53              PUSH EBX
0067DBDB    B8 44D46700     MOV EAX,bdiary.0067D444
0067DBE0    E8 9397D8FF     CALL bdiary.00407378
0067DBE5    8B1D 0CC66800   MOV EBX,DWORD PTR DS:[68C60C]            ; bdiary.0068DC3C
0067DBEB    8B03            MOV EAX,DWORD PTR DS:[EBX]
0067DBED    E8 1699DFFF     CALL bdiary.00477508

终天搞定了。下面是修复表。入口点偏移了,我这里有提示。然后OEP用:0027DBD4
搜索IAT 获取输入表全部有效。修复完工。
可以正常起用了。用PEID查为DEIPHI6。0  70的编译。
菜鸟可能很幸运。。。。。搞了几天晚上终于搞定了。

----------------------------------------------------------------------------------------------
【破解心得】

看了脱壳的ESP定律。及5种方法。一一试过。还是第一种好用。一步一个脚印准确

----------------------------------------------------------------------------------------------
【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享:)

【版权声明】   本文纯属技术交流, 别无它途。转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
                                                                     文章写于2005-07-03 12:32:48

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

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
先收藏再慢慢学
2005-7-3 14:14
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
3
应该是ASPACK
2005-7-3 15:06
0
雪    币: 21
活跃值: (269)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2005-7-3 21:00
0
雪    币: 21
活跃值: (269)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
如果楼主看一看段名称,就不会说是脱未知壳了
如果只是要脱aspack,esp定律已经够了,程序入口出下hr esp -4
一部分的aspack中断时就到了
008B23AF    61      POPAD                                    看到光明了。往下走
008B23B0    75 08           JNZ SHORT bdiary.008B23BA
008B23B2    B8 01000000     MOV EAX,1
008B23B7    C2 0C00         RETN 0C
008B23BA    68 D4DB6700     PUSH bdiary.0067DBD4
008B23BF    C3              RETN

这个程序只是多硬件中断几次,按f9几次最后还是会来到上面哪个跳入oep的地方,另外也不需要用任何iat修复工具,用ollly带的ollydump不需要改任何选项就可以dump下来可完美执行的程序
虽然楼主这样做有点不负责任,但精神可嘉,比我强,从来没写过任何对大家有用的东西,楼主努力啊,呵呵~
2005-7-3 21:39
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
6
主程序就是加了2层壳,外层为"病毒免疫系统",内层为"Aspack",用ESP定律,双层壳不到1分钟就完全搞定了!!!

BTW:外层的"病毒免疫系统"没有使用"CRC校验代码"这项功能,所以比较容易搞定!
2005-7-3 22:32
0
雪    币: 1264
活跃值: (567)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
主要是菜鸟。所以献丑了。。。。学习中。
下HR esp -4的高呀。不到一分钟。搞定。害的我走了几天路。
2005-7-4 00:10
0
雪    币: 1264
活跃值: (567)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
如果楼主看一看段名称,就不会说是脱未知壳了
如果只是要脱aspack,esp定律已经够了,程序入口出下hr esp -4
一部分的aspack中断时就到了
008B23AF    61      POPAD                                    看到光明了。往下走
008B23B0    75 08           JNZ SHORT bdiary.008B23BA
008B23B2    B8 01000000     MOV EAX,1
008B23B7    C2 0C00         RETN 0C
008B23BA    68 D4DB6700     PUSH bdiary.0067DBD4
008B23BF    C3              RETN

这个程序只是多硬件中断几次,按f9几次最后还是会来到上面哪个跳入oep的地方,另外也不需要用任何iat修复工具,用ollly带的ollydump不需要改任何选项就可以dump下来可完美执行的程序
虽然楼主这样做有点不负责任,但精神可嘉,比我强,从来没写过任何对大家有用的东西,楼主努力啊,呵呵~

不行呀。我试过了,不修复用不了。。启动不了。老是出错。我的系统是XPSP2
2005-7-4 00:14
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
9
内层壳不是UPX吧,极像Aspack
008B23A9    8985 A8030000   MOV DWORD PTR SS:[EBP+3A8],EAX
008B23AF    61              POPAD
008B23B0    75 08           JNZ SHORT bdiary.008B23BA
008B23B2    B8 01000000     MOV EAX,1
008B23B7    C2 0C00         RETN 0C
008B23BA    68 D4DB6700     PUSH bdiary.0067DBD4  //入口
008B23BF    C3              RETN //ASPACK一般都用用retn来跳到入口处的

倒是第一层壳跳到入口处的代码:
008B6364  ^ 72 E6           JB SHORT bdiary.008B634C                 ; 运行一次(不知为什老是运行)
008B6366    8B85 24A84500   MOV EAX,DWORD PTR SS:[EBP+45A824]
008B636C    0347 28         ADD EAX,DWORD PTR DS:[EDI+28]
008B636F    894424 1C       MOV DWORD PTR SS:[ESP+1C],EAX
008B6373    61              POPAD
008B6374    FFE0            JMP EAX

有点像UPX
2005-7-4 01:26
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
10
最初由 Pr0Zel 发布
内层壳不是UPX吧,极像Aspack
008B23A9 8985 A8030000 MOV DWORD PTR SS:[EBP+3A8],EAX
008B23AF 61 POPAD
008B23B0 75 08 JNZ SHORT bdiary.008B23BA
008B23B2 B8 01000000 MOV EAX,1
........


用F8单步跟
2005-7-4 10:42
0
雪    币: 21
活跃值: (269)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 dfui 发布
如果楼主看一看段名称,就不会说是脱未知壳了
如果只是要脱aspack,esp定律已经够了,程序入口出下hr esp -4
一部分的aspack中断时就到了
008B23AF 61 POPAD 看到光明了。往下走
008B23B0 75 08 JNZ SHORT bdiary.008B23BA
........


确实不需要任何工具直接用ollydump插件就可以完整dump下来
原来这是个双层壳呀,呵,没发现,丢人了,不过fly说过,双层壳相当于最里面一层壳
2005-7-7 01:38
0
游客
登录 | 注册 方可回帖
返回
//