首页
社区
课程
招聘
EasyBoot5.03脱壳+暴破
发表于: 2004-11-17 09:35 9019

EasyBoot5.03脱壳+暴破

2004-11-17 09:35
9019

【破解作者】 lelfei
【作者邮箱】 lelfei#sina.com
【使用工具】 Peid0.92,FI3.01,OllyDBG1.10,LordPE,UltraEdit,...
【破解平台】 Win2000
【软件名称】 EasyBoot 5.0.3.426 , 2004年9月22日
【下载地址】 http://cn.ezbsystems.com
【软件简介】 EasyBoot是一款集成化的中文光盘启动菜单制作工具,它可以制作光盘启动菜单、自动生成启动文件、并生成可启动ISO文件。只要通过CD-R/W刻录软件即可制作完全属于自己的启动光盘。
【软件大小】 2.40M
【加壳方式】 未知
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

一、脱壳:

观察:

用Peid和FI侦察,发现壳为“ASPack 2.12 -> Alexey Solodovnikov”,但实际并非如此。

下手:

用Fly修改的OllyDBG1.10载入程序,停在入口处:

005AB001 E>pushad                      <--程序入口点
005AB002   call EasyBoot.005AB00A
005AB007   jmp 45B7B4F7
005AB3A9   mov dword ptr ss:[ebp+3A8],eax
005AB3AF   popad                             ;<--F4来到这里
005AB3B0   jnz short EasyBoot.005AB3BA
005AB3B2   mov eax,1
005AB3B7   retn 0C
005AB3BA   push EasyBoot.00401428            ;可以看见伪OEP了
005AB3BF   retn                              ;返回到 00401428 (EasyBoot.00401428)

00401428   jmp short EasyBoot.0040143A            ;<--伪OEP入口
0040142A   db 66                                  ;  CHAR 'f'
0040142B   db 62                                  ;  CHAR 'b'
0040142C   db 3A                                  ;  CHAR ':'
0040142D   db 43                                  ;  CHAR 'C'
0040142E   db 2B                                  ;  CHAR '+'
0040142F   db 2B                                  ;  CHAR '+'
00401430   db 48                                  ;  CHAR 'H'
00401431   db 4F                                  ;  CHAR 'O'
00401432   db 4F                                  ;  CHAR 'O'
00401433   db 4B                                  ;  CHAR 'K'
00401434   nop
00401435   db E9
00401436   dd offset EasyBoot.___CPPdebugHook
0040143A   mov eax,dword ptr ds:[50708B]
0040143F   shl eax,2

发现伪OEP处的代码并不像我们常见的程序入口点代码,继续往下跟:

0040143A   mov eax,dword ptr ds:[50708B]
0040143F   shl eax,2
00401442   mov dword ptr ds:[50708F],eax
00401447   push edx
00401448   push 0                               ; /pModule = NULL
0040144A   call EasyBoot.00506066               ; \GetModuleHandleA
0040144F   mov edx,eax
00401451   call EasyBoot.004E303C
00401456   pop edx
00401457   call EasyBoot.004E2FA0
0040145C   call EasyBoot.004E307C
00401461   push 0                               ; /Arg1 = 00000000
00401463   call EasyBoot.004E4690               ; \EasyBoot.004E4690
00401468   pop ecx
00401469   push EasyBoot.00507034
0040146E   push 0                               ; /pModule = NULL
00401470   call EasyBoot.00506066               ; \GetModuleHandleA
00401475   mov dword ptr ds:[507093],eax
0040147A   push 0
0040147C   jmp EasyBoot.004EE16C                ;<--这里跳向真正的OEP
00401481 E>jmp EasyBoot.004E46DC

004EE16C   push ebp                    ;<--真实的OEP,观察这里的代码
004EE16D   mov ebp,esp
004EE16F   add esp,-0C
004EE172   push ebx
004EE173   push esi
004EE174   push edi
004EE175   mov esi,dword ptr ss:[ebp+8]
004EE178   mov eax,dword ptr ds:[esi+10]
004EE17B   and eax,1
004EE17E   mov dword ptr ds:[51F1A0],eax
004EE183   call EasyBoot.004EADB4
00506FF0 1>mov dword ptr ss:[esp+4],fix_dump.00507034   ;<--恢复堆栈数据
00506FF8   jmp fix_dump.004EE16C                        ;<--跳到真正的OEP

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 1775
活跃值: (1856)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ok
2004-11-17 10:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
虽然我是采鸟,刚刚来到,看的不太明白,但是强烈的顶一下。
2004-11-17 20:16
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wdx
4
好,详细
2004-11-17 21:00
0
雪    币: 267
活跃值: (235)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
精彩啊!!!!
真是精彩!
2004-11-17 23:00
0
雪    币: 97697
活跃值: (200819)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持!!!
2004-11-17 23:22
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主的文章和签名都很精彩,赞~~
2004-11-21 15:31
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
程序在 00401428   jmp short EasyBoot.0040143A  ;<--伪OEP入口
处修复也可以正常运行,不知有什么问题?
2004-11-21 22:04
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
9
修正一个错误By 二哥 weiyi75

壳确实是Aspack2.12

程序是BC++

Esp定律或懒人用Aspack2.12脚本轻松到达,平时注意多修炼五种语言入口特征码

00401428    /EB 10                jmp short EasyBoot.0040143A            ; OEP To Get,Please dumped it,Enjoy!
0040142A    |66:623A              bound di,dword ptr ds:[edx]
0040142D    |43                   inc ebx
0040142E    |2B2B                 sub ebp,dword ptr ds:[ebx]
00401430    |48                   dec eax
00401431    |4F                   dec edi
00401432    |4F                   dec edi
00401433    |4B                   dec ebx
00401434    |90                   nop
00401435   -|E9 98705000          jmp 009084D2
0040143A    \A1 8B705000          mov eax,dword ptr ds:[50708B]
0040143F     C1E0 02              shl eax,2
00401442     A3 8F705000          mov dword ptr ds:[50708F],eax
00401447     52                   push edx
00401448     6A 00                push 0
0040144A     E8 174C1000          call EasyBoot.00506066                 ; jmp to kernel32.GetModuleHandleA

......................................................................................

运行ImportREC1.6,选择当前的进程“EasyBoot.exe”,填入OEP:00001428,获取输入表,Rva 0014E2E8,Size 000001F0

这个值太小了,而且中间有垃圾指针,导致IR识别错误,可以OD dd 0054E2E8 往下看,也可以大面积剪刀法,填入Size 1000

获取IAT

然后显示无效指针,全部剪掉,修复脱壳程序,运行正常。

爆破过程不错,学习。
2004-11-23 10:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我就不行了哟,只知道用脱壳工具脱哟。
2004-11-23 22:25
0
雪    币: 3246
活跃值: (374)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
11
楼主的破解好象是错误的吧?patch的是对白名单的一处校验而不是sn校验。。。而且这个软件的“非裸体”版本有N多这样的校验的(即暗桩):D
2004-11-24 12:29
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
12
好长时间没上网了,今天翻出来又让我长了见识。。。。

to 二哥 weiyi75:
感谢你指出错误!!五种程序入口点我就知道二种,汗~~
最近遇到好几个这类输入表错误的问题,我还认为是不是出一种新壳了。。。。
你说的大面积剪刀法是不是与我所用的搜索所有的CALL [XXXX]方法类似?这类IAT问题是不是都可以用你说的方法解决?

to blowfish :不知你说的是什么情况下遇到的?脱壳后只能找到那四处。并且在我的电脑上运行没有遇到过问题。如果需要我可以把我爆后的版本发可以你,帮我检测一下

to illiperson :修复OEP并不一定要在真正的OEP处,只要能恢复内在中的数据和堆栈,OEP在哪里并不重要
这是我的理解,如有错误请指出
2004-11-28 15:22
0
雪    币: 3246
活跃值: (374)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
13
在IDA里面找一下引用到下面两处标志的所有地方,检查一下看看

00401AFD  mov dword ptr ds:[5145C0],5000    ;置注册标志位2
00401B07  mov dword ptr ds:[50B5F4],5500    ;置注册标志位3
2004-11-28 16:16
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
14
今天又来上网了。。。。

请教blowfish :
你说的引用是否包含那些检查注册标志位的地方?那样子就会很多了,特别是注册标志位1和2的引用。

另附程序检查注册码的步骤:

1.启动时检查注册表,如Username存在则执行注册判断过程,注册码正确时置注册标志位1、2、3。
2.运行限制功能时先检查注册标志位1,如注册则取Username及SN,重复步骤1。
3.程序还有一处地方,先检查注册标志位1和2,如正确则置注册标志位3,之后还会检查注册标志位3,如符合则重复步骤1。(仅凭记忆,没有对照源程序,大概是这样)

其中第3点是我将置标志位的两句分开搜索时发现的。

以上是小弟的见解,还请多多指教!!
2004-12-4 09:15
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
学习中:) :)
2004-12-4 13:23
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
16
我不太懂,只能看懂思路。

五种语言入口特征码请详解
2004-12-4 15:47
0
游客
登录 | 注册 方可回帖
返回
//