飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5911|回复: 4

[原创] 过年了,下棋吧:美卡休闲五子棋 3.2.0

[复制链接]
  • TA的每日心情
    奋斗
    昨天 20:08
  • 签到天数: 432 天

    [LV.9]以坛为家II

    发表于 2007-1-22 23:28:36 | 显示全部楼层 |阅读模式
    http://www.onlinedown.net/soft/50993.htm
    美卡休闲五子棋 3.2.0
    界面还算是有趣的五子棋游戏,软件也不大,建议下载试玩!只是我很容易就击败它了。算了,既然分析了就贴出来吧,也有好几个月没有Guan shui 了。

    by wofan[OCN]

    MachineID:789110647
    regcode:374764717

    Microsoft Visual Basic 5.0 / 6.0
    它有MsgBox提示。
    于是用MsgBox下断,然后找到关键点重新下断:
    ……
    00465121    C745 CC 0800000>MOV DWORD PTR SS:[EBP-34],8              ; rctIsNumeric:检查注册码是否是数字
    00465128    FF15 C4104000   CALL NEAR DWORD PTR DS:[<&MSVBVM60.#561>>; MSVBVM60.rtcIsNumeric
    0046512E    66:8BF8         MOV DI,AX
    ……
    ====================================
    ……
    00465325    51              PUSH ECX                                 ; vbaR8Str:将数值型字串转为数值
    00465326    FF15 40114000   CALL NEAR DWORD PTR DS:[<&MSVBVM60.__vba>; MSVBVM60.__vbaR8Str
    0046532C    DB05 58704600   FILD DWORD PTR DS:[467058]               ; 从内存[00467058]装入整数,推入隐含的ST中:0x165674AD ,这是本机真注册码
    00465332    DD9D E0FEFFFF   FSTP QWORD PTR SS:[EBP-120]              ; 存实数上托栈:把TOP寄存器ST存储到存储单元,然后上托堆栈
    00465338    DC9D E0FEFFFF   FCOMP QWORD PTR SS:[EBP-120]             ; 浮点数比较函数
    0046533E    DFE0            FSTSW AX                                 ; 把状态字存入AX中
    00465340    F6C4 40         TEST AH,40                               ; 测试
    00465343    74 07           JE SHORT 美卡休闲.0046534C               ; 跳过去就玩完
    00465345    BF 01000000     MOV EDI,1                                ; 置注册成功的标志
    0046534A    EB 02           JMP SHORT 美卡休闲.0046534E
    0046534C    33FF            XOR EDI,EDI                              ; 清掉标志
    0046534E    8D4D E8         LEA ECX,DWORD PTR SS:[EBP-18]            ; 以下就释放对象了....
    ……
    ====================================

    那么这个存储单元的值是如何得来的呢?  
    重新载入程序,        
    d 00467058 显示出它的值0000000,然后对着它下内存写入断点,现在就盯着它看:按几次F9过后,在这里:
    ……
    00456114    83C4 0C         ADD ESP,0C                               ; 在下面下断,看它如何运算,这里出现盘符C:,一定是取C盘序列号了。
    00456117    BA 440A4500     MOV EDX,美卡休闲.00450A44                ; UNICODE "c:\"
    0045611C    66:8948 36      MOV WORD PTR DS:[EAX+36],CX
    00456120    66:8948 38      MOV WORD PTR DS:[EAX+38],CX
    00456124    8D4D D4         LEA ECX,DWORD PTR SS:[EBP-2C]
    00456127    FFD3            CALL NEAR EBX
    00456129    8D55 D4         LEA EDX,DWORD PTR SS:[EBP-2C]
    0045612C    52              PUSH EDX
    0045612D    E8 0EEA0000     CALL 美卡休闲.00464B40
    00456132    8BC8            MOV ECX,EAX                              ; 取绝对值
    00456134    FF15 74104000   CALL NEAR DWORD PTR DS:[<&MSVBVM60.__vba>; MSVBVM60.__vbaI4Abs
    0045613A    99              CDQ                                      ; 双字变四字,将EAX中符号位扩展到EDX中
    0045613B    2BC2            SUB EAX,EDX                              ; 低32位减去高32位,即减去符号位,这里得到0x2F08DF77(注明:它的十进制就是机器码)
    0045613D    8D4D D4         LEA ECX,DWORD PTR SS:[EBP-2C]
    00456140    D1F8            SAR EAX,1                                ; 右移一次,得到:0x17846FBB
    00456142    2D 0EFB2D01     SUB EAX,12DFB0E                          ; 减去一固定数:0x12DFB0E,得到0x165674AD
    00456147    0F80 45150000   JO 美卡休闲.00457692
    0045614D    A3 58704600     MOV DWORD PTR DS:[467058],EAX            ; 将EAX中的值写入内存:[00467058]


    ……
    ====================================

    总结:
    无非是取C盘序列号,右移一次,然后减去一个常数0x12DFB0E
    结果的十进制形式就是注册码。
    噢,忘记说了,该软件会检测调试器。
    22:57 2007-1-22
    这么简单,权当作作业好了。

    [ 本帖最后由 wofan 于 2007-1-22 23:37 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    昨天 20:08
  • 签到天数: 432 天

    [LV.9]以坛为家II

     楼主| 发表于 2007-1-22 23:31:15 | 显示全部楼层
    注册这么简单,而且又很快战胜它了。它也就从我的电脑里消失了。感觉是个索然无味的晚上。

    [ 本帖最后由 wofan 于 2007-1-22 23:37 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2018-7-2 23:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-2-3 15:58:01 | 显示全部楼层
    谢谢楼主!我是菜鸟!这个软件我搞了好久都没有希望!终于有大侠的教程!
    可以练手啦!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-5-3 19:45
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2007-2-4 20:53:25 | 显示全部楼层
    今天是立春诶~~

    刚发现~~~

    冬天过去咯!!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-2-2 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-2-7 22:10:15 | 显示全部楼层
    积分攒了不少,人还是菜鸟一个。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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