飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7788|回复: 17

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

[复制链接]
  • TA的每日心情
    开心
    2024-1-4 14:31
  • 签到天数: 73 天

    [LV.6]常住居民II

    发表于 2014-12-1 11:45:02 | 显示全部楼层 |阅读模式
    本帖最后由 冷月孤心 于 2015-1-20 11:47 编辑

    不喜勿回,回帖请注意言辞.

    【文章标题】: 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
    仅供学习交流,如果喜欢此软件,请支持正版.




    评分

    参与人数 2威望 +12 飘云币 +12 收起 理由
    左岸麦田 + 4 + 4 学习了。
    l0v3cr4ck + 8 + 8 感谢!高分献上!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-1-4 14:31
  • 签到天数: 73 天

    [LV.6]常住居民II

     楼主| 发表于 2014-12-1 11:51:27 | 显示全部楼层
    按照GGlhy的惯例,沙发得自己做

    点评

    哈哈~~  发表于 2014-12-4 11:59
    PYG19周年生日快乐!
  • TA的每日心情

    2023-8-5 16:33
  • 签到天数: 464 天

    [LV.9]以坛为家II

    发表于 2014-12-1 12:24:41 | 显示全部楼层
    许愿墙 上榜了
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2014-12-1 13:08:17 | 显示全部楼层
    {:soso_e120:}你是最棒得
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-11-20 21:29
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2014-12-1 16:01:38 | 显示全部楼层
    {:soso_e154:}谢谢冷大帮我圆梦{:soso_e181:}
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2022-3-30 23:22
  • 签到天数: 480 天

    [LV.9]以坛为家II

    发表于 2014-12-1 19:50:01 | 显示全部楼层
    非常好的教程。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 20:34
  • 签到天数: 1380 天

    [LV.10]以坛为家III

    发表于 2014-12-1 23:18:27 | 显示全部楼层
    窃梦不算偷梦的吧?!!!!!!
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2021-12-17 20:13
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2014-12-2 11:31:56 | 显示全部楼层
    这个非常感谢了!其中分析重启之后验证授权文件或者注册表的那一部分因为汇编问题自己迟迟解决不了,看了了解了作者思路!
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2018-7-8 09:21
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2014-12-3 09:11:58 | 显示全部楼层
    居然 出了 这种思路 感谢楼主 很喜欢这个编辑器 我也来学习 学习
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-8-19 13:53
  • 签到天数: 1083 天

    [LV.10]以坛为家III

    发表于 2014-12-4 14:56:58 | 显示全部楼层
    初学者能使用这个吗,还没进门呢
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表