飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4695|回复: 9

[原创] 宝蓝成绩统计V8.0爆破分析 By XbB

[复制链接]
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

    发表于 2008-6-1 03:04:27 | 显示全部楼层 |阅读模式
    程序有机器码:Y2TG201E为Borland Delphi 6.0 - 7.0编制。

    分析:
    1、程序应该是在启动时对注册文件进行检测,并对注册文件内所包含的注册信息进行验证。
    2、需要注意:可能在没有检测到注册文件时,对注册码验证的代码是不会进行的。
       可查找字串确定启动验证处,看能否分析代码找出文件名
    3、通过查找字串可找到“您已经注册了本软件,请保管好软件目录中名为“sn.dat”的注册文件!”此为注册提示的字符串,从这可以得知Sn.dat为注册文件名。

    005EB824    55              PUSH EBP
    005EB825    68 30B95E00     PUSH Blcjtj_U.005EB930
    005EB82A    64:FF30         PUSH DWORD PTR FS:[EAX]
    005EB82D    64:8920         MOV DWORD PTR FS:[EAX],ESP
    005EB830    A1 78B86000     MOV EAX,DWORD PTR DS:[60B878]
    005EB835    8B15 74B86000   MOV EDX,DWORD PTR DS:[60B874]
    005EB83B    E8 E093E1FF     CALL Blcjtj_U.00404C20
    005EB840    75 1D           JNZ SHORT Blcjtj_U.005EB85F
    005EB842    6A 00           PUSH 0
    005EB844    B9 3CB95E00     MOV ECX,Blcjtj_U.005EB93C                ; 注册提示
    005EB849    BA 48B95E00     MOV EDX,Blcjtj_U.005EB948                ; 您已经注册了本软件,请保管好软件目录中名为“sn.dat”的注册文件!
    005EB84E    A1 94BD6000     MOV EAX,DWORD PTR DS:[60BD94]
    005EB853    8B00            MOV EAX,DWORD PTR DS:[EAX]
    005EB855    E8 F61EE8FF     CALL Blcjtj_U.0046D750
    005EB85A    E9 B6000000     JMP Blcjtj_U.005EB915

    005EB85F   .  6A 04         PUSH 4
    005EB861   .  68 94B95E00   PUSH Blcjtj_U.005EB994                   ;     《宝蓝快速语音成绩统计》V8.0是一款共享软件,只有注册后你才能使用本软件的\r打印功能,注册用户还可以获得更多的技术支持及免费升级到今后的新版本。\r\r    机器码为:

    005EB861下10+行是软件注册按钮按下后弹出的窗口中显示的已注册或未注册的内容。

    005EB849这行被加密。

    005EB850这行的跳转来自 005EB7D9


    *****************************************************************
    重启验证

    00549341  |> \833D 78B86000>CMP DWORD PTR DS:[60B878],0
    00549348  |.  74 12         JE SHORT Blcjtj_U.0054935C
    0054934A  |.  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    0054934F  |.  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    00549355  |.  E8 C6B8EBFF   CALL Blcjtj_U.00404C20
    0054935A  |.  74 2A         JE SHORT Blcjtj_U.00549386
    0054935C  |> \A1 F0DE6000   MOV EAX,DWORD PTR DS:[60DEF0]
    00549361  |.  8B80 20070000 MOV EAX,DWORD PTR DS:[EAX+720]
    00549367  |.  8B80 08020000 MOV EAX,DWORD PTR DS:[EAX+208]
    0054936D  |.  BA 02000000   MOV EDX,2
    00549372  |.  E8 E940F4FF   CALL Blcjtj_U.0048D460
    00549377  |.  BA 20955400   MOV EDX,Blcjtj_U.00549520                ;  试用版本请注册使用本软件
    0054937C  |.  E8 3B40F4FF   CALL Blcjtj_U.0048D3BC
    00549381  |.  E9 CB000000   JMP Blcjtj_U.00549451
    00549386  |> \A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    0054938B  |.  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    00549391  |.  E8 8AB8EBFF   CALL Blcjtj_U.00404C20
    00549396  |.  0F85 B5000000 JNZ Blcjtj_U.00549451

    爆破
    00549348   /74 12           JE SHORT Blcjtj_U.0054935C           ;NOP
    0054935A   /74 2A           JE SHORT Blcjtj_U.00549386           ;JMP
    00549396   /0F85 B5000000   JNZ Blcjtj_U.00549451                ;NOP

    *****************************************************************

    打印限制


    0054D814   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    0054D81B   .  74 16         JE SHORT Blcjtj_U.0054D833
    0054D81D   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    0054D822   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    0054D828   .  E8 F373EBFF   CALL Blcjtj_U.00404C20
    0054D82D   .  0F84 15010000 JE Blcjtj_U.0054D948
    0054D833   >  6A 00         PUSH 0
    0054D835   .  B9 C42B5500   MOV ECX,Blcjtj_U.00552BC4                ;  打印提示
    0054D83A   .  BA D02B5500   MOV EDX,Blcjtj_U.00552BD0                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!



    005532D9   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    005532E0   .  74 16         JE SHORT Blcjtj_U.005532F8
    005532E2   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    005532E7   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    005532ED   .  E8 2E19EBFF   CALL Blcjtj_U.00404C20
    005532F2   .  0F84 15010000 JE Blcjtj_U.0055340D
    005532F8   >  6A 00         PUSH 0
    005532FA   .  B9 9C4E5500   MOV ECX,Blcjtj_U.00554E9C                ;  打印提示
    005532FF   .  BA A84E5500   MOV EDX,Blcjtj_U.00554EA8                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!



    005A077C   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    005A0783   .  74 16         JE SHORT Blcjtj_U.005A079B
    005A0785   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    005A078A   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    005A0790   .  E8 8B44E6FF   CALL Blcjtj_U.00404C20
    005A0795   .  0F84 1B010000 JE Blcjtj_U.005A08B6
    005A079B   >  6A 00         PUSH 0
    005A079D   .  B9 70335D00   MOV ECX,Blcjtj_U.005D3370                ;  打印提示
    005A07A2   .  BA 7C335D00   MOV EDX,Blcjtj_U.005D337C                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!



    005D43C9   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    005D43D0   .  74 16         JE SHORT Blcjtj_U.005D43E8
    005D43D2   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    005D43D7   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    005D43DD   .  E8 3E08E3FF   CALL Blcjtj_U.00404C20
    005D43E2   .  0F84 15010000 JE Blcjtj_U.005D44FD
    005D43E8   >  6A 00         PUSH 0
    005D43EA   .  B9 C0B75D00   MOV ECX,Blcjtj_U.005DB7C0                ;  打印提示
    005D43EF   .  BA CCB75D00   MOV EDX,Blcjtj_U.005DB7CC                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!



    005DC31F   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    005DC326   .  74 16         JE SHORT Blcjtj_U.005DC33E
    005DC328   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    005DC32D   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    005DC333   .  E8 E888E2FF   CALL Blcjtj_U.00404C20
    005DC338   .  0F84 15010000 JE Blcjtj_U.005DC453
    005DC33E   >  6A 00         PUSH 0
    005DC340   .  B9 F83E5E00   MOV ECX,Blcjtj_U.005E3EF8                ;  打印提示
    005DC345   .  BA 043F5E00   MOV EDX,Blcjtj_U.005E3F04                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!



    005EDE5E   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    005EDE65   .  74 12         JE SHORT Blcjtj_U.005EDE79
    005EDE67   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    005EDE6C   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    005EDE72   .  E8 A96DE1FF   CALL Blcjtj_U.00404C20
    005EDE77   .  74 6B         JE SHORT Blcjtj_U.005EDEE4
    005EDE79   >  6A 00         PUSH 0
    005EDE7B   .  B9 84AE5F00   MOV ECX,Blcjtj_U.005FAE84                ;  打印提示
    005EDE80   .  BA 90AE5F00   MOV EDX,Blcjtj_U.005FAE90                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!


    00601ACA   .  833D 78B86000>CMP DWORD PTR DS:[60B878],0
    00601AD1   .  74 16         JE SHORT Blcjtj_U.00601AE9
    00601AD3   .  A1 78B86000   MOV EAX,DWORD PTR DS:[60B878]
    00601AD8   .  8B15 74B86000 MOV EDX,DWORD PTR DS:[60B874]
    00601ADE   .  E8 3D31E0FF   CALL Blcjtj_U.00404C20
    00601AE3   .  0F84 15010000 JE Blcjtj_U.00601BFE
    00601AE9   >  6A 00         PUSH 0
    00601AEB   .  B9 102C6000   MOV ECX,Blcjtj_U.00602C10                ;  打印提示
    00601AF0   .  BA 1C2C6000   MOV EDX,Blcjtj_U.00602C1C                ;  未注册版本不能使用报表输出打印功能!单击“确定”可预览程序直接输出的成绩报表例子!

    00601ACA的60B878为0,并在这行对其进行比较,为0则00601AD1跳走提示未注册版不能使用打印功能。

    00601AD8这行的60B874里的值与00601AD3这行的60B878内的值相等则00601AE3这行跳未注册提示。

    怀疑60B874与60B878二处的值为注册标志位。


    一、跟踪:

    1、对60B874和60B878二处下硬件写入断点,即:hw 60B874;hw 60B878

    004048A0   > \8710          XCHG DWORD PTR DS:[EAX],EDX

    60B874在上面这行内容为机器码;60B878未有数据写入

    2、对60B874和60B878二处下硬件访问断点,即:hr 60B874;hr 60B878

    a、00404824   $  8B10          MOV EDX,DWORD PTR DS:[EAX]

    60B878在上面这行被访问

    b、004048A0   > \8710          XCHG DWORD PTR DS:[EAX],EDX

    60B874在上面这行被访问,其内容为机器码

    c、00549341  |> \833D 78B86000>CMP DWORD PTR DS:[60B878],0

    60B878在上面被访问,此行为程序启动后显示未注册或已授权字符串的判断

    再分析:通过上面的跟踪,可以知道,程序在60B878始终没有写入数据,仅读取,但不排除程序在检测到Sn.dat文件并验证通过后不对60B878进行写入操作;程序在60B874处有访问也有写入,保存的是机器,最终有可能会保存真的注册码,原因在549348这行。


    二、制作一个假的Sn.dat文件,来看60B874和60B878的访问与写入情况有何不同。
    这次在60B874和60B878二处同时设置访问和写入的硬件断点。

    可惜,程序运行后程序提示“'$'is not a valid integer value.”,应该是注册码的类型不对,这次全填字母看看……不行。看来此方法行不通,放弃。



    *****************************************************************
    打印菜单里的限制


    1、软件注册菜单项
    005EB840   /75 1D           JNZ SHORT Blcjtj_U.005EB85F        ;NOP

    2、打印菜单项

    a、班级记分表
    00601AD1   /74 16           JE SHORT Blcjtj_U.00601AE9               ; NOP
    00601AE3   /0F84 15010000   JE Blcjtj_U.00601BFE                     ;JMP
    00601C0E   /0F85 600E0000   JNZ Blcjtj_U.00602A74                    ; NOP

    b、班级成绩表
    005DC326   /74 16           JE SHORT Blcjtj_U.005DC33E               ; NOP
    005DC338   /0F84 15010000   JE Blcjtj_U.005DC453                     ; JMP
    005DC463   /0F85 B76C0000   JNZ Blcjtj_U.005E3120                    ; NOP

    c、年级优生表
    005D43D0   /74 16           JE SHORT Blcjtj_U.005D43E8
    005D43E2   /0F84 15010000   JE Blcjtj_U.005D44FD
    005D450D   /0F85 C6650000   JNZ Blcjtj_U.005DAAD9

    d、成绩分析表
    005A0783   /74 16           JE SHORT Blcjtj_U.005A079B
    005A0795   /0F84 1B010000   JE Blcjtj_U.005A08B6
    005A08C6   /0F85 F5B50200   JNZ Blcjtj_U.005CBEC1

    e、评比汇总表
    005553D4   /74 16           JE SHORT Blcjtj_U.005553EC
    005553E6   /0F84 1B010000   JE Blcjtj_U.00555507
    00555517   /0F85 E4150400   JNZ Blcjtj_U.00596B01

    f、三率数据表
    005EDE65   /74 12           JE SHORT Blcjtj_U.005EDE79
    005EDE77   /74 6B           JE SHORT Blcjtj_U.005EDEE4
    005EDEF4   /0F85 A4B60000   JNZ Blcjtj_U.005F959E

    g、考号考室表
    005532E0   /74 16           JE SHORT Blcjtj_U.005532F8
    005532F2   /0F84 15010000   JE Blcjtj_U.0055340D
    0055341D   /0F85 80170000   JNZ Blcjtj_U.00554BA3

    h、个人成绩条
    0054D81B   /74 16           JE SHORT Blcjtj_U.0054D833
    0054D82D   /0F84 15010000   JE Blcjtj_U.0054D948
    0054D958   /0F85 B1480000   JNZ Blcjtj_U.0055220F

    保存程序,运行测试,成功。


    *****************************************************************
    未注册不能打印提示


    00525CCF   .  A1 2CBA6000   MOV EAX,DWORD PTR DS:[60BA2C]
    00525CD4   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
    00525CD6   .  8B15 30B96000 MOV EDX,DWORD PTR DS:[60B930]            ;  Blcjtj_U.0060B874
    00525CDC   .  8B12          MOV EDX,DWORD PTR DS:[EDX]
    00525CDE   .  E8 3DEFEDFF   CALL Blcjtj_U.00404C20
    00525CE3   .  0F85 086A0000 JNZ Blcjtj_U.0052C6F1

    …………

    0052C6F1   > \6A 00         PUSH 0
    0052C6F3   .  B9 2CD45200   MOV ECX,Blcjtj_U.0052D42C                ;  操作提示
    0052C6F8   .  BA D4DD5200   MOV EDX,Blcjtj_U.0052DDD4                ;  未注册版本不能使用报表输出打印功能!



    0053211B   .  A1 2CBA6000   MOV EAX,DWORD PTR DS:[60BA2C]
    00532120   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
    00532122   .  8B15 30B96000 MOV EDX,DWORD PTR DS:[60B930]            ;  Blcjtj_U.0060B874
    00532128   .  8B12          MOV EDX,DWORD PTR DS:[EDX]
    0053212A   .  E8 F12AEDFF   CALL Blcjtj_U.00404C20
    0053212F   .  0F85 CE1F0000 JNZ Blcjtj_U.00534103

    …………

    00534103   > \6A 00         PUSH 0
    00534105   .  B9 E4455300   MOV ECX,Blcjtj_U.005345E4                ;  操作提示
    0053410A   .  BA 444C5300   MOV EDX,Blcjtj_U.00534C44                ;  未注册版本不能使用报表输出打印功能!

    分析:0053212F这行跳转成功的话,则跳至00534103这行执行,并提示“未注册版本不能使用报表输出打印功能”,猜测此为

    打印按钮按下后的判断。

    这一部分在打印菜单里的那些指令修改后就不起作用了。



    *****************************************************************

    小贴士

    FindFirstFile

    VB声明
    Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String,

    lpFindFileData As WIN32_FIND_DATA) As Long
    说明
    根据文件名查找文件
    返回值
    Long,如执行成功,返回一个搜索句柄。如果出错,返回一个INVALID_HANDLE_VALUE常数,一旦不再需要,应该用FindClose

    函数关闭这个句柄



    链接:https://www.chinapyg.com/viewthread.php?tid=32771&;extra=page%3D1

    [ 本帖最后由 xbb[DFCG] 于 2008-6-1 03:11 编辑 ]

    评分

    参与人数 1飘云币 +80 收起 理由
    hj2008mt + 80 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-9-9 20:17
  • 签到天数: 53 天

    [LV.5]常住居民I

    发表于 2008-6-1 09:20:03 | 显示全部楼层
    兄弟,你太厉害了啊,谢谢
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    昨天 08:34
  • 签到天数: 1662 天

    [LV.Master]伴坛终老

    发表于 2008-6-1 10:47:58 | 显示全部楼层
    真是牛人啊
    强啊
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-6-4 21:03:19 | 显示全部楼层
    兄弟,你太厉害了啊,谢谢
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-16 14:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-6-4 21:28:02 | 显示全部楼层
    /:L /:L 牛人啊
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-12-28 08:32
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-6-4 21:33:28 | 显示全部楼层
    利害哦,学习了/:014
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-5-21 10:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-6-4 21:51:15 | 显示全部楼层
    /:good 学习ing~
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

     楼主| 发表于 2008-6-6 12:56:19 | 显示全部楼层
    原帖由 冷血书生 于 2008-6-4 21:03 发表
    兄弟,你太厉害了啊,谢谢

    汗,老大不要这样说啊~你才是牛人啊!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-8 11:00:02 | 显示全部楼层
    我知道了,谢谢楼主提供,支持你的付出。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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