飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4029|回复: 2

[转贴] 爆破CChess v2.1 for Windows CE

[复制链接]
  • TA的每日心情
    难过
    4 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-2-7 21:55:00 | 显示全部楼层 |阅读模式
    昨天拿出N年前买的古董PPC,传上几本电子书,顺便找了个中国象棋游戏CChess v2.1装上,运行后显示未注册只能用7天。可能软件太不出名,没搜到注册码。由于没搞过PPC,也不懂ARM汇编,报着碰运气的观点,用IDA逆向了一下,还真找到关键代码了:

    .text:00015018                 CMP     R0, R3
    .text:0001501C                 MOV     R0, R4
    .text:00015020                 BNE     loc_15058
    .text:00015024                 LDR     R2, =aCchess2_1_2
    .text:00015028                 MOV     R3, #0x40
    .text:0001502C                 LDR     R1, =aRegisterSucces
    .text:00015030                 BL      _MessageBoxW_CWnd__QAAHPBG0I_Z ; CWnd::MessageBoxW(ushort const *,ushort const *,uint)
    .text:00015034                 BL      sub_15A94
    .text:00015038                 LDR     R0, =unk_37858
    .text:0001503C                 MOV     R1, #0x63
    .text:00015040                 STR     R1, [R0]
    .text:00015044                 B       loc_15068
    .text:00015044 ; -------------------------------------?
    .text:00015048 off_15048       DCD unk_37858           ; DATA XREF: sub_14EB8+180r
    .text:0001504C off_1504C       DCD aRegisterSucces     ; DATA XREF: sub_14EB8+174r
    .text:0001504C                                         ; "Register Success! Thank you!"
    .text:00015050 off_15050       DCD aCchess2_1_2        ; DATA XREF: sub_14EB8+16Cr
    .text:00015050                                         ; "CChess2.1"
    .text:00015054 off_15054       DCD unk_37854           ; DATA XREF: sub_14EB8:loc_14FF8r
    .text:00015058 ; -------------------------------------?
    .text:00015058
    .text:00015058 loc_15058                               ; CODE XREF: sub_14EB8+168j
    .text:00015058                 LDR     R2, =aCchess2_1_3
    .text:0001505C                 MOV     R3, #0x10
    .text:00015060                 LDR     R1, =aRegiste**iled
    .text:00015064                 BL      _MessageBoxW_CWnd__QAAHPBG0I_Z ; CWnd::MessageBoxW(ushort const *,ushort const *,uint)
    .text:00015068
    .text:00015068 loc_15068                               ; CODE XREF: sub_14EB8+18Cj
    .text:00015068                 MOV     R0, R4
    .text:0001506C
    .text:0001506C loc_1506C                               ; CODE XREF: sub_14EB8+150j
    .text:0001506C                 MOV     R1, #1
    .text:00015070                 BL      _EndDialog_CDialog__QAAXH_Z ; CDialog::EndDialog(int)
    .text:00015074                 B       loc_15298



    虽然不懂ARM的汇编,但是发现和MSIL有点相似,LDR代表读取地址,B代码分支(branch)。看来关键的比较就是这句.text:00015020   BNE     loc_15058,不相同则跳到出错框,相等就注册成功,典型的爆破。

    下面就是咋修改了,下了ARM指令的说明,没找到NOP类似的空语句,可是发现ARM的指令都是4字节的。晕,那就干脆把BNE换成LDR     R2, =aCchess2_1_2,反正这条语句运行两遍也没关系。

    用UltraEdit打开文件,将0x00004420处的0C 00 00 1A换为LDR的数据24 20 9F E5,保存,上传。

    注册时啥也不输入,点击register,搞定。呵呵,以后入睡前可以在古董PPC上玩会儿象棋了。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-2-9 11:35:24 | 显示全部楼层
    在这儿也看到,支持一下的说!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-3-7 16:35:45 | 显示全部楼层
    看不懂啊!!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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