首页
社区
课程
招聘
[旧帖] [原创]初学破解--自己破了个EditPlus3.3,分享下!申请邀请码 0.00雪花
发表于: 2011-7-31 15:37 4637

[旧帖] [原创]初学破解--自己破了个EditPlus3.3,分享下!申请邀请码 0.00雪花

2011-7-31 15:37
4637
小弟刚学破解几天!今天刚好来了兴致,Radmasm编译masm32出错的提示定位不知道怎么用,就想到Editplush....下了个3.3英文正式版的!就自己破解试试看!!!----目前只能爆破,分析不出它的算法!----------高手略过...以下是破解笔记!!----如果斑竹大大看到能不能给个激活码我天天挂看雪,刷新,每天才 1 Kx..不是5个,要到啥时候100kx转正啊!

-----------好了废话不多说,上笔记了

1:PEiD        查壳,发现该软件未加壳,先小小的高兴下--在用Ky插件查下算法....OH,十几张!~晕了,哈哈!
2:用OllyDbg载入软件开始破解吧;

-->载入后停在程序的 OEP

00516F10 > $  E8 73740000   call editplus.0051E388
00516F15   .^ E9 79FEFFFF   jmp editplus.00516D93
00516F1A  /$  8BFF          mov edi,edi
00516F1C  |.  51            push ecx
00516F1D  |.  C701 A4955500 mov dword ptr ds:[ecx],editplus.005595A4
00516F23  |.  E8 F6740000   call editplus.0051E41E
00516F28  |.  59            pop ecx
00516F29  \.  C3            retn

-->很显然,这是一个vc++ 8.0以上版本的OEP了,先不管,我们先让程序跑起来,
       
   1. --F9运行
   2. --一运行就出现了一个提示窗口,大概意思是还有 30 天试用期,上面有个 Enter Registation       Code,我们点击它,输入你想要的注册名与注册码.....在点 --Register

---------->方法一:查找字符串,找到 Register 字样,在CPU窗口中跟随,在子程序头下断,点Register后,程序没断下来,证明找错了,没关系咱们换个方法吧;

---------->方法二:点Register后,程序提示错误,注册失败!我们暂时不要关掉这个提示窗口,在OD里面 选 --> 调试 -->暂停,或者直接按键盘的 F12,这样OD就停下来,我们在打开 --查看--堆

栈,或者OD正上方的 K ----

可以看到  --

Address     Stack       Procedure / arguments          Called from            Frame

0012EE60    004D95EF        USER32.MessageBoxW         editplus.004D95E9        0012EE5C

那个MessageBox 的 Text 参数不正是那个错误提示么?哈哈,我们就在那个 Called from 点那个地址ShowCALL,或者直接双击进去!

004D95DA  |> \895D FC       mov [local.1],ebx
004D95DD  |.  FF75 14       push [arg.4]                                ; /Style
004D95E0  |.  FF75 10       push [arg.3]                                ; |Title
004D95E3  |.  FF75 0C       push [arg.2]                                ; |Text
004D95E6  |.  FF75 08       push [arg.1]                                ; |hOwner
004D95E9  |.  FF15 A0785300 call dword ptr ds:[<&USER32.MessageBoxW>]   ; \MessageBoxW
004D95EF  |.  8945 E4       mov [local.7],eax
004D95F2  |.  C745 FC FEFFF>mov [local.1],-2

我们来到子程序头下断,让OD跑起来,F9,在从新注册一遍,这样就断下来了,注意下堆栈窗口,

0012EEB4   00D73910  UNICODE "Invalid registration code.
Please check that you entered exact information.

If you have any problem"
0012EEB8   00B931F8  UNICODE "EditPlus 3"
0012EEBC   00000010
0012EEC0   0012F160  ASCII "111111111111"
0012EEC4   00D73910  UNICODE "Invalid registration code.
Please check that you entered exact information.

If you have any problem"
0012EEC8   0012F194  ASCII "HeartSy"
0012EECC   00D73910  UNICODE "Invalid registration code.
Please check that you entered exact information.

If you have any problem"

咦....用户名跟密码已经明文出现了!~我们直接返回到调用这个子程序的地方,继续在子程序头下断;

这次可以看到 edi = 0012f160 (ascii "1111111111111")刚好是我们的注册码,证明还没到取注册码的地方,继续返回调用的CALL,这次出现的是用户名,还是没到关键的位置,没关系!我们继续,

最后我们跟到了这里:--->我们终于可以单步分析下了;

004ABFB2   .  8D4C24 4C     lea ecx,dword ptr ss:[esp+4C]
004ABFB6   .  51            push ecx
004ABFB7   .  8D95 C8000000 lea edx,dword ptr ss:[ebp+C8]
004ABFBD   .  52            push edx
004ABFBE   .  E8 DDFEFFFF   call editplus.004ABEA0                      ;  取出我们的用户名
004ABFC3   .  83C4 10       add esp,10

004ABFDF   .  8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]
004ABFE3   .  51            push ecx
004ABFE4   .  8D55 74       lea edx,dword ptr ss:[ebp+74]
004ABFE7   .  52            push edx
004ABFE8   .  E8 B3FEFFFF   call editplus.004ABEA0                      ;  取出我们的注册码
004ABFED   .  8BF8          mov edi,eax
004ABFEF   .  8B4424 1C     mov eax,dword ptr ss:[esp+1C]
004ABFF3   .  83C4 10       add esp,10

004AC053   .  8B5C24 14     mov ebx,dword ptr ss:[esp+14]
004AC057   >  57            push edi                                        ; 压入注册码
004AC058   .  53            push ebx                                        ; 压入用户名
004AC059   .  E8 D2F9FFFF   call editplus.004ABA30                      ;  eax == 0  算法
004AC05E   .  83C4 08       add esp,8
004AC061   .  5E            pop esi
004AC062   .  85C0          test eax,eax
004AC064   .  75 26         jnz short editplus.004AC08C
004AC066   .  6A FF         push -1
004AC068   .  6A 10         push 10
004AC06A   .  68 815F0000   push 5F81
004AC06F   .  E8 FE760300   call editplus.004E3772                      ;  出错的CALL,很明显上面的test eax,eax就是一个关键跳了!如果爆破的话,我们就已经成功了!

----------------------------------------------
看到这里我们就成功了3分之一了!爆破的话已经可以成功了!现在我们来分析下它的算法,跟进去004AC059的CALL里;

004ABA30  /$  83EC 10       sub esp,10
004ABA33  |.  A1 84455700   mov eax,dword ptr ds:[574584]
004ABA38  |.  33C4          xor eax,esp
004ABA3A  |.  894424 0C     mov dword ptr ss:[esp+C],eax
004ABA3E  |.  53            push ebx
004ABA3F  |.  55            push ebp
004ABA40  |.  8B6C24 1C     mov ebp,dword ptr ss:[esp+1C]
004ABA44  |.  56            push esi
004ABA45  |.  8B7424 24     mov esi,dword ptr ss:[esp+24]
004ABA49  |.  8BC5          mov eax,ebp
004ABA4B  |.  57            push edi
004ABA4C  |.  8D50 01       lea edx,dword ptr ds:[eax+1]
004ABA4F  |.  90            nop
004ABA50  |>  8A08          /mov cl,byte ptr ds:[eax]
004ABA52  |.  40            |inc eax
004ABA53  |.  84C9          |test cl,cl
004ABA55  |.^ 75 F9         \jnz short editplus.004ABA50
004ABA57  |.  2BC2          sub eax,edx
004ABA59  |.  8BD8          mov ebx,eax
004ABA5B  |.  8BC6          mov eax,esi
004ABA5D  |.  8D50 01       lea edx,dword ptr ds:[eax+1]
004ABA60  |>  8A08          /mov cl,byte ptr ds:[eax]
004ABA62  |.  40            |inc eax
004ABA63  |.  84C9          |test cl,cl
004ABA65  |.^ 75 F9         \jnz short editplus.004ABA60
004ABA67  |.  2BC2          sub eax,edx
004ABA69  |.  8BF8          mov edi,eax
004ABA6B  |.  E8 A0F7FFFF   call editplus.004AB210
004ABA70  |.  53            push ebx
004ABA71  |.  55            push ebp
004ABA72  |.  6A 00         push 0
004ABA74  |.  E8 F7F7FFFF   call editplus.004AB270
004ABA79  |.  0FB7C0        movzx eax,ax
004ABA7C  |.  50            push eax
004ABA7D  |.  8D4C24 20     lea ecx,dword ptr ss:[esp+20]
004ABA81  |.  68 D8B15400   push editplus.0054B1D8                      ;  ASCII "%02X"
004ABA86  |.  51            push ecx
004ABA87  |.  E8 04FAFFFF   call editplus.004AB490
004ABA8C  |.  0FB656 02     movzx edx,byte ptr ds:[esi+2]
004ABA90  |.  0FBE4C24 28   movsx ecx,byte ptr ss:[esp+28]
004ABA95  |.  8D46 02       lea eax,dword ptr ds:[esi+2]
004ABA98  |.  83C4 18       add esp,18
004ABA9B  |.  3BD1          cmp edx,ecx
004ABA9D  |.  74 15         je short editplus.004ABAB4
004ABA9F  |>  5F            pop edi
004ABAA0  |.  5E            pop esi
004ABAA1  |.  5D            pop ebp
004ABAA2  |.  33C0          xor eax,eax
004ABAA4  |.  5B            pop ebx
004ABAA5  |.  8B4C24 0C     mov ecx,dword ptr ss:[esp+C]
004ABAA9  |.  33CC          xor ecx,esp
004ABAAB  |.  E8 8CBA0600   call editplus.0051753C
004ABAB0  |.  83C4 10       add esp,10
004ABAB3  |.  C3            retn
004ABAB4  |>  0FB656 03     movzx edx,byte ptr ds:[esi+3]
004ABAB8  |.  0FBE4C24 11   movsx ecx,byte ptr ss:[esp+11]
004ABABD  |.  3BD1          cmp edx,ecx
004ABABF  |.^ 75 DE         jnz short editplus.004ABA9F
004ABAC1  |.  83C7 FE       add edi,-2
004ABAC4  |.  57            push edi
004ABAC5  |.  50            push eax
004ABAC6  |.  6A 00         push 0
004ABAC8  |.  E8 A3F7FFFF   call editplus.004AB270
004ABACD  |.  0FB7D0        movzx edx,ax
004ABAD0  |.  52            push edx
004ABAD1  |.  8D4424 20     lea eax,dword ptr ss:[esp+20]
004ABAD5  |.  68 D8B15400   push editplus.0054B1D8                      ;  ASCII "%02X"
004ABADA  |.  50            push eax
004ABADB  |.  E8 B0F9FFFF   call editplus.004AB490
004ABAE0  |.  0FB60E        movzx ecx,byte ptr ds:[esi]
004ABAE3  |.  0FBE5424 28   movsx edx,byte ptr ss:[esp+28]
004ABAE8  |.  83C4 18       add esp,18
004ABAEB  |.  3BCA          cmp ecx,edx
004ABAED  |.^ 75 B0         jnz short editplus.004ABA9F
004ABAEF  |.  0FB646 01     movzx eax,byte ptr ds:[esi+1]
004ABAF3  |.  0FBE4C24 11   movsx ecx,byte ptr ss:[esp+11]
004ABAF8  |.  33D2          xor edx,edx
004ABAFA  |.  3BC1          cmp eax,ecx
004ABAFC  |.  8B4C24 1C     mov ecx,dword ptr ss:[esp+1C]
004ABB00  |.  5F            pop edi
004ABB01  |.  0F94C2        sete dl
004ABB04  |.  5E            pop esi
004ABB05  |.  5D            pop ebp
004ABB06  |.  5B            pop ebx
004ABB07  |.  33CC          xor ecx,esp
004ABB09  |.  8BC2          mov eax,edx
004ABB0B  |.  E8 2CBA0600   call editplus.0051753C
004ABB10  |.  83C4 10       add esp,10
004ABB13  \.  C3            retn

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (34)
雪    币: 62
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
支持一下,希望我们都能搞到邀请码~
2011-7-31 15:44
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
3
请在文章标题处注明申请邀请码
2011-7-31 16:08
0
雪    币: 519
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习中。。。。
2011-7-31 16:33
0
雪    币: 166
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
加油吧,一天1KX是比较慢,不过这样才能更珍惜ID啊
2011-7-31 17:09
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主强,写篇文章来申请邀请码,可怜我要挂够100KX,然后去买。唉……
2011-8-1 08:55
0
雪    币: 141
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
继续努力
2011-8-1 09:11
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
加油啊,多发这样的帖子,转正只在须臾间
2011-8-1 09:19
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
恭喜楼主获得邀请码!我是菜鸟,什么时候才能获得邀请码哦
2011-8-1 14:36
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
10
好好学习,天天向上就行了。
2011-8-1 14:45
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不能发程序的吧。。
2011-8-2 20:17
0
雪    币: 1895
活跃值: (1642)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
楼主厉害啊。。。。
2011-8-3 00:53
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
非常好的编辑工具, 但是比较而言总觉得还是Notepad++更好~
2011-8-3 01:09
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不错的破解方式 支持楼主拿到邀请码
2011-8-3 07:24
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
初学破解,学习一下
2011-8-3 11:15
0
雪    币: 190
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
楼主,重启检测还没有破掉呢!!!
2012-9-25 11:08
0
雪    币: 104
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
不错不错,学习了!
2012-9-25 21:05
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
正在学习
2012-9-26 12:27
0
雪    币: 120
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
哇,新手学习哦..
2012-9-26 14:14
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
支持一下!好好学习,天天向上
2012-9-26 19:27
0
雪    币: 17
活跃值: (3743)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
看了,学习学习
2012-9-28 12:56
0
雪    币: 3337
活跃值: (2782)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
向LZ学习
2012-9-28 14:34
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
新人学习学习
2012-9-28 14:43
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
楼主厉害,学习中。
2012-9-28 15:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
求教啊···我自己为啥不行呢··楼主能教我下、。?谢了479118742QQ
2012-9-30 11:38
0
游客
登录 | 注册 方可回帖
返回
//