欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]文本编辑器XXXedit绿色版简单爆破

[原创]文本编辑器XXXedit绿色版简单爆破

回帖请注意言语,不喜勿回也不怪
【文章标题】: everedit绿色版简单爆破
【文章作者】: 冷月孤心
【作者邮箱】: 55825450@qq.com
【作者QQ号】: 55825450
【软件大小】: 2.28 MB
【下载地址】: 自己搜索下载
【使用工具】: PYG_ODBG
【操作平台】: XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  载入软件后右键搜索license.dat,双击进入
  004216C4  |.  83CA FF       OR      EDX, 0xFFFFFFFF
  004216C7  |.  F0:0FC111     LOCK XADD DWORD PTR DS:[ECX], EDX
  004216CB  |.  4A            DEC     EDX
  004216CC  |.  E9 61010000   JMP     EverEdit.00421832
  004216D1  |>  8B0D 00CB6000 MOV     ECX, DWORD PTR DS:[0x60CB00]
  004216D7  |.  57            PUSH    EDI
  004216D8  |.  68 80F85800   PUSH    EverEdit.0058F880                ;  license.dat
  004216DD  |.  51            PUSH    ECX
  004216DE  |.  8D5424 24     LEA     EDX, DWORD PTR SS:[ESP+0x24]
  004216E2  |.  52            PUSH    EDX
  004216E3  |.  E8 C8B4FFFF   CALL    EverEdit.0041CBB0
  004216E8  |.  8B4424 28     MOV     EAX, DWORD PTR SS:[ESP+0x28]
  004216EC  |.  68 78F85800   PUSH    EverEdit.0058F878                ;  wb
  向上找到段首F2,然后跑起来,发现没有断下来,是何原因呢?点击一下关于,然后输入注册码那里输入数据或者不输入都可以,点击确定就断下来了
  00421420  /$  81EC B8080000 SUB     ESP, 0x8B8
  00421426  |.  A1 CC145D00   MOV     EAX, DWORD PTR DS:[0x5D14CC]
  0042142B  |.  33C4          XOR     EAX, ESP
  0042142D  |.  898424 B40800>MOV     DWORD PTR SS:[ESP+0x8B4], 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:[ESP+0x411]
  从段首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:[ESP+0x1D]
  重载程序,F9,继续来到验证注册码的地方跑一次看看CMP AL,BL满足什么条件的时候这个跳转才不实现
  00420ADC  |.  84C0          TEST    AL, AL
  00420ADE  |.  8D46 F0       LEA     EAX, DWORD PTR DS:[ESI-0x10]
  00420AE1      8D48 0C       LEA     ECX, DWORD PTR DS:[EAX+0xC]
  00420AE4      74 17         JE      SHORT EverEdit.00420AFD          ;  此处跳转则AL赋值失败
  00420AE6      F0:0FC111     LOCK XADD DWORD PTR DS:[ECX], EDX
  00420AEA  |.  4A            DEC     EDX
  00420AEB  |.  85D2          TEST    EDX, EDX
  00420AED  |.  7F 0A         JG      SHORT EverEdit.00420AF9
  00420AEF  |.  8B08          MOV     ECX, DWORD PTR DS:[EAX]
  00420AF1  |.  8B11          MOV     EDX, DWORD PTR DS:[ECX]
  00420AF3  |.  50            PUSH    EAX
  00420AF4  |.  8B42 04       MOV     EAX, DWORD PTR DS:[EDX+0x4]
  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:[0x5D14CC]
  过了一个注册码校验,继续向下走,似乎还有一处在等着咱们
  004214E6  |.  8D9424 500400>LEA     EDX, DWORD PTR SS:[ESP+0x450]
  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,5  ret吧
  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:[ESP+0x344]
  00421507  |.  50            PUSH    EAX
  00421508  |.  8D8C24 E40200>LEA     ECX, DWORD PTR SS:[ESP+0x2E4]
  0042150F  |.  51            PUSH    ECX
  跟进CALL后发现好多调用,难道都在这里取这个EAX=5,先猜想一下,暂时修改了看看结果
  00557371      B8 05000000   MOV     EAX, 0x5                         ;  别管它里面有多少内容,我现在要的就是让这里返回后EAX=5
  00557376      C3            RETN                                     ;  好多调用呀
  00557377  |.  8B75 08       MOV     ESI, [ARG.1]
  0055737A  |.  8D45 10       LEA     EAX, [ARG.3]
  0055737D  |.  50            PUSH    EAX
  继续向下走
  0042151A  |. /74 33         JE      SHORT EverEdit.0042154F          ;  跳转实现了,跳过了注册码错误
  0042151C  |> |6A 64         PUSH    0x64                             ;  以下就是弹出注册码不正确的地方
  0042151E  |. |8D5424 1C     LEA     EDX, DWORD PTR SS:[ESP+0x1C]
  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:[EBP+0x4]
  00421535  |. |6A 30         PUSH    0x30
  00421537  |. |68 E0E15800   PUSH    EverEdit.0058E1E0                ;  EverEdit
  0042153C  |. |8D4424 20     LEA     EAX, DWORD PTR SS:[ESP+0x20]
  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:[ESP+0x24]
  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:[ESP+0x10]
  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:[ESP+0x1C], 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:[ESP+0x10]
此时跟到系统领空去了,F9了一下看到未注册没有了,是否就此破解成功了吗?点击保存所有修改,运行起来看看.运行后突然发现破解没成功.点击输入注册码依然弹出来保存授权到文件,注册后未注册消失
  既然关于里面也验证了注册信息,就看看如何验证的,最终找到了RegOpenKeyExW是最合适的断点,既然要看关于,先不要着急下断点,把程序跑起来后再下断点.N次返回后到了这里,代码看起来有些清晰了
  0041F5C6  |.  68 01000080   PUSH    0x80000001                                               ; |hKey = HKEY_CURRENT_USER
  0041F5CB  |.  895C24 28     MOV     DWORD PTR SS:[ESP+0x28], EBX                             ; |
  0041F5CF  |.  895C24 2C     MOV     DWORD PTR SS:[ESP+0x2C], EBX                             ; |
  0041F5D3  |.  895C24 24     MOV     DWORD PTR SS:[ESP+0x24], 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:[ESP+0x10]
  0041F5E9  |.  33C0          XOR     EAX, EAX
  0041F5EB  |.  894424 2E     MOV     DWORD PTR SS:[ESP+0x2E], EAX
  0041F5EF  |.  894424 32     MOV     DWORD PTR SS:[ESP+0x32], EAX
  0041F5F3  |.  894424 36     MOV     DWORD PTR SS:[ESP+0x36], 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:[EDI+0x7C]
  00420CC4  |.  E8 77F5FFFF   CALL    EverEdit.00420240                                        ;  恰似这里读取了注册信息
  00420CC9  |.  8B16          MOV     EDX, DWORD PTR DS:[ESI]                                  ;  返回到这里来了
  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:[0x5D14CC]
  00420B3B  |.  33C4          XOR     EAX, ESP
  00420B3D  |.  898424 DC0200>MOV     DWORD PTR SS:[ESP+0x2DC], 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
仅供交流学习,如果喜欢这款软件,请下载支持正版.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功