冷月孤心 发表于 2014-12-1 11:45:02

文本编辑XXredit绿色版简单爆破

本帖最后由 冷月孤心 于 2015-1-20 11:47 编辑

不喜勿回,回帖请注意言辞.
【文章标题】: everedit绿色版简单爆破
【文章作者】: 冷月孤心
【作者邮箱】: [email protected]
【作者QQ号】: 55825450
【软件大小】: 2.28 MB
【下载地址】: 自己搜索下载
【使用工具】: PYG_ODBG
【操作平台】: XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
载入软件后右键搜索license.dat,双击进入
004216C4|.83CA FF       OR      EDX, 0xFFFFFFFF
004216C7|.F0:0FC111   LOCK XADD DWORD PTR DS:, EDX
004216CB|.4A            DEC   EDX
004216CC|.E9 61010000   JMP   EverEdit.00421832
004216D1|>8B0D 00CB6000 MOV   ECX, DWORD PTR DS:
004216D7|.57            PUSH    EDI
004216D8|.68 80F85800   PUSH    EverEdit.0058F880                ;license.dat
004216DD|.51            PUSH    ECX
004216DE|.8D5424 24   LEA   EDX, DWORD PTR SS:
004216E2|.52            PUSH    EDX
004216E3|.E8 C8B4FFFF   CALL    EverEdit.0041CBB0
004216E8|.8B4424 28   MOV   EAX, DWORD PTR SS:
004216EC|.68 78F85800   PUSH    EverEdit.0058F878                ;wb

向上找到段首F2,然后跑起来,发现没有断下来,是何原因呢?点击一下关于,然后输入注册码那里输入数据或者不输入都可以,点击确定就断下来了
00421420/$81EC B8080000 SUB   ESP, 0x8B8
00421426|.A1 CC145D00   MOV   EAX, DWORD PTR DS:
0042142B|.33C4          XOR   EAX, ESP
0042142D|.898424 B40800>MOV   DWORD PTR SS:, EAX
00421434|.53            PUSH    EBX
00421435|.55            PUSH    EBP
00421436|.33DB          XOR   EBX, EBX
00421438|.68 C7000000   PUSH    0xC7
0042143D|.8D8424 110400>LEA   EAX, DWORD PTR SS:
从段首F8往下走会发现验证注册码的地方
0042145E|.51            PUSH    ECX
0042145F|.8BCD          MOV   ECX, EBP
00421461|.E8 CAF5FFFF   CALL    EverEdit.00420A30                ;发现一个验证注册码的地方
00421466|.3AC3          CMP   AL, BL
00421468|.0F84 AE000000 JE      EverEdit.0042151C                ;此处如果跳转实现了就会弹出来注册码不正确
0042146E|.6A 63         PUSH    0x63
00421470|.8D5424 1D   LEA   EDX, DWORD PTR SS:
重载程序,F9,继续来到验证注册码的地方跑一次看看CMP AL,BL满足什么条件的时候这个跳转才不实现
00420ADC|.84C0          TEST    AL, AL
00420ADE|.8D46 F0       LEA   EAX, DWORD PTR DS:
00420AE1      8D48 0C       LEA   ECX, DWORD PTR DS:
00420AE4      74 17         JE      SHORT EverEdit.00420AFD          ;此处跳转则AL赋值失败
00420AE6      F0:0FC111   LOCK XADD DWORD PTR DS:, EDX
00420AEA|.4A            DEC   EDX
00420AEB|.85D2          TEST    EDX, EDX
00420AED|.7F 0A         JG      SHORT EverEdit.00420AF9
00420AEF|.8B08          MOV   ECX, DWORD PTR DS:
00420AF1|.8B11          MOV   EDX, DWORD PTR DS:
00420AF3|.50            PUSH    EAX
00420AF4|.8B42 04       MOV   EAX, DWORD PTR DS:
00420AF7|.FFD0          CALL    NEAR EAX
00420AF9|>B0 01         MOV   AL, 0x1

二次来到跳转看到如果AL=1则CMP AL,BL比较成功,下面跳转不会跳
00421466|.3AC3          CMP   AL, BL   路过上面的CALL 后发现BL=0 此处只需AL=1即可.
00421468|.0F84 AE000000 JE      EverEdit.0042151C                ;此处如果跳转实现了就会弹出来注册码不正确

所以先这样改一下
00420A30      B0 01         MOV   AL, 0x1
00420A32      C2 0400       RETN    0x4
00420A35      90            NOP
00420A36|.A1 CC145D00   MOV   EAX, DWORD PTR DS:

过了一个注册码校验,继续向下走,似乎还有一处在等着咱们
004214E6|.8D9424 500400>LEA   EDX, DWORD PTR SS:
004214ED|.68 CCF85800   PUSH    EverEdit.0058F8CC                ;%c\t%s\t%s\t%s\t%[^\n]
004214F2|.52            PUSH    EDX
004214F3|.E8 795E1300   CALL    EverEdit.00557371                ;那么我们跟进这个地址暂时修改MOV EAX,5ret吧
004214F8|.83C4 4C       ADD   ESP, 0x4C
004214FB|.83F8 05       CMP   EAX, 0x5                         ;这里又需要注意了,在这里EAX值为5时,下面的跳转才不会跳
004214FE|.75 1C         JNZ   SHORT EverEdit.0042151C          ;看到这个地址是不是有些眼熟?
00421500|.8D8424 440300>LEA   EAX, DWORD PTR SS:
00421507|.50            PUSH    EAX
00421508|.8D8C24 E40200>LEA   ECX, DWORD PTR SS:
0042150F|.51            PUSH    ECX
跟进CALL后发现好多调用,难道都在这里取这个EAX=5,先猜想一下,暂时修改了看看结果
00557371      B8 05000000   MOV   EAX, 0x5                         ;别管它里面有多少内容,我现在要的就是让这里返回后EAX=5
00557376      C3            RETN                                     ;好多调用呀
00557377|.8B75 08       MOV   ESI,
0055737A|.8D45 10       LEA   EAX,
0055737D|.50            PUSH    EAX
继续向下走
0042151A|. /74 33         JE      SHORT EverEdit.0042154F          ;跳转实现了,跳过了注册码错误
0042151C|> |6A 64         PUSH    0x64                           ;以下就是弹出注册码不正确的地方
0042151E|. |8D5424 1C   LEA   EDX, DWORD PTR SS:
00421522|. |52            PUSH    EDX
00421523|. |68 993B0000   PUSH    0x3B99
00421528|. |B9 58B46000   MOV   ECX, EverEdit.0060B458
0042152D|. |E8 FEB10900   CALL    EverEdit.004BC730
00421532|. |8B4D 04       MOV   ECX, DWORD PTR SS:
00421535|. |6A 30         PUSH    0x30
00421537|. |68 E0E15800   PUSH    EverEdit.0058E1E0                ;EverEdit
0042153C|. |8D4424 20   LEA   EAX, DWORD PTR SS:
00421540|. |50            PUSH    EAX
00421541|. |51            PUSH    ECX
00421542|. |E8 39F10300   CALL    EverEdit.00460680
00421547|. |83C4 10       ADD   ESP, 0x10
0042154A|. |E9 2A030000   JMP   EverEdit.00421879
0042154F|> \8B15 DCD65800 MOV   EDX, DWORD PTR DS:[<&USER32.DefW>;user32.DefWindowProcW
继续往前走,我也没想到一次性能调试成功,这是最顺利的一回
0042159B|.8D4C24 24   LEA   ECX, DWORD PTR SS:
0042159F|.E8 0CEDFFFF   CALL    EverEdit.004202B0                ;此时弹出要保存授权了,继续跟一下,不F7进去看了,如果实在想看也没关系
004215A4|.3D B0040000   CMP   EAX, 0x4B0
004215A9|.0F85 22010000 JNZ   EverEdit.004216D1               :点击保存到注册表则此处不跳
004215AF|.8D4424 10   LEA   EAX, DWORD PTR SS:
004215B3|.50            PUSH    EAX                              ; /pHandle
004215B4|.68 A8F85800   PUSH    EverEdit.0058F8A8                ; |Software\EverEdit
004215B9|.68 01000080   PUSH    0x80000001                     ; |hKey = HKEY_CURRENT_USER
004215BE|.895C24 1C   MOV   DWORD PTR SS:, EBX   ; |
004215C2|.FF15 1CD05800 CALL    NEAR DWORD PTR DS:[<&ADVAPI32.Re>; \RegOpenKeyW
004215C8|.85C0          TEST    EAX, EAX
004215CA|.74 15         JE      SHORT EverEdit.004215E1         :不跳则授权失败,幸好这里是跳的,不用动手脚了   
004215CC|.8D4C24 10   LEA   ECX, DWORD PTR SS:
此时跟到系统领空去了,F9了一下看到未注册没有了,是否就此破解成功了吗?点击保存所有修改,运行起来看看.运行后突然发现破解没成功.点击输入注册码依然弹出来保存授权到文件,注册后未注册消失
既然关于里面也验证了注册信息,就看看如何验证的,最终找到了RegOpenKeyExW是最合适的断点,既然要看关于,先不要着急下断点,把程序跑起来后再下断点.N次返回后到了这里,代码看起来有些清晰了
0041F5C6|.68 01000080   PUSH    0x80000001                                             ; |hKey = HKEY_CURRENT_USER
0041F5CB|.895C24 28   MOV   DWORD PTR SS:, EBX                           ; |
0041F5CF|.895C24 2C   MOV   DWORD PTR SS:, EBX                           ; |
0041F5D3|.895C24 24   MOV   DWORD PTR SS:, EBX                           ; |
0041F5D7|.FF15 34D05800 CALL    NEAR DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExW>]            ; \RegOpenKeyExW
0041F5DD|.3BC3          CMP   EAX, EBX
0041F5DF|.0F85 A8000000 JNZ   EverEdit.0041F68D
0041F5E5|.8B7C24 10   MOV   EDI, DWORD PTR SS:
0041F5E9|.33C0          XOR   EAX, EAX
0041F5EB|.894424 2E   MOV   DWORD PTR SS:, EAX
0041F5EF|.894424 32   MOV   DWORD PTR SS:, EAX
0041F5F3|.894424 36   MOV   DWORD PTR SS:, EAX
继续往下走,看了一下没有重要线索,我直接在RET那里F4了返回再探
0042029F|.8BC7          MOV   EAX, EDI
004202A1|.5F            POP   EDI                                                      ;0012F314
004202A2|.5E            POP   ESI
004202A3\.C2 0400       RETN    0x4
再返回看看
00420CBD|.51            PUSH    ECX
00420CBE|.FFD5          CALL    NEAR EBP
00420CC0|.50            PUSH    EAX
00420CC1|.8D4F 7C       LEA   ECX, DWORD PTR DS:
00420CC4|.E8 77F5FFFF   CALL    EverEdit.00420240                                        ;恰似这里读取了注册信息
00420CC9|.8B16          MOV   EDX, DWORD PTR DS:                                  ;返回到这里来了
00420CCB|.68 B5040000   PUSH    0x4B5
00420CD0|.52            PUSH    EDX
00420CD1|.FFD5          CALL    NEAR EBP
00420CD3|.50            PUSH    EAX
接下来,去段首下断点,初步断定"关于"就在这里了.

00420B30/$81EC E0020000 SUB   ESP, 0x2E0                                             ;调用关于
00420B36|.A1 CC145D00   MOV   EAX, DWORD PTR DS:
00420B3B|.33C4          XOR   EAX, ESP
00420B3D|.898424 DC0200>MOV   DWORD PTR SS:, EAX
00420B44|.53            PUSH    EBX
00420B45|.55            PUSH    EBP
00420B46|.56            PUSH    ESI
00420B47|.57            PUSH    EDI
00420B48|.8BF9          MOV   EDI, ECX

那么,接下来的分析任务交给你了,一切都由你来发现
至于自动更新,可以在update.exe跟进,在段首下断跟一下就知道了,我是这么搞的.在段首XOR EAX,EAX   RET


特别提醒:关于里面验证成功就是注册版了.

--------------------------------------------------------------------------------
【版权声明】: 本文原创于冷月孤心, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2014年12月01日 上午 11:44:00仅供学习交流,如果喜欢此软件,请支持正版.



冷月孤心 发表于 2014-12-1 11:51:27

按照GGlhy的惯例,沙发得自己做

heizihui 发表于 2014-12-1 12:24:41

许愿墙 上榜了

Dxer 发表于 2014-12-1 13:08:17

{:soso_e120:}你是最棒得

l0v3cr4ck 发表于 2014-12-1 16:01:38

{:soso_e154:}谢谢冷大帮我圆梦{:soso_e181:}

pk196371 发表于 2014-12-1 19:50:01

非常好的教程。

smallhorse 发表于 2014-12-1 23:18:27

窃梦不算偷梦的吧?!!!!!!

kohyzsc123 发表于 2014-12-2 11:31:56

这个非常感谢了!其中分析重启之后验证授权文件或者注册表的那一部分因为汇编问题自己迟迟解决不了,看了了解了作者思路!

Thorne 发表于 2014-12-3 09:11:58

居然 出了 这种思路 感谢楼主 很喜欢这个编辑器 我也来学习 学习

舍得 发表于 2014-12-4 14:56:58

初学者能使用这个吗,还没进门呢
页: [1] 2
查看完整版本: 文本编辑XXredit绿色版简单爆破