标 题: 【原创】Symbian S60 3rd Reverse CrAcKiNg Tutorial
作 者: cater
时 间: 2009-05-01,09:10
链 接: http://bbs.pediy.com/showthread.php?t=87583

记得去年 Cater 曾经在某群里说过要写六个手机平台的解密教程
只是 Cater 真的好忙 好辛苦的说
Symbian 是我06年久接触了,那个时候S60 2nd 版本的手机有碰过
感觉 ARM 的汇编指令也不是很难,也过了几个软件
时隔今日,塞班 S60 三版的(OS 9.x)的系统也总结总结些个教程
满足下 某人 总是威逼 小 Cater 的野兽般的欲望吧。

——————————————————————————–

Symbian S60 3rd

Reverse CrAcKiNg Tutorial

By_CaterQiu

Mail: Cater.Qiu[At]Gmail.Com

MyBlog: Http://www.caterqiu.cn

May 1th,2009

——————————————————————————–

基础知识
Symbain OS

Symbian OS(中文译音“塞班系统”)由诺基、索尼爱立信、摩托罗拉、西门子等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发智能手机操作系统,现在已经被诺基收购。

Symbian OS硬件CPU采用的是ARM系列,使用的是ARM 32位指令而非THUMB。

EPCO

Symbian操作系统的前身是EPOC,”EPOC”这个词起源于世界将会进入 “a new epoch of personal convenience”。EPOC是一个开放的操作系统,一开始的时候EPOC就加上了无线通信和 一个外加应用程序的体系,因此在无线通信方面与其他操作系统相比具备先天的优势。

Symbian S60

Nokia S60 系列手机是市面上智能机里流行最广的手机。

Symbian Series 60 是Symbian S60 的全称

S60可以细化分为第一版、第二版、第三版、第四版、第五版

第一版和第二版差别不大,笼统概括为S60 2nd 、S60二版。(包含OS6、OS7、OS8 三个系列)

第三版第四版第五版核心是 OS9系列的,笼统概括为S60 3rd 、S60三版

2nd And 3rd

S60 3rd 和 S60 2nd从操作系统上看有很大的区别:

1、三版引入了权限签名这一安全机制,可通过对程序安装包进行签名授权。

2、S60 2nd是EPOC6,S60 3rd 是EPOC9,这也意味着其ELF (Executable and Linking Format)是可执行连接格式也发生了改变

在 S60 2nd 版本中,可执行体是 EPOC6 格式的 .APP 文件和 .DLL 文件

在 S60 3rd 版本中,可执行体是 EPOC9 格式的 .EXE 文件和 .DLL 文件

3、三版和二版的程序安装包,格式是不一样的,尽管都是.sis 结尾的文件

EPOC9 格式的可执行文件是可以压缩的,三版签名后的安装包一般是.sisx

ARM CPU

ARM 公司是专门从事基于 RISC(reduced instruction set computer,精简指令集计算机) 微处理芯片制造的企业。设计出的产品性能高、成本低和能耗省的特点,适用于多种领域,例如嵌入式系统、DSP、和手机。

ARM处理器本身是32位设计,但也配备Thumb 16位指令集

——————————————————————————–

准备工作

IDA Pro 5.2

鬼斧神工逆向分析利器

下载地址:http://bbs.pediy.com/showthread.php?t=55801

IDS files for EPOC6 and EPOC9

Symbian EPOC格式标示符文件,配合IDA5.2使用,解压置IDA相关目录即可

下载地址:

http://arteam.biz.hr/downloads/Symbi…ro_by_argv.rar

WinHex

强大的磁盘编辑工具,也是非常棒的十六进制编辑器。

SisContents

S60 三版程序(Sis,Sisx) 打包、解包、签名工具。

http://symbiandev.cdtools.net

CeleASM

用于查看ARM OPCODE

宇宙杰出青年Yonsm(郭春杨) 之作

主页:WWW.Yonsm.NET

Symbian_OS_9.x-ELF_Toolz

用于解压和压缩3rd  EXE和DLL工具

当然我不是宇宙杰出青年,博客还是有的

Blog: WwW.CaterQiu.Cn

RESEdit.exe

S60 三版程序RSC资源修改工具,主要用作汉化

这四款小工具我的博客有文件打包,详情参阅

http://WwW.CaterQiu.Cn/Article/Symbi…_CaterQiu.html

——————————————————————————–

实战操作
Example:DVDPlayer 1.26.SISx (http://www.viking.tm)

Setp 1:Unpack Sis/Sisx File

名称:  Step1.Use_SisContents_Unpack_S60_3rd_Target_Sis_File.gif 查看次数: 229 文件大小:  25.3 KB
Use_SisContents_Unpack_S60_3rd_Target_Sis_File

Setp 2:UnComPress ELF File

名称:  Step2.Use_Symbian_OS_9.x_ELF_Toolz_UnComPress_Target_ELF_File.gif 查看次数: 229 文件大小:  22.4 KB
Use_Symbian_OS_9.x_ELF_Toolz_UnComPress_Target_ELF_File

Compare File Size Between Original(BAK_dvdplayer.exe) And NoCompress(dvdplayer.exe),

You Have Found dvdplayer.exe Was Unpacked.

Setp 3:Analysis Program Flow

名称:  Step3.IDA_Analysis_1.gif 查看次数: 231 文件大小:  24.6 KB
把脱壳后的程序拖入IDA中

名称:  Step3.IDA_Analysis_2.gif 查看次数: 230 文件大小:  26.0 KB
勾上 堆栈指针和机器码字节数为8


Shift+F12设置下字符串类型,Unicode 要的

名称:  Step3.IDA_Analysis_4.gif 查看次数: 229 文件大小:  12.1 KB
字符串窗口中 357062008960014

类似IMEI的串号,双击过来


继续向上回溯字符串被调用的地方

名称:  Step3.IDA_Analysis_6.gif 查看次数: 229 文件大小:  17.4 KB
回溯到到sub_8A2C

注意:

MOV R12,SP

STMFD SP!,{R4,R5,R7,R11,R12,LR,PC}

这两句类似Win32程序汇编代码中

PUSH EBP

MOV EBP,ESP

ADD ESP,XXX

意味着什么呢?意味着这个是子功能函数的函数入口

名称:  Step3.IDA_Analysis_7.gif 查看次数: 231 文件大小:  17.9 KB
既然这个已经是子函数的入口了

我大致猜测刚才显示的那个串号是作者自己用来做的手机串号

我估计写入这个串号是为了检测

当串号为 357062008960014

就不需要启动软件注册功能

暂时这么猜测吧

按下X按键看看有哪些地方调用

还好只有一处


返回到这里

分析代码详细过程我就不在这里细说了

Loc _8280 这里与解密有关的部分,我们进入分析


进来后,再进入 sub_9114 分析看看

名称:  Step3.IDA_Analysis_10.gif 查看次数: 228 文件大小:  17.1 KB
很显然 sub_9114 也是一个子函数

这里这号是图形化的,看看整个分支流程


CompareF 比较函数

再猜测下咯

刚才是作者手机串号的代码

这里的比较

很大何能是判断是不是作者的手机

R0寄存器和8×86 EAX寄存器一样常用语函数返回值

没查SDK了,和Windows比较函数一样

一般返回0 说明两参数比较相等

ATTACH]25409[/ATTACH]
加个注解解释下吧

LDR          R0, [R6,#0x98]    ;     相当于    MOV R0,[R6+0x98]

MOV     R1, R10         ;      相当于    MOV R1,R10

BL         TDesC16::CompareF(TDesC16 const&) ;     相当于 Comparf(R0,R1)

CMP     R0, #0          ; R0为函数的返回值,为0,说明参数 R0和参数 R1 相等

MOVEQ    R8, #1          ; IF R0=0 Then R8=1

STREQ   R8, [R6,#0x90]     ; IF R0=0 Then Storage R8 To R6+0x90 Memory

BEQ     loc_922C        ; IF R0=0 Then Call Loc_922C Function

很明显要改变程序流程

需要patch下代码

修改

CMP R0,#0

变成

CMP R0,R0

可以一直作用下列的流程

自然而然

我们的补丁代码也就是这个了

Setp 4:Make ARM OPCODE

名称:  Step4.Use_CeleASM_Make_OPCODE.gif 查看次数: 227 文件大小:  20.0 KB
Use_CeleASM_Make_OPCODE

生成的OPCODE是

5 00000004 e3500000         CMP R0,#0

6 00000008 e1500000         CMP R0,R0

名称:  Step5.Use_WinHex_Patch_Data1.gif 查看次数: 228 文件大小:  9.6 KB
看看 CMP R0,#0 的OPCODE和我们途中的 OPCODE是否相同

名称:  Step4.Use_CeleASM_Make_OPCODE_1.gif 查看次数: 226 文件大小:  3.2 KB

不难看出

5 00000004 e3500000         CMP R0,#0

是对应Little-Endianl数据存储类型的ARM CPU

也就是低位字节排在内存较低地址

Patch_OPCODE: 00 00 50 E1 (CMP   R0,R0)
Setp 5:Patch Data

名称:  Step5.Use_WinHex_Patch_Data1.gif 查看次数: 228 文件大小:  9.6 KB
先从IDA中查看需要修改代码对应的文件偏移

0x000012AC

名称:  Step5.Use_WinHex_Patch_Data2.gif 查看次数: 233 文件大小:  8.9 KB
原来的

名称:  Step5.Use_WinHex_Patch_Data3.gif 查看次数: 232 文件大小:  8.8 KB
修改后就这样了

最后存盘即可。

Setp 6:Compress ELF File

名称:  Step6.Use_Symbian_OS_9.x_ELF_Toolz_ComPress_Target_ELF_File.gif 查看次数: 231 文件大小:  25.4 KB
Use_Symbian_OS_9.x_ELF_Toolz_ComPress_Target_ELF_File

Setp 7:Pack S60 3rd File

1、把之前破解好,加压缩的dvdplayer.exe 复制一份到别处

2、删除之前解包出来的文件夹

D:Symbian_Reverse_ToolzToolzSisContents121DVDPlayer 1.26

3、再次用SisContents打开原版的.sis文件,点击 Extract Files 图标

4、拷贝之前破解好,加压缩的dvdplayer.exe,复制到

D:Symbian_Reverse_ToolzToolzSisContents121DVDPlayer 1.26sysin

替换掉解包出来的

5、删除原来的签名:回到SisContents中, Tools->Delete Signatures

6、File->Save As->另存文件即可。

Setp 8:Run Patched .Sis File With Mobile

在手机上测试我们修改后的程序,破解成功。

说明那个串号是一个作者留下的小路吧,当然如果替换作者原来测试机的串号357062008960014 成自己的串号,那么程序也是一路绿灯通行的。

学习小结
ARM指令集需要掌握

遇到B当CALL指令用即可

BL是调用系统函数

Bxx是条件调用类似条件跳转Jxx指令

R0-R3可以用作参数传递

R0和Win32汇编中EAX作用一样常用语存放函数返回值

解密思路和Windows上的解密思路是一样的

可以通过字符串来定位关键代码,

也可以通过相关API找关键代码

Symbian解密注意事项

解包后记得先解压EXE或者DLL文件

修改后的EXE、DLL程序不可以直接替换到手机中使用,需要做成安装包

打包前一定要给EXE、DLL压缩下

打包时要注意签名,最好先删除所有的签名

http://WwW.CaterQiu.Cn/Article/Symbi…_CaterQiu.html

Symbian S60 3rd Reverse CrAcKiNg_Tutorial

By CaterQiu

Blog www.caterqiu.cn

Mail Cater.Qiu@Gmail.com

2009-5-1