飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2372|回复: 3

【申请加入PYG破文】TxtEdit 4.5.2注册算法

[复制链接]
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2006-11-21 13:08:48 | 显示全部楼层 |阅读模式
    【破文标题】简单的TxtEdit 4.5.2注册算法
    【破文作者】XXNB
    【作者邮箱】支持PYG
    【作者主页】http://free.ys168.com/?binbinbin7456
    破解工具】OD
    【破解平台】xpsp2
    【软件名称】TxtEdit 4.5.2
    【软件大小】924KB
    【原版下载】http://www.onlinedown.net/soft/23539.htm
    【保护方式】名+码
    【软件简介】文本编辑器,有拼写检查功能!
    软件语言:英文
    软件类别:国外软件/共享版/编辑软件
    运行环境:Win9x/Me/NT/2000/XP/2003
    加入时间:2006-11-20 9:22:12
    下载次数:901
    【破解声明】向大侠们学习!!!只为学习!
    ------------------------------------------------------------------------
    【破解过程】
    ------------------------------------------------------------------------

    1、用delphi的利器,dede。我们很容易就找到按钮的断点。“找到关键断点,成功一半”

    我们输入信息:regname:binbin
                  regNO:  123456789
    经过我的分析后,输入的注册码要大于“10000000”。具体看下面的代码分析。


    004E7080   $  55            push    ebp
    004E7081   .  8BEC          mov     ebp, esp
    004E7083   .  B9 04000000   mov     ecx, 4
    004E7088   >  6A 00         push    0
    004E708A   .  6A 00         push    0
    004E708C   .  49            dec     ecx
    004E708D   .^ 75 F9         jnz     short 004E7088
    004E708F   .  51            push    ecx
    004E7090   .  53            push    ebx
    004E7091   .  56            push    esi
    004E7092   .  57            push    edi
    004E7093   .  8945 FC       mov     dword ptr [ebp-4], eax
    004E7096   .  33C0          xor     eax, eax
    004E7098   .  55            push    ebp
    004E7099   .  68 A8724E00   push    004E72A8
    004E709E   .  64:FF30       push    dword ptr fs:[eax]
    004E70A1   .  64:8920       mov     dword ptr fs:[eax], esp
    004E70A4   .  C745 F0 00000>mov     dword ptr [ebp-10], 0
    004E70AB   .  C745 F4 00000>mov     dword ptr [ebp-C], 0
    004E70B2   .  8D55 EC       lea     edx, dword ptr [ebp-14]
    004E70B5   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E70B8   .  8B80 28030000 mov     eax, dword ptr [eax+328]
    004E70BE   .  E8 DD80F8FF   call    0046F1A0
    004E70C3   .  8B45 EC       mov     eax, dword ptr [ebp-14]          ;  用户名出现了 binbin
    004E70C6   .  E8 69D7F1FF   call    00404834                         ;  计算位数
    004E70CB   .  8BD8          mov     ebx, eax
    004E70CD   .  4B            dec     ebx
    004E70CE   .  85DB          test    ebx, ebx
    004E70D0   .  7E 34         jle     short 004E7106
    004E70D2   .  BE 01000000   mov     esi, 1
    004E70D7   >  8D55 E8       lea     edx, dword ptr [ebp-18]
    004E70DA   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E70DD   .  8B80 28030000 mov     eax, dword ptr [eax+328]
    004E70E3   .  E8 B880F8FF   call    0046F1A0
    004E70E8   .  8B45 E8       mov     eax, dword ptr [ebp-18]          ;  用户名
    004E70EB   .  8A4430 FF     mov     al, byte ptr [eax+esi-1]         ;  逐个取用户名
    004E70EF   .  25 FF000000   and     eax, 0FF                         ;  得到ascii码值
    004E70F4   .  33D2          xor     edx, edx
    004E70F6   .  0345 F0       add     eax, dword ptr [ebp-10]          ;  加上一次的结果
    004E70F9   .  1355 F4       adc     edx, dword ptr [ebp-C]
    004E70FC      8945 F0       mov     dword ptr [ebp-10], eax          ;  存储结果
    004E70FF   .  8955 F4       mov     dword ptr [ebp-C], edx
    004E7102   .  46            inc     esi
    004E7103   .  4B            dec     ebx
    004E7104   .^ 75 D1         jnz     short 004E70D7                   ;  累加用户名ascii码值,存储在ebp-10。注意了,要去掉最后

    一位,就是说,最后一位不累加
    004E7106   >  33C0          xor     eax, eax                         ;  204(516)去掉最后一位的累加值
    004E7108   .  55            push    ebp
    004E7109   .  68 7F714E00   push    004E717F
    004E710E   .  64:FF30       push    dword ptr fs:[eax]
    004E7111   .  64:8920       mov     dword ptr fs:[eax], esp
    004E7114   .  8D55 E4       lea     edx, dword ptr [ebp-1C]
    004E7117   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E711A   .  8B80 2C030000 mov     eax, dword ptr [eax+32C]
    004E7120   .  E8 7B80F8FF   call    0046F1A0
    004E7125   .  8B45 E4       mov     eax, dword ptr [ebp-1C]          ;  假码出现了,还有位数
    004E7128   .  E8 2B25F2FF   call    00409658                         ;  哇,转成16进制
    004E712D   .  0345 F0       add     eax, dword ptr [ebp-10]          ;  加上用户名的累加值
    004E7130   .  1355 F4       adc     edx, dword ptr [ebp-C]
    004E7133   .  8945 F0       mov     dword ptr [ebp-10], eax
    004E7136   .  8955 F4       mov     dword ptr [ebp-C], edx
    004E7139   .  837D F4 00    cmp     dword ptr [ebp-C], 0
    004E713D   .  75 0B         jnz     short 004E714A
    004E713F      817D F0 80969>cmp     dword ptr [ebp-10], 989680       ;  和“10000000”比较
    004E7146   .  72 10         jb      short 004E7158                   ;  小于的话跳。跳就失败,所以一定要大于
    004E7148   .  EB 02         jmp     short 004E714C
    004E714A   >  7C 0C         jl      short 004E7158
    004E714C   >  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E714F   .  83B8 3C030000>cmp     dword ptr [eax+33C], 5
    004E7156   .  7E 1D         jle     short 004E7175
    004E7158   >  8B0D 4CF94F00 mov     ecx, dword ptr [4FF94C]          ;  TxtEdit.005019BC
    004E715E   .  8B89 78010000 mov     ecx, dword ptr [ecx+178]
    004E7164   .  B2 01         mov     dl, 1
    004E7166   .  A1 D4884000   mov     eax, dword ptr [4088D4]
    004E716B   .  E8 BC60F2FF   call    0040D22C
    004E7170   .  E8 13CEF1FF   call    00403F88
    004E7175   >  33C0          xor     eax, eax
    004E7177   .  5A            pop     edx
    004E7178   .  59            pop     ecx
    004E7179   .  59            pop     ecx
    004E717A   .  64:8910       mov     dword ptr fs:[eax], edx
    004E717D   .  EB 28         jmp     short 004E71A7
    004E717F   .^ E9 44CCF1FF   jmp     00403DC8
    004E7184      01            db      01
    004E7185      00            db      00
    004E7186      00            db      00
    004E7187      00            db      00
    004E7188   .  D4884000      dd      TxtEdit.004088D4
    004E718C   .  90714E00      dd      TxtEdit.004E7190
    004E7190   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E7193   .  E8 E0060000   call    004E7878
    004E7198   .  E8 67CEF1FF   call    00404004
    004E719D   .  E9 EB000000   jmp     004E728D
    004E71A2   .  E8 5DCEF1FF   call    00404004
    004E71A7   >  6A 00         push    0
    004E71A9   .  68 2F220000   push    222F                             ;  注意这个常数222F
    004E71AE   .  8B45 F0       mov     eax, dword ptr [ebp-10]          ;  假码16进制到eax
    004E71B1   .  8B55 F4       mov     edx, dword ptr [ebp-C]
    004E71B4   .  E8 5BE6F1FF   call    00405814                         ;  这个是算法call了,它返回的是注册码+用户名累加值除以

    222F后的余数。返回一定要是0
    004E71B9   .  83FA 00       cmp     edx, 0                           ;  经过上面的call。如果要等于0的话就是说,注册码+用户名

    累加值后一定要能整除222F
    004E71BC   .  0F85 A8000000 jnz     004E726A
    004E71C2   .  83F8 00       cmp     eax, 0                           ;  余数为0就注册成功
    004E71C5      0F85 9F000000 jnz     004E726A                         ;  关键跳转
    004E71CB   .  C605 A0195000>mov     byte ptr [5019A0], 1
    004E71D2   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E71D5   .  8B80 28030000 mov     eax, dword ptr [eax+328]
    004E71DB   .  BA 0F0000FF   mov     edx, FF00000F
    004E71E0   .  E8 5B81F8FF   call    0046F340
    004E71E5   .  8B45 FC       mov     eax, dword ptr [ebp-4]          ;下面这些是注册成功的信息。收工
    004E71E8   .  8B80 2C030000 mov     eax, dword ptr [eax+32C]
    004E71EE   .  BA 0F0000FF   mov     edx, FF00000F
    004E71F3   .  E8 4881F8FF   call    0046F340
    004E71F8   .  8D55 E0       lea     edx, dword ptr [ebp-20]
    004E71FB   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E71FE   .  8B80 28030000 mov     eax, dword ptr [eax+328]
    004E7204   .  E8 977FF8FF   call    0046F1A0
    004E7209   .  8B4D E0       mov     ecx, dword ptr [ebp-20]
    004E720C   .  A1 D0F74F00   mov     eax, dword ptr [4FF7D0]
    004E7211   .  8B00          mov     eax, dword ptr [eax]
    004E7213   .  8B80 EC040000 mov     eax, dword ptr [eax+4EC]
    004E7219   .  BA 22000000   mov     edx, 22
    004E721E   .  8B18          mov     ebx, dword ptr [eax]
    004E7220   .  FF53 20       call    dword ptr [ebx+20]
    004E7223   .  8D55 DC       lea     edx, dword ptr [ebp-24]
    004E7226   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E7229   .  8B80 2C030000 mov     eax, dword ptr [eax+32C]
    004E722F   .  E8 6C7FF8FF   call    0046F1A0
    004E7234   .  8B4D DC       mov     ecx, dword ptr [ebp-24]
    004E7237   .  A1 D0F74F00   mov     eax, dword ptr [4FF7D0]
    004E723C   .  8B00          mov     eax, dword ptr [eax]
    004E723E   .  8B80 EC040000 mov     eax, dword ptr [eax+4EC]
    004E7244   .  BA 23000000   mov     edx, 23
    004E7249   .  8B18          mov     ebx, dword ptr [eax]
    004E724B   .  FF53 20       call    dword ptr [ebx+20]
    004E724E   .  8B15 4CF94F00 mov     edx, dword ptr [4FF94C]          ;  TxtEdit.005019BC
    004E7254   .  8B92 80010000 mov     edx, dword ptr [edx+180]
    004E725A   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E725D   .  8B80 20030000 mov     eax, dword ptr [eax+320]
    004E7263   .  E8 687FF8FF   call    0046F1D0
    004E7268   .  EB 08         jmp     short 004E7272
    004E726A   >  8B45 FC       mov     eax, dword ptr [ebp-4]
    004E726D   .  E8 06060000   call    004E7878
    004E7272   >  8A15 A1195000 mov     dl, byte ptr [5019A1]
    004E7278   .  80F2 01       xor     dl, 1
    004E727B   .  0A15 A0195000 or      dl, byte ptr [5019A0]
    004E7281   .  A1 D0F74F00   mov     eax, dword ptr [4FF7D0]
    004E7286   .  8B00          mov     eax, dword ptr [eax]
    004E7288   .  E8 EF230100   call    004F967C
    004E728D   >  33C0          xor     eax, eax
    004E728F   .  5A            pop     edx
    004E7290   .  59            pop     ecx
    004E7291   .  59            pop     ecx
    004E7292   .  64:8910       mov     dword ptr fs:[eax], edx
    004E7295   .  68 AF724E00   push    004E72AF
    004E729A   >  8D45 DC       lea     eax, dword ptr [ebp-24]
    004E729D   .  BA 05000000   mov     edx, 5
    004E72A2   .  E8 F1D2F1FF   call    00404598
    004E72A7   .  C3            retn


    2、


    .版本 2

    .程序集 窗口程序集1

    .子程序 _按钮1_被单击
    .局部变量 name, 文本型
    .局部变量 len, 整数型
    .局部变量 code, 长整数型
    .局部变量 i, 整数型
    .局部变量 eax, 整数型
    .局部变量 sum, 整数型

    name = 编辑框1.内容
    len = 取文本长度 (name)
    len = len - 1
    .计次循环首 (len, i)
        eax = 取代码 (name, i)
        sum = sum + eax
    .计次循环尾 ()

    code = 8751 × 8751 - sum

    编辑框2.内容 = 到文本 (code)

    【破解总结】
    ------------------------------------------------------------------------
    1、获得用户名,然后取得用户名除最后一位外的ascii码累加值。

    2、然后获得输入的假码,加上上面的用户名累加值。结果如果能整除8751的话。就注册成功。

    [ 本帖最后由 binbinbin 于 2006-11-21 17:56 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-11-21 15:39:54 | 显示全部楼层
    兄弟不错...支持一个..再多来几篇:lol:
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2006-11-21 17:58:11 | 显示全部楼层
    原帖由 tigerisme 于 2006-11-21 15:39 发表
    兄弟不错...支持一个..再多来几篇:lol:



    当然,争取进入。


    老早想入了,但是我一只想搞定那个验证Crackme。但是,就是搞不定。打算改天再弄它,希望飘云老大行行好了。:$
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-28 06:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-11-23 14:47:41 | 显示全部楼层
    呵呵,支持兄弟呀
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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