首页
社区
课程
招聘
[原创]EmEditor 12.0.10 爆破简单分析
2013-2-26 22:39 4719

[原创]EmEditor 12.0.10 爆破简单分析

2013-2-26 22:39
4719
【标题】EmEditor 12.0.10 爆破简单分析
【作者】卡卡依
【语言】VC9
【保护】无壳
【难度】简单
【工具】ollydbg
【简介】一个不用多说的强大的文件编辑工具,载入大size文件速度完胜UltraEdit。
【正文】
           本来12.0.10以下的版本用CRD发布的那个注册机十分完美的,不知道为什么下了12.0.10版后注册会提示激活时有错误,没办法,虽然技术很烂也只能硬着头皮上,貌似没什么人破解但是自己又想用,加上泡看雪这么久没发什么帖子,所以就贡献一下皮毛,请大大指点,如果能分析出算法的话,在下实在有点无力,被算法函数的jmp跳的想吐了。
           首先OD载入emeditor的12.0.10版,F9直接让程序起来,之后程序会弹出一个需要注册的窗口,点击输入激活码,弹出用户名和KEY的注册框,好了,回到OD右键->search for->name in all modules,找到下面红色字位置双击去到函数入口:
77D23D3A USER32     .text      Export  (  DefDlgProcW
77D242ED USER32     .text      Export  (  SetForegroundWindow
[COLOR="Red"]77D24305 USER32     .text      Export  (  GetDlgItemTextW[/COLOR]
77D2436E USER32     .text      Export  (  GetDlgItem
77D245BB USER32     .text      Export  (  DrawStateW

此时我们并不知道程序是从哪里调用了到该函数的,没关系,我们看emeditor应该已经弹出提示框说未注册,可以选择输入激活码,我们填写好名字,激活码随便输入什么然后确定,od断点响应,鼠标点一下红色位置后F4->F8
77D24305 >  8BFF            mov     edi, edi
77D24307    55              push    ebp
77D24308    8BEC            mov     ebp, esp
77D2430A    FF75 0C         push    dword ptr [ebp+C]
77D2430D    FF75 08         push    dword ptr [ebp+8]
77D24310    E8 59000000     call    GetDlgItem
77D24315    85C0            test    eax, eax
77D24317    0F84 14590200   je      77D49C31
77D2431D    FF75 14         push    dword ptr [ebp+14]
77D24320    FF75 10         push    dword ptr [ebp+10]
77D24323    50              push    eax
77D24324    E8 A4620000     call    GetWindowTextW                   ; Get imput key
77D24329    5D              pop     ebp
[COLOR="red"]77D2432A    C2 1000         retn    10[/COLOR]

这样我们就来到了调用这个函数的位置了,看下逻辑是比较简单的,看了注释其实很多方法就可以实现crack了,我的方法是修改红色位置为mov eax, 1,此时无论你输入的是什么激活码都可以成功通过。
6DBE3886    8B35 9023BF6D   mov     esi, dword ptr [6DBF2390]        ; USER32.GetDlgItemTextW
6DBE388C    6A 1E           push    1E
6DBE388E    8D4424 10       lea     eax, dword ptr [esp+10]
6DBE3892    50              push    eax
6DBE3893    68 43060000     push    643
6DBE3898    57              push    edi
6DBE3899    FFD6            call    esi
6DBE389B    6A 28           push    28
6DBE389D    8D4424 4C       lea     eax, dword ptr [esp+4C]
6DBE38A1    50              push    eax
6DBE38A2    68 F3030000     push    3F3
6DBE38A7    57              push    edi
6DBE38A8    FFD6            call    esi             ; 这里调用上面GetDlgItemTextW函数
6DBE38AA    66:395C24 0C    cmp     word ptr [esp+C], bx             ; Compare first character(对比第一个字母,必须是B开头)
6DBE38AF    0F84 63010000   je      6DBE3A18
6DBE38B5    6A 0C           push    0C
6DBE38B7    8D4424 10       lea     eax, dword ptr [esp+10]
6DBE38BB    50              push    eax
[COLOR="red"]6DBE38BC    E8 3C190000     call    6DBE51FD[/COLOR]                         ; verify key is it valid(key验证函数,里面就是一个硕大的迷宫)
6DBE38C1    83F8 01         cmp     eax, 1                           ; 1 is registered success(1表示注册成功,不成功就会跳到下面,不同的返回有不同的提示)
6DBE38C4    75 50           jnz     short 6DBE3916
6DBE38C6    8D9424 98000000 lea     edx, dword ptr [esp+98]
6DBE38CD    B9 FC93BF6D     mov     ecx, 6DBF93FC                    ; UNICODE "eeadmin.exe"
6DBE38D2    E8 BC0EFFFF     call    6DBD4793


最后希望有能力的大大如果闲的话,能够跟到6DBE51FD函数里面去分析出算法,我完全被jmp晕了~~~ ,目前所知道的是return是3,应该是修改了某个小部分的算法导致老的算号器计算的激活码都是错误的,函数6DBE51FD的跳转十分频繁,有跟过两天,这里给出一些已经跟到的内容希望对有兴趣的朋友一些参考,进入函数后会在edi+4C处先初始化一个跳转表,然后每次都是通过命令:
jmp dword ptr [edi+eax*4]

进行不同算法逻辑的跳转,算法开始看到esp偏移大概0x250位置处生成一个表,内存如下所示:
00CCE260  42 00 53 00 34 00 56 00 39 00 4E 00 41 00 43 00  B.S.4.V.9.N.A.C.
00CCE270  44 00 4B 00 57 00 45 00 50 00 58 00 32 00 54 00  D.K.W.E.P.X.2.T.
00CCE280  33 00 59 00 38 00 46 00 51 00 4A 00 4C 00 55 00  3.Y.8.F.Q.J.L.U.
00CCE290  35 00 48 00 5A 00 36 00 52 00 4D 00 37 00 47 00  5.H.Z.6.R.M.7.G.
00CCE2A0  53 00 34 00 56 00 39 00 41 00 43 00 4B 00 57 00  S.4.V.9.A.C.K.W.
00CCE2B0  45 00 50 00 58 00 32 00 54 00 33 00 59 00 42 00  E.P.X.2.T.3.Y.B.
00CCE2C0  38 00 46 00 51 00 4A 00 4C 00 55 00 35 00 48 00  8.F.Q.J.L.U.5.H.
00CCE2D0  5A 00 36 00 52 00 4D 00 37 00 4E 00 44 00 47 00  Z.6.R.M.7.N.D.G.
00CCE2E0  53 00 34 00 56 00 4E 00 42 00 41 00 4B 00 57 00  S.4.V.N.B.A.K.W.
00CCE2F0  45 00 50 00 32 00 44 00 35 00 54 00 33 00 59 00  E.P.2.D.5.T.3.Y.
00CCE300  38 00 46 00 51 00 4A 00 4C 00 55 00 43 00 48 00  8.F.Q.J.L.U.C.H.
00CCE310  5A 00 36 00 52 00 4D 00 37 00 47 00 39 00 58 00  Z.6.R.M.7.G.9.X.
00CCE320  34 00 42 00 57 00 45 00 50 00 53 00 32 00 44 00  4.B.W.E.P.S.2.D.
00CCE330  35 00 54 00 33 00 59 00 38 00 4E 00 46 00 51 00  5.T.3.Y.8.N.F.Q.
00CCE340  4A 00 4C 00 55 00 43 00 56 00 48 00 5A 00 36 00  J.L.U.C.V.H.Z.6.
00CCE350  52 00 4D 00 41 00 4B 00 37 00 47 00 39 00 58 00  R.M.A.K.7.G.9.X.
00CCE360  56 00 4E 00 32 00 54 00 59 00 38 00 46 00 42 00  V.N.2.T.Y.8.F.B.
00CCE370  53 00 51 00 50 00 58 00 4A 00 43 00 4C 00 41 00  S.Q.P.X.J.C.L.A.
00CCE380  55 00 35 00 48 00 5A 00 33 00 36 00 44 00 52 00  U.5.H.Z.3.6.D.R.
00CCE390  4D 00 37 00 34 00 47 00 45 00 39 00 57 00 4B 00  M.7.4.G.E.9.W.K.
00CCE3A0  56 00 4E 00 43 00 44 00 57 00 32 00 54 00 33 00  V.N.C.D.W.2.T.3.
00CCE3B0  59 00 38 00 46 00 42 00 53 00 51 00 45 00 50 00  Y.8.F.B.S.Q.E.P.
00CCE3C0  58 00 4A 00 4C 00 41 00 55 00 35 00 48 00 5A 00  X.J.L.A.U.5.H.Z.
00CCE3D0  36 00 52 00 4D 00 37 00 34 00 47 00 39 00 4B 00  6.R.M.7.4.G.9.K.

但是始终我都没分析出把key传入进来后是怎么用的,以为jmp实在是多到让人想仍鼠标~可能是我才疏学浅,如果哪位大大解密了key希望能给出分析,在下先谢了!

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 185
活跃值: (405)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fireworld 2013-2-27 08:43
2
0
我试了下 网上的一个最新注册机貌似可以注册成功,上传到网盘了

http://pan.baidu.com/share/link?shareid=399291&uk=2919631344
雪    币: 212
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
卡卡依 2013-2-27 09:28
3
0
灰常感谢
游客
登录 | 注册 方可回帖
返回