飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3942|回复: 10

【破文标题】忠诚卫士V1.0简单浮点算法分析

[复制链接]
  • TA的每日心情
    擦汗
    2017-9-28 11:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2006-1-9 20:45:22 | 显示全部楼层 |阅读模式
    【破文标题】忠诚卫士V1.0简单浮点算法分析
    【破文作者】pentalce[PYG][DFCG][OCN][D.4s]
    【作者邮箱】
    【作者主页】www.chinapyg.com
    破解工具】OD,ECE,Peid
    【破解平台】Win9x/NT/2000/XP
    【软件名称】忠诚卫士V1.0
    【软件大小】1.8M
    【原版下载】http://www.dywt.com.cn/vbs/viewFile.asp?BoardID=124&ID=37531
    【保护方式】
    【软件简介】历经半月.精尽打造.忠诚卫士1.0,欢迎试用.如果注册,感激不尽...
    写得不好不要骂人哦...
    软件写的很烂的~还收费。。。。。。
    ------------------------------------------------------------------------
    【破解过程】1、用Peid查壳
    显示无壳。那好说OD载入吧~
    2、算法分析
    说实话,偶编程不行。特别是看到VB就头痛。一般看见VB的程序我不会去破解的。
    运行试一下。
    机器码:-2161713656
    注册名:pentacle
    注册码:789789
    弹出失败窗口
    好。OD载入
    下断bp MessageBoxA,按上述再来一次
    77D5050B >  8BFF            MOV EDI,EDI   //我们断在这儿。看右下角的堆栈友好提示
    0012EC98   10061EA6  返回到 krnln.10061EA6 来自 USER32.MessageBoxA
    接下来我们Alt+F9执行到返回。这个时候就到主程序的领空了
    0054831D    83C4 28         ADD ESP,28        //返回主程序的领空了
    我们往上看
    00548283   /74 09           JE SHORT 忠诚卫士.0054828E
    00548285   |53              PUSH EBX
    00548286   |E8 E9490000     CALL 忠诚卫士.0054CC74
    0054828B   |83C4 04         ADD ESP,4
    0054828E   \68 04000080     PUSH 80000004
    00548293    6A 00           PUSH 0
    00548295    68 A5324000     PUSH 忠诚卫士.004032A5                       ; 恭喜...
    0054829A    68 01030080     PUSH 80000301
    0054829F    6A 00           PUSH 0
    005482A1    68 40000000     PUSH 40
    005482A6    68 04000080     PUSH 80000004
    005482AB    6A 00           PUSH 0
    005482AD    68 940D4800     PUSH 忠诚卫士.00480D94                       ; 你的软件注册成功...\n\n再次感谢你注册<忠诚卫士>
    005482B2    68 03000000     PUSH 3
    005482B7    BB 00030000     MOV EBX,300
    005482BC    E8 BF490000     CALL 忠诚卫士.0054CC80
    005482C1    83C4 28         ADD ESP,28
    005482C4    68 01000100     PUSH 10001
    005482C9    68 B3030106     PUSH 60103B3
    005482CE    68 B4030152     PUSH 520103B4
    005482D3    68 01000000     PUSH 1
    005482D8    BB 60030000     MOV EBX,360
    005482DD    E8 9E490000     CALL 忠诚卫士.0054CC80
    005482E2    83C4 10         ADD ESP,10
    005482E5    E9 74000000     JMP 忠诚卫士.0054835E
    005482EA    68 04000080     PUSH 80000004
    005482EF    6A 00           PUSH 0
    005482F1    68 E8324000     PUSH 忠诚卫士.004032E8                       ; 不好意思...
    005482F6    68 01030080     PUSH 80000301
    005482FB    6A 00           PUSH 0
    005482FD    68 30000000     PUSH 30
    00548302    68 04000080     PUSH 80000004
    00548307    6A 00           PUSH 0
    00548309    68 C20D4800     PUSH 忠诚卫士.00480DC2                       ; 注册码错误.请检查后再注册...
    0054830E    68 03000000     PUSH 3
    00548313    BB 00030000     MOV EBX,300
    00548318    E8 63490000     CALL 忠诚卫士.0054CC80
    0054831D    83C4 28         ADD ESP,28

    再向上走。
    00548096    68 01000000     PUSH 1                                   ; 下面都是浮点运算了
    0054809B    BB 64010000     MOV EBX,164
    005480A0    E8 DB4B0000     CALL 忠诚卫士.0054CC80
    005480A5    83C4 10         ADD ESP,10
    005480A8    8945 E8         MOV DWORD PTR SS:[EBP-18],EAX
    005480AB    8955 EC         MOV DWORD PTR SS:[EBP-14],EDX
    005480AE    DD45 E8         FLD QWORD PTR SS:[EBP-18]                ; 真正的机器码
    005480B1    DC25 A5374000   FSUB QWORD PTR DS:[4037A5]               ; 真正的机器码-39542454
    005480B7    DD5D E0         FSTP QWORD PTR SS:[EBP-20]               ; 真正的注册码
    005480BA    DD45 F4         FLD QWORD PTR SS:[EBP-C]                 ; 假的注册码
    005480BD    DC65 E0         FSUB QWORD PTR SS:[EBP-20]               ; 假注册码-真注册码
    005480C0    D9E4            FTST                                     ; 0检测,即检测上面的减法结果是否为0
    005480C2    DFE0            FSTSW AX                                 ; 保存标志位
    005480C4    F6C4 01         TEST AH,1
    005480C7    74 02           JE SHORT 忠诚卫士.005480CB
    005480C9    D9E0            FCHS
    005480CB    DC1D 8C0D4800   FCOMP QWORD PTR DS:[480D8C]              ; 消除误差再次比较
    005480D1    DFE0            FSTSW AX
    005480D3    F6C4 41         TEST AH,41
    005480D6    0F84 0E020000   JE 忠诚卫士.005482EA                         ; 关键跳转,跳就OVER


    通过跟踪发现。真正的机器码和注册窗口中显示的机器码不一样~
    于是我用ECE来分析一下吧。
    晕~这么多窗口。全是默认名称。怎么找呢?
    于是我想。这个注册窗口中有五个按钮和三个编辑框,嘿,还没有。
    不过找到有三个编辑框的窗口。OK,就是你了~
    于是我们来到
    00541C2E    55              PUSH EBP                                 ; 机器码得到的地方
    00541C2F    8BEC            MOV EBP,ESP
    00541C31    81EC 18000000   SUB ESP,18
    00541C37    68 00000000     PUSH 0
    00541C3C    BB C4060000     MOV EBX,6C4
    00541C41    E8 3AB00000     CALL 忠诚卫士.0054CC80                       ; 取硬盘特征字(),易语言的一个命令
    00541C46    83C4 04         ADD ESP,4
    00541C49    68 01030080     PUSH 80000301
    00541C4E    6A 00           PUSH 0
    00541C50    50              PUSH EAX
    00541C51    68 01000000     PUSH 1
    00541C56    BB 64010000     MOV EBX,164
    00541C5B    E8 20B00000     CALL 忠诚卫士.0054CC80
    00541C60    83C4 10         ADD ESP,10
    00541C63    8945 F4         MOV DWORD PTR SS:[EBP-C],EAX
    00541C66    8955 F8         MOV DWORD PTR SS:[EBP-8],EDX
    00541C69    DD45 F4         FLD QWORD PTR SS:[EBP-C]                 ; 取回的特征字,即真正的机器码
    00541C6C    DC25 97484600   FSUB QWORD PTR DS:[464897]               ; 真正的机器码-19771227
    00541C72    DD5D EC         FSTP QWORD PTR SS:[EBP-14]               ; 保存结果
    00541C75    68 01060080     PUSH 80000601
    00541C7A    FF75 F0         PUSH DWORD PTR SS:[EBP-10]
    00541C7D    FF75 EC         PUSH DWORD PTR SS:[EBP-14]
    00541C80    68 01000000     PUSH 1
    00541C85    BB 68010000     MOV EBX,168
    00541C8A    E8 F1AF0000     CALL 忠诚卫士.0054CC80                       ; 这个就是我们看到的机器码

    OK。就此程序已经分析的差不多了~
    经分析:注册成功后注册信息保存在
    C:\windows\system.ini文件中(要是程序一个出错怎么哪?)
    在文件尾写如下数据
    [zcws]
    yhm=pentacle
    zcm=-2181484883

    易语言注册机源码:
    注册码框.内容=到文本(取硬盘特征字()-39542454)




    ------------------------------------------------------------------------
    【破解总结】算法总结:
    注册码=机器码+19771227-39542454
    附上我的注册信息
    机器码:-2161713656
    注册名:pentacle
    注册码:-2181484883

    ------------------------------------------------------------------------
    【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-9 21:07:51 | 显示全部楼层
    支持兄弟没话说,!
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-1-10 00:31:27 | 显示全部楼层
    1. 【软件简介】历经半月.精尽打造.忠诚卫士1.0,欢迎试用.如果注册,感激不尽...
    复制代码


    这你也忍心搞?

    不过我是绝对支持的说!呵呵!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-10 08:29:24 | 显示全部楼层
    学习的说!
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-1-18 17:27
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2006-1-10 09:02:22 | 显示全部楼层
    学习,好文章
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-10 09:41:35 | 显示全部楼层
    呵呵,软件写的很烂的~还收费。。。。。。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-28 11:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2006-1-10 10:50:11 | 显示全部楼层
    唉。只是发个算法贴出来。
    第二次接触浮点计算~
    第一个是PYG2006的认证CrackMe的Keyfile~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-10 11:29:25 | 显示全部楼层
    支持兄弟```学习中。。。```哈```
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-10 12:41:26 | 显示全部楼层
    好文,我前几天也碰到个浮点运算的,兄弟分析的厉害的说!
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-28 11:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2006-1-10 17:16:45 | 显示全部楼层
    原帖由 紫色缘 于 2006-1-10 12:41 发表
    好文,我前几天也碰到个浮点运算的,兄弟分析的厉害的说!


    :L:L:L:L:L:L
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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