我刚接触手机破解一周,发个贴说说学习过程,一方面请各位指正,一方面想不到之处,请各位大侠指正。
  看了一堆关于手机软件破解的贴子,然后是准备工具:
  1。ida pro 5.2 (看雪论坛有)
  2。sis软件解包工具:extsis
  3。资源文件编辑工具:ultrarsceditor
练手的软件是guardian 1.03版,可能是RP问题,第一次练手就碰到个难的。
操作过程:
 1,extsis解压sisx文件,c_sys文件夹下面居然有10个文件。
2009-05-17  20:51           141,468 DefPlugins_200112DF.DLL
2009-05-17  20:51            90,488 DialogPIN_200107B0.DLL
2009-05-17  20:51             8,912 GuardAuto_200107AD.exe
2009-05-17  20:51            11,212 GuardCli_200107AC.dll
2009-05-17  20:51           545,984 GuardGUI_200131CC.exe
2009-05-17  20:51            65,520 Guardian_200131CB.exe
2009-05-17  20:51            85,420 GuardSrv_200107AB.exe
2009-05-17  20:51            15,516 Install_200107b2.exe
2009-05-17  20:51             7,512 Uninstall_200107b4.exe
2009-05-17  20:51            30,644 Utils_200107AE.dll
分析后决定从guardgui_200131cc.exe文件下手,因为这个文件有界面,注册成功与否的提示。
2。用ida,打开guardgui_200131cc.exe。然后把学来的招术一一试验:
   先查提示信息:"Wrong Registration Code!",没查到。然后查常用函数时间类: 
HomeTime__5TTime 
DaysFrom__C5TTimeG5TTime
判断类:
Compare__C7TDesC16RC7TDesC16
Compare__C6TDesC8RC6TDesC8 
CompareF__C7TDesC16RC7TDesC16..strcmp
读取串号类: 
GetMachineIdL 
Getgsmphoneid IMEI 
GetSubscriberId IMEI
基本没有什么有价值的收获。。。
3。查不到:"Wrong Registration Code!",有两个可能,一个是串加了密,另一个可能是放在资源文件里了。用ultrarsceditor打开资源文件,查看一番,果然如此:
晕。。。发不了图

4。现在要得到的是注册成功和失败的资源ID,以及资源文件的ID
在ultraRseEditor左下框有资源ID,这个ID是从0开始编的,也就是说第一个资源的ID编号是0。而在程序中,资源ID是从1开始编。因此从这里得到的ID,在IDA中使用需要加1。在这一步,得到错误注册码的资源ID为71(0X47),正确注册码ID为70(0X46)。接下是是查这个资源文件的ID,在ultrarseeditor查看文件头+08处,看到6f 8f 00 00,这个就是资源文件编码。

5。有了资源ID,如何在IDA中定位呢?我是直接查#0x46
得到如下:
.text:00013680                 STR     R0, [R11,#var_24]
.text:00013684                 LDR     R3, [R11,#var_24]
.text:00013688                 CMP     R3, #0                    ;这里是判断是否成功注册
.text:0001368C                 BNE     loc_136AC              ;如果是正确的注册码就跳到136ac
.text:00013690                 MOVL    R0, 0x8F6F000     ;这里是资源文件ID
.text:00013698                 ADD     R0, R0, #0x47       ;这时错误注册码提示ID
.text:0001369C                 BL      sub_8734               ;显示
.text:000136A0                 MOV     R3, #0
.text:000136A4                 STR     R3, [R11,#var_60]
.text:000136A8                 B       loc_137C0
.text:000136AC ; ---------------------------------------------------------------------------
.text:000136AC
.text:000136AC loc_136AC                               ; CODE XREF: sub_13640+4Cj
.text:000136AC                 LDR     R3, [R11,#var_24]
.text:000136B0                 CMP     R3, #2
.text:000136B4                 BNE     loc_136D0
.text:000136B8                 LDR     R2, [R11,#var_18]
.text:000136BC                 LDR     R3, [R11,#var_18]
.text:000136C0                 LDR     R3, [R3,#0xA4]
                                                     。。。。。。省略数行

.text:000136F4                 MOV     R4, R3,ASR#31
.text:000136F8                 MOV     R2, R3
.text:000136FC                 MOV     R3, R4
.text:00013700                 BL      TDesAppendNumEx
.text:00013704                 BL      CleanupStackPopAndDestroyEv
.text:00013708                 MOVL    R0, 0x8F6F000                 ;资源文件ID
.text:00013710                 ADD     R0, R0, #0x46                    ;这里是正确注册字串的ID
.text:00013714                 BL      sub_86C4


分析就到这里。