【文章标题】: 第一个-手机游戏爆破
【文章作者】: wangdell
【软件名称】: TextTwist.exe
【下载地址】: 自己搜索下载
【编写语言】: arm
【使用工具】: IDA WM6SDK UE
【操作平台】: wince
--------------------------------------------------------------------------------
【详细过程】
老婆手机中很多小游戏,都需要注册。一直想看看wince到底是怎么回事。弄了两天,终于搞懂一些。刚开始看指令,
好象不太难,以为很简单,但里面是非明码比较,无法追码,算法看了半天也没看懂,可能是用了什么现成的算法库。
有时间再细研究吧,手机游戏的处女破,就不和她缠绵了,先爆破一下。hiahia.
1、准备
1.1IDA 打开Texttwister.exe。静态分析。
1.2开Activesync。文件=>连接设置 中 选择DMA。
1.3开启WM6SDK带的设仿真器管理器,选Pocket pc 20003 SE仿真程序,右键“连接”。
1.4选Pocket pc 20003 SE仿真程序,右键“插入底座”。等待activysync和仿真器连接和同步。
1.5真机中试运行,在程序底部tools->register菜单中,可进入注册对话框,提示输入用户名和密码。
2、调试
在IDA的imports中浏览api,看到DialogBoxIndirectParamW.按x查调用处,并在其上尝试设断。最终找到
.text:00015B28 MOV R3, #0
.text:00015B2C MOV R1, R0 ; hDialogTemplate
.text:00015B30 STR R3, [SP,#0x29C+dwInitParam]
.text:00015B34 LDR R3, =regdlgporc ; lpDialogFunc
.text:00015B38 MOV R2, R6 ; hWndParent
.text:00015B3C LDR R0, [R4] ; hInstance
.text:00015B40 BL DialogBoxIndirectParamW
.text:00015988 SUB SP, SP, #0x35C
.text:0001598C MOV R3, #WM_INITDIALOG
.text:00015990 MOV R4, R0
.text:00015994 CMP R1, R3
.text:00015998 BEQ loc_15A18
.text:0001599C MOVL R3, WM_COMMAND
.text:000159A4 CMP R1, R3
.text:000159A8 BNE loc_159C4
.text:000159AC MOV R3, R2,LSL#16
.text:000159B0 MOV R5, R3,LSR#16
.text:000159B4CMP R5, #1
.text:000159B8 BEQ loc_159CC
.text:000159BC CMP R5, #2
.text:000159C0 BEQ loc_159CC
.text:000159C4
.text:000159C4 loc_159C4 ; CODE XREF: regdlgporc+24j
.text:000159C4 MOV R0, #0
.text:000159C8 B loc_15AA8
.text:000159CC ; ---------------------------------------------------------------------------
.text:000159CC
.text:000159CC loc_159CC ; CODE XREF: regdlgporc+34j
.text:000159CC ; regdlgporc+3Cj
.text:000159CC LDR R2, =name ; lpString
.text:000159D0 MOV R3, #0x64 ; 'd' ; nMaxCount
.text:000159D4 MOV R1, #0x65 ; 'e' ; nIDDlgItem
.text:000159D8 MOV R0, R4 ; hDlg
.text:000159DC BL GetDlgItemTextW
.text:000159E0 LDR R2, =code ; lpString
.text:000159E4 MOV R3, #0x64 ; 'd' ; nMaxCount
.text:000159E8 MOV R1, #0x66 ; 'f' ; nIDDlgItem
.text:000159EC MOV R0, R4 ; hDlg
.text:000159F0 BL GetDlgItemTextW
.text:000159F4 MOV R1, R5 ; nResult
.text:000159F8 MOV R0, R4 ; hDlg
.text:000159FC BL EndDialog
.text:00015A00 MOV R1, #1 ; st
.text:00015A04 MOV R0, R4 ; hwnd
.text:00015A08 BL SHSipPreference
.text:00015A0C B loc_15AA4
.text:00015B78 MOV R3, R0,LSL#16
.text:00015B7C MOVS R5, R3,ASR#16
.text:00015B80 NOP
.text:00015B84 MOV R1, #1
.text:00015B88 MOV R0, R7
.text:00015B8C BL codecpy
.text:00015B90 B loc_15BB4
.text:00015B94 ; ---------------------------------------------------------------------------
.text:00015B94 MOVL R3, 0xFFFFFFEA
.text:00015B98 CMP R5, R3
.text:00015B9C BNE loc_15BB0
.text:00015BA0 MOVL R0, 0x1B6C
.text:00015BA8 BL sub_155D0
.text:00015BAC B loc_15BB4
.text:00015BB0 ; ---------------------------------------------------------------------------
.text:00015BB0
.text:00015BB0 loc_15BB0 ; CODE XREF: sub_15AB8+E4j
.text:00015BB0 BL sub_15F8C
.text:00015BB4
.text:00015BB4 loc_15BB4 ; CODE XREF: sub_15AB8+D8j
.text:00015BB4 ; sub_15AB8+F4j
.text:00015BB4 CMP R5, #0
.text:00015BB8 BNE loc_15B04
.text:00015BBC BL sub_1876C
.text:00015BC0
.text:00015BC0 loc_15BC0 ; CODE XREF: sub_15AB8+98j
.text:00015BC0 MOV R0, #0
.text:00015BC4
.text:00015BC4 loc_15BC4 ; CODE XREF: sub_15AB8+40j
.text:00015BC4 ADD SP, SP, #0x288
.text:00015BC8 LDMFD SP!, {R4-R7,PC}
.text:00015B40 BL DialogBoxIndirectParamW
.text:00015B44 MOV R3, R0,LSL#16
.text:00015B48 MOV R3, R3,ASR#16
.text:00015B4CCMP R3, #1
.text:00015B50 BNE loc_15BC0
.text:00015B54 CMP R7, #0
.text:00015B58 BEQ loc_15B70
.text:00015B5C MOV R0, R7
.text:00015B60 BL codecheck_0
.text:0001A6A8 codecheck_0 ; CODE XREF: sub_15AB8+A8p
.text:0001A6A8 ; sub_19B38+14p ...
.text:0001A6A8
.text:0001A6A8 name1 = -0x30C
.text:0001A6A8 var_28C = -0x28C
.text:0001A6A8 name = -0x288
.text:0001A6A8
.text:0001A6A8 STMFD SP!, {R4,LR}
.text:0001A6AC SUB SP, SP, #0x304
.text:0001A6B0 MOV R4, R0
.text:0001A6B4 MOV R3, #0x284
.text:0001A6B8 ADD R0, SP, #0x30C+var_28C
.text:0001A6BC STR R3, [SP,#0x30C+var_28C]
.text:0001A6C0 BL regkey
.text:0001A6C4 ADD R1, SP, #0x30C+name ; wchar_t *
.text:0001A6C8 ADD R0, SP, #0x30C+name1 ; wchar_t *
.text:0001A6CC BL wcscpy
.text:0001A6D0 MOV R2, #1
.text:0001A6D4 ADD R1, SP, #0x30C+name1
.text:0001A6D8 MOV R0, R4
.text:0001A6DC BL codecheck
.text:0001A6E0 ADD SP, SP, #0x304
.text:0001A6E4 LDMFD SP!, {R4,PC}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: