记得去年 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
Use_SisContents_Unpack_S60_3rd_Target_Sis_File
Setp 2:UnComPress ELF File
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
把脱壳后的程序拖入IDA中
勾上 堆栈指针和机器码字节数为8
Shift+F12设置下字符串类型,Unicode 要的
字符串窗口中 357062008960014
类似IMEI的串号,双击过来
继续向上回溯字符串被调用的地方
回溯到到sub_8A2C
注意:
MOV R12,SP
STMFD SP!,{R4,R5,R7,R11,R12,LR,PC}
这两句类似Win32程序汇编代码中
PUSH EBP
MOV EBP,ESP
ADD ESP,XXX
意味着什么呢?意味着这个是子功能函数的函数入口
既然这个已经是子函数的入口了
我大致猜测刚才显示的那个串号是作者自己用来做的手机串号
我估计写入这个串号是为了检测
当串号为 357062008960014
就不需要启动软件注册功能
暂时这么猜测吧
按下X按键看看有哪些地方调用
还好只有一处
返回到这里
分析代码详细过程我就不在这里细说了
Loc _8280 这里与解密有关的部分,我们进入分析
进来后,再进入 sub_9114 分析看看
很显然 sub_9114 也是一个子函数
这里这号是图形化的,看看整个分支流程
CompareF 比较函数
再猜测下咯
刚才是作者手机串号的代码
这里的比较
很大何能是判断是不是作者的手机
R0寄存器和8x86 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
Use_CeleASM_Make_OPCODE
生成的OPCODE是
5 00000004 e3500000 CMP R0,#0
6 00000008 e1500000 CMP R0,R0
看看 CMP R0,#0 的OPCODE和我们途中的 OPCODE是否相同
不难看出
5 00000004 e3500000 CMP R0,#0
是对应Little-Endianl数据存储类型的ARM CPU
也就是低位字节排在内存较低地址
Patch_OPCODE: 00 00 50 E1 (CMP R0,R0)
Setp 5:Patch Data
先从IDA中查看需要修改代码对应的文件偏移
0x000012AC
原来的
修改后就这样了
最后存盘即可。
Setp 6:Compress ELF File
Use_Symbian_OS_9.x_ELF_Toolz_ComPress_Target_ELF_File
Setp 7:Pack S60 3rd File
1、把之前破解好,加压缩的dvdplayer.exe 复制一份到别处
2、删除之前解包出来的文件夹
D:\Symbian_Reverse_Toolz\Toolz\SisContents121\DVDPlayer 1.26
3、再次用SisContents打开原版的.sis文件,点击 Extract Files 图标
4、拷贝之前破解好,加压缩的dvdplayer.exe,复制到
D:\Symbian_Reverse_Toolz\Toolz\SisContents121\DVDPlayer 1.26\sys\bin
替换掉解包出来的
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
--------------------------------------------------------------------------------
文中提到的附件我已打包
Symbian_Reverse_Toolz.rar [附件请到原帖下载:http://bbs.pediy.com/showthread.php?t=87583 ]
相关资料.rar
实话的说,本来教程想拿英文写的,顺带练习练习的
只是越写越困 越不通顺~所以后面 就用中文混淆一下吧~
顺带说下,明天是某人生日,某人很寂寞,先睡觉了。
感谢:水水、老k、RoBinhood、我的群主
- 标 题:Symbian S60 3rd Reverse CrAcKiNg Tutorial
- 作 者:cater
- 时 间:2009-05-01 09:10:59
- 链 接:http://bbs.pediy.com/showthread.php?t=87583