吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5609|回复: 4
收起左侧

[分享] TTFtoDXF v43算法分析及算法注册机--纪念版

[复制链接]
zaas 发表于 2010-3-3 16:27
破文标题】TTFtoDXF v43算法分析及算法注册机--纪念版
【破文作者】zaas[PYG][FCT]
破解工具】OllyICE,PEiD v0.94
【破解平台】WinXP
【软件名称】TTFtoDXF v43
【更新时间】2010-2-21
【软件类别】英文软件/矢量化
【软件语言】英文
【应用平台】WinXP/2000/2003/Vista
【软件性质】共享(收费)软件
【软件大小】511KB
【原版下载】http://home.roadrunner.com/~gcodemcode/ttftodxf.htm
【保护方式】注册码
【软件简介】该软件可将TTF字体转换为DXF文件格式。
你可以编辑单个的字符、句子或整个段落。
你可更改字符的字体及文字高度。
你可更改字符间的间隔。
你可指定行距。
你可以将文本复制到该程序的对话框中进行转换,也可以自己输入文字。
该软件只支持英文字体,不支持中文字体。
共享版本可试用30天。有时间限制(30天,不过可调系统时间)、使用次数限制(30次)。到期 File和Edit菜单会灰掉。

【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
【写在前面】年过完了。年后又忙碌起来,不能像过年期间那么多时间调试软件了。
昨天整理了一下自己的东西,发现自己第一次破解的软件TTFtoDXF,距离现在整整7个月了。
当时写下了自己的第一篇破文:TTFtoDXF v42追码 【我的第一次Crack,极度初级】
名曰追码,实际上没有在追码,只是爆破而已。现在把追码补上,也算是一篇年后总结,兼纪念自己的第一次。


--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------

**************************************************************
用PEiD查壳,Borland Delphi 4.0 - 5.0
**************************************************************
输入错误的注册码,软件无提示,要求重启验证。
观察到假码写入了reg.ini,so,下GetPrivateProfileStringA断点
来到:
0047BB2C  /$  55            push    ebp
0047BB2D  |.  8BEC          mov     ebp, esp
0047BB2F  |.  B9 2E000000   mov     ecx, 2E
0047BB34  |>  6A 00         /push    0
0047BB36  |.  6A 00         |push    0
0047BB38  |.  49            |dec     ecx
0047BB39  |.^ 75 F9         \jnz     short 0047BB34
0047BB3B  |.  53            push    ebx
0047BB3C  |.  56            push    esi
0047BB3D  |.  57            push    edi
0047BB3E  |.  8BD8          mov     ebx, eax
0047BB40  |.  33C0          xor     eax, eax
0047BB42  |.  55            push    ebp
0047BB43  |.  68 8BBF4700   push    0047BF8B
0047BB48  |.  64:FF30       push    dword ptr fs:[eax]
0047BB4B  |.  64:8920       mov     dword ptr fs:[eax], esp
0047BB4E  |.  C685 00FFFFFF>mov     byte ptr [ebp-100], 0
0047BB55  |.  8D95 F8FEFFFF lea     edx, dword ptr [ebp-108]
0047BB5B  |.  33C0          xor     eax, eax
0047BB5D  |.  E8 DA6DF8FF   call    0040293C
0047BB62  |.  8B85 F8FEFFFF mov     eax, dword ptr [ebp-108]
0047BB68  |.  8D95 FCFEFFFF lea     edx, dword ptr [ebp-104]
0047BB6E  |.  E8 65D0F8FF   call    00408BD8
0047BB73  |.  8D85 FCFEFFFF lea     eax, dword ptr [ebp-104]
0047BB79  |.  BA A4BF4700   mov     edx, 0047BFA4                    ;  ASCII "Reg.ini"
0047BB7E  |.  E8 4982F8FF   call    00403DCC
以上代码取出假码。shift F9返回:
0047B38C  /.  55            push    ebp
0047B38D  |.  8BEC          mov     ebp, esp
0047B38F  |.  B9 0B000000   mov     ecx, 0B
0047B394  |>  6A 00         /push    0
0047B396  |.  6A 00         |push    0
0047B398  |.  49            |dec     ecx
0047B399  |.^ 75 F9         \jnz     short 0047B394
0047B39B  |.  53            push    ebx
0047B39C  |.  56            push    esi
0047B39D  |.  57            push    edi
0047B39E  |.  8BD8          mov     ebx, eax
0047B3A0  |.  33C0          xor     eax, eax
0047B3A2  |.  55            push    ebp
0047B3A3  |.  68 BDB64700   push    0047B6BD
0047B3A8  |.  64:FF30       push    dword ptr fs:[eax]
0047B3AB  |.  64:8920       mov     dword ptr fs:[eax], esp
0047B3AE  |.  8BC3          mov     eax, ebx
0047B3B0  |.  E8 77070000   call    0047BB2C                         ;  读取reg.ini
0047B3B5  |.  33C0          xor     eax, eax
0047B3B7  |.  E8 74D9F8FF   call    00408D30
0047B3BC  |.  8945 F0       mov     dword ptr [ebp-10], eax
0047B3BF  |.  8955 F4       mov     dword ptr [ebp-C], edx
0047B3C2  |.  6A 00         push    0
0047B3C4  |.  68 CC100000   push    10CC
0047B3C9  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
0047B3CC  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
0047B3CF  |.  E8 5AB1F8FF   call    0040652E                         ;  机器码
0047B3D4  |.  85D2          test    edx, edx
0047B3D6  |.  7D 07         jge     short 0047B3DF
0047B3D8  |.  F7D8          neg     eax
0047B3DA  |.  83D2 00       adc     edx, 0
0047B3DD  |.  F7DA          neg     edx
0047B3DF  |>  8945 F0       mov     dword ptr [ebp-10], eax
。。。。。。
0047B506  |.  E8 5D88F8FF   call    00403D68
0047B50B  |.  8B45 C4       mov     eax, dword ptr [ebp-3C]          ;  假码
0047B50E  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
0047B511  |.  E8 4676F8FF   call    00402B5C                         ;  假码转换为数字Sn1
0047B516  |.  8BF0          mov     esi, eax
0047B518  |.  68 D4B64700   push    0047B6D4                         ;  ASCII "ID NUMBER = "
0047B51D  |.  FF75 F4       push    dword ptr [ebp-C]
0047B520  |.  FF75 F0       push    dword ptr [ebp-10]
0047B523  |.  8D45 BC       lea     eax, dword ptr [ebp-44]
0047B526  |.  E8 5DD4F8FF   call    00408988                         ;  ID number
0047B52B  |.  FF75 BC       push    dword ptr [ebp-44]
0047B52E  |.  68 ECB64700   push    0047B6EC                         ;  ASCII "017151."
0047B533  |.  8D55 B8       lea     edx, dword ptr [ebp-48]
0047B536  |.  B8 CC100000   mov     eax, 10CC                        ;  10cc=4300
0047B53B  |.  E8 18D4F8FF   call    00408958
0047B540  |.  FF75 B8       push    dword ptr [ebp-48]
0047B543  |.  68 FCB64700   push    0047B6FC                         ;  ASCII "ttz"
0047B548  |.  8D45 C0       lea     eax, dword ptr [ebp-40]
0047B54B  |.  BA 05000000   mov     edx, 5
0047B550  |.  E8 2F89F8FF   call    00403E84                         ;  合并ID number
0047B555  |.  8B55 C0       mov     edx, dword ptr [ebp-40]
0047B558  |.  8B83 EC020000 mov     eax, dword ptr [ebx+2EC]
0047B55E  |.  E8 B934FBFF   call    0042EA1C
0047B563  |.  D1FE          sar     esi, 1                           ;  Sn1除以2
0047B565  |.  79 03         jns     short 0047B56A
0047B567  |.  83D6 00       adc     esi, 0
0047B56A  |>  56            push    esi
0047B56B  |.  68 CC100000   push    10CC                             ;  4300
0047B570  |.  E8 A3FDFFFF   call    <jmp.&GCDL.Registered>
0047B575  |.  84C0          test    al, al
0047B577  |.  0F84 97000000 je      0047B614
0047B57D  |.  A1 A41C4800   mov     eax, dword ptr [481CA4]
0047B582  |.  C600 01       mov     byte ptr [eax], 1                ;  写入全局变量
0047B585  |.  BA 08B74700   mov     edx, 0047B708                    ;  ASCII "Registered Thank you"
0047B58A  |.  8BC3          mov     eax, ebx
0047B58C  |.  E8 8B34FBFF   call    0042EA1C
0047B591  |.  BA 28B74700   mov     edx, 0047B728                    ;  ASCII " Reg Ok "
0047B596  |.  8B83 EC020000 mov     eax, dword ptr [ebx+2EC]             ;  invalIDAte license info!
由此可知,0047B570  |.  E8 A3FDFFFF   call    <jmp.&GCDL.Registered>为关键call。跟进关键call,发现注册码的验证不是在exe而是在GCDL.dll。
0003993C4 >/$  55            push    ebp
003993C5  |.  8BEC          mov     ebp, esp
003993C7  |.  83C4 E8       add     esp, -18
003993CA  |.  53            push    ebx
003993CB  |.  33DB          xor     ebx, ebx
003993CD  |.  33C0          xor     eax, eax
003993CF  |.  E8 F0CEFFFF   call    003962C4                         ;  GetDiskFreeSpaceEXa
003993D4  |.  8945 F8       mov     dword ptr [ebp-8], eax           ;  C盘容量低位
003993D7  |.  8955 FC       mov     dword ptr [ebp-4], edx           ;  C盘容量高位
003993DA  |.  8B45 08       mov     eax, dword ptr [ebp+8]           ;  ID的部分
003993DD  |.  99            cdq
003993DE  |.  52            push    edx
003993DF  |.  50            push    eax
003993E0  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
003993E3  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
003993E6  |.  E8 2BB8FFFF   call    00394C16                         ;  C盘容量除以4300,取整
003993EB  |.  85D2          test    edx, edx
003993ED  |.  7D 07         jge     short 003993F6
003993EF  |.  F7D8          neg     eax
003993F1  |.  83D2 00       adc     edx, 0
003993F4  |.  F7DA          neg     edx
003993F6  |>  8945 F8       mov     dword ptr [ebp-8], eax           ;  =机器码部分
003993F9  |.  8955 FC       mov     dword ptr [ebp-4], edx
003993FC  |.  DF6D F8       fild    qword ptr [ebp-8]                ;  浮点加载
003993FF  |.  DB7D E8       fstp    tbyte ptr [ebp-18]
00399402  |.  9B            wait
00399403  |.  DB6D E8       fld     tbyte ptr [ebp-18]
00399406  |.  D9E1          fabs                                     ;  绝对值
00399408  |.  D9FA          fsqrt                                    ;  平方根
0039940A  |.  DB7D E8       fstp    tbyte ptr [ebp-18]
0039940D  |.  9B            wait
0039940E  |.  8B45 0C       mov     eax, dword ptr [ebp+C]
00399411  |.  99            cdq
00399412  |.  52            push    edx
00399413  |.  50            push    eax
00399414  |.  DB6D E8       fld     tbyte ptr [ebp-18]
00399417  |.  DB2D 54943900 fld     tbyte ptr [399454]               ;  3.141
0039941D  |.  DEC9          fmulp   st(1), st                        ;  相乘
0039941F  |.  E8 4093FFFF   call    00392764                         ;  浮点保存整数出栈-》Sn2
00399424  |.  290424        sub     dword ptr [esp], eax             ;  (Sn1)/2-Sn2
00399427  |.  195424 04     sbb     dword ptr [esp+4], edx
0039942B  |.  58            pop     eax                              ;  取出
0039942C  |.  5A            pop     edx
0039942D  |.  85D2          test    edx, edx
0039942F  |.  7D 07         jge     short 00399438
00399431  |.  F7D8          neg     eax
00399433  |.  83D2 00       adc     edx, 0
00399436  |.  F7DA          neg     edx
00399438  |>  83FA 00       cmp     edx, 0
0039943B  |.  75 07         jnz     short 00399444
0039943D  |.  83F8 64       cmp     eax, 64                          ;  eax<=64注册成功
00399440  |.  73 06         jnb     short 00399448
00399442  |.  EB 02         jmp     short 00399446
00399444  |>  7D 02         jge     short 00399448
00399446  |>  B3 01         mov     bl, 1                            ;  标志位
00399448  |>  8BC3          mov     eax, ebx
0039944A  |.  5B            pop     ebx
0039944B  |.  8BE5          mov     esp, ebp
0039944D  |.  5D            pop     ebp
0039944E  \.  C2 0800       retn    8
其中需要说明的是64除法的分析:
003993E6  |.  E8 2BB8FFFF   call    00394C16                         ;  C盘容量除以4300,取整
感谢前辈们的辛勤工作,实在看不懂的同学参考下:http://www.pediy.com/bbshtml/bbs7/pediy7-180.htm
00394C16  /$  55            push    ebp
00394C17  |.  53            push    ebx
00394C18  |.  56            push    esi
00394C19  |.  57            push    edi
00394C1A  |.  33FF          xor     edi, edi
00394C1C  |.  8B5C24 14     mov     ebx, dword ptr [esp+14]          ;  机器码部分
00394C20  |.  8B4C24 18     mov     ecx, dword ptr [esp+18]
00394C24  |.  0BC9          or      ecx, ecx
00394C26  |.  75 08         jnz     short 00394C30
00394C28  |.  0BD2          or      edx, edx                         ;  容量小的时候
00394C2A  |.  74 5C         je      short 00394C88
00394C2C  |.  0BDB          or      ebx, ebx
00394C2E  |.  74 58         je      short 00394C88
00394C30  |>  0BD2          or      edx, edx
00394C32  |.  79 0A         jns     short 00394C3E                   ;  非负跳转
00394C34  |.  F7DA          neg     edx
00394C36  |.  F7D8          neg     eax
00394C38  |.  83DA 00       sbb     edx, 0
00394C3B  |.  83CF 01       or      edi, 1
00394C3E  |>  0BC9          or      ecx, ecx
00394C40  |.  79 0A         jns     short 00394C4C
00394C42  |.  F7D9          neg     ecx
00394C44  |.  F7DB          neg     ebx
00394C46  |.  83D9 00       sbb     ecx, 0
00394C49  |.  83F7 01       xor     edi, 1
00394C4C  |>  8BE9          mov     ebp, ecx
00394C4E  |.  B9 40000000   mov     ecx, 40                          ;  ecx=40
00394C53  |.  57            push    edi
00394C54  |.  33FF          xor     edi, edi
00394C56  |.  33F6          xor     esi, esi
00394C58  |>  D1E0          /shl     eax, 1                          ;  eax*2
00394C5A  |.  D1D2          |rcl     edx, 1                          ;  edx*2
00394C5C  |.  D1D6          |rcl     esi, 1
00394C5E  |.  D1D7          |rcl     edi, 1
00394C60  |.  3BFD          |cmp     edi, ebp
00394C62  |.  72 0B         |jb      short 00394C6F
00394C64  |.  77 04         |ja      short 00394C6A
00394C66  |.  3BF3          |cmp     esi, ebx
00394C68  |.  72 05         |jb      short 00394C6F
00394C6A  |>  2BF3          |sub     esi, ebx
00394C6C  |.  1BFD          |sbb     edi, ebp
00394C6E  |.  40            |inc     eax
00394C6F  |>^ E2 E7         \loopd   short 00394C58                  ;  循环40H次
00394C71  |.  5B            pop     ebx
00394C72  |.  F7C3 01000000 test    ebx, 1
00394C78  |.  74 07         je      short 00394C81
00394C7A  |.  F7DA          neg     edx
00394C7C  |.  F7D8          neg     eax
00394C7E  |.  83DA 00       sbb     edx, 0
00394C81  |>  5F            pop     edi
00394C82  |.  5E            pop     esi
00394C83  |.  5B            pop     ebx
00394C84  |.  5D            pop     ebp
00394C85  |.  C2 0800       retn    8
00394C88  |>  F7F3          div     ebx
00394C8A  |.  33D2          xor     edx, edx
00394C8C  \.^ EB F3         jmp     short 00394C81
00394C8E   .  56            push    esi
00394C8F   .  8B7424 0C     mov     esi, dword ptr [esp+C]
00394C93   .  237424 08     and     esi, dword ptr [esp+8]
00394C97   .  83FE FF       cmp     esi, -1
00394C9A   .  75 11         jnz     short 00394CAD
00394C9C   .  8BF0          mov     esi, eax
00394C9E   .  0BF2          or      esi, edx
00394CA0   .  81FE 00000080 cmp     esi, 80000000
00394CA6   .  75 05         jnz     short 00394CAD
00394CA8   .  8BC6          mov     eax, esi
00394CAA   .  5E            pop     esi
00394CAB   .  48            dec     eax
00394CAC   .  C3            retn
【算法总结】
1.取得C:的容量,除以4300得到机器码unique ID
2.机器码开放后乘以3.141得到K
2.k减去注册码的一半,如果结果小于等于100,注册成功,否则失败
【破解总结】
爆破极度简单,属于秒杀型。
【算法注册机】
VB取硬盘容量稍显麻烦,既然有unique ID显示,不妨采用一个偷懒的方法
Private Sub Command1_Click()

    Dim MachineCode As String
    Dim Serial As Single
    
    MachineCode = Trim(Text1.Text)
    If InStr(MachineCode, "017151.4300ttz") > 0 Then
        MachineCode = Replace(MachineCode, "017151.4300ttz", "")
        MachineCode = Replace(MachineCode, "ID NUMBER = ", "")
        Serial = Int(Sqr(Val(Trim(MachineCode))) * 3.141) * 2 + 100
        Text2.Text = Serial
    Else
        Text1.Text = "Please Check Your Unique ID"
    End If
End Sub
untitled.GIF
TTFtoDXF_keygen.rar (3.54 KB, 下载次数: 10)
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

疯子韩 发表于 2010-3-3 17:36
楼主的第一次啊!呵呵,支持原创作品
落日余晖 发表于 2010-3-21 11:16
hanqingv21 发表于 2010-3-22 15:21
落雪飞花 发表于 2011-2-11 14:06
不错 支持!收藏了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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