bryan2k4 发表于 2006-1-16 13:00:22

SX1所有函数列表,做补丁必备,想自己做补丁的朋友请进!

新的一年刚开始,出现了几个很强的补丁。相信每个SX1的Fans都很激动。而2006年SX1一定还会给我们带来更多的惊喜。

相信很多朋友也想自己来做补丁。而没有打算做补丁的朋友,一定也很想知道补丁到底是如何做出来的。

刚好手头上有些资料。最近也有几个朋友询问相关的问题。所以就整理了一下。

想做补丁的朋友可以来一起讨论一起学习。

先说说做补丁需要了解的一些东西和需要使用的工具。
Symbian C++,这个可以简单了解一下,但如果要做出好的补丁,还是需要深入研究
             如果补丁比较复杂,要对程序功能进行大的修改的话,需要熟悉Symbian
                        的E32文件格式。

Arm ASM, Arm处理器的汇编语言。这个是做补丁的内功心法,内力越强,当然做出的
          的补丁就越厉害了。

Siemens SX1 SDK ,SX1的开发文档,里面有所有的Symbian系统Api的说明,以及很多头文件,分析代码时很有用。

IDA , 做补丁的人手中的剑,反编译app文件和dll文件就靠它了。熟练掌握可以起到事半功倍的效果。

UltraEdit,16进制编辑工具,也可以使用其他16进制编辑工具,这个依个人喜好而定。用于以16进制分析查看文件,
          做补丁代码必备。

另外再提供几个网站供参考:
www.symbian.com Symbian Os的官方网站,很多技术资料,可以更多地了解Symbian Os
www.newlc.com 最好的Symbian C++网站,也有很多有用的资料
www.oslik.ru,有最新的补丁的信息,可惜是俄语的,看起来很吃力

这篇文章要好好读一下
http://www.newlc.com/article.php3?id_article=683&var_recherche=assembler
包括文章中链接的几篇文章,都非常有价值
这个是学习ARM ASM的非常好的文章
http://www.heyrick.co.uk/assembler/


下面这个是SX1的所有的函数的列表,感谢FCA00000大侠的伟大贡献。
这个是在O2_14版上分析出来的。所以列表中的地址和15版有出入,但是用于做补丁还是没有什么问题的

这个是FCA00000大侠写的说明,为避免翻译中理解错误,直接贴英文的上来,相信对要做补丁的朋友,这点
英文算不了什么

This is how to use file O2_14.symbol
First you choose an application that you wish to modify, for example calcsoft.app
Then you need to analyse it, therefore transfer to your PC.
First method: fast and un-reliable:
Using FExplorer or similar, transfer it.
This is unreliable because you are using your version (probably 15.4) and the
application might be different in 15.2 and O2_14

Second method: almost reliable
Install O2_14, and transfer file.
Not completly reliable because seems to forget the last 80 bytes from the file.
This what I use.

Third method: perfect
Install O2_14, use FCAMem, choose starting memory (506A0EB4, from O2_14.symbol)
and size=506a4e78+003c-506A0EB4 = 4000
Then transfer e:\zz\mem.bin to your PC, and rename as calcsoft.app

Forth method: perfect and cleaner
download O2_14.winswsp.exe from Siemens
use WSFFXBI = WinsWsup & FullFlash - Bag Version
XBI Extract by Serrge
extract the ROLF
apatcher or manually extract calcsoft.app
I might publish a program to do this.

Now you have calcsoft.app for version O2_14

Start IDA - Interactive Dissasembler
load file calcsoft.app
choose "Binary file"
choose processor=ARM710a
press OK

From O2_14.symbol you see that starting address is 506a0eb4
Skip header by substracting 0x64. That is:
506a0eb4-64=506A0E50

Check the check-box "Create ROM section"
choose ROM start address=0x506A0E50
choose Loading address=0x506A0E50

when dissasembly appears, select line
ROM:506A0E50 CODE32
press ALT-G, make Value=1

Go to first address (key "G"), in this case 506a0eb4
dissasemble with key "C"
label with key "N". Give name _E32Dll

Same for other labels.
another way is to analyse the whole program (Options->General->Analyse), and then re-label one by one.


Probably someone with IDA skills can make a script to automatize this dissasembling process?

What you need now is some dissasembling abilities, understanding of ARM instructions, Symbian knowledge, and time.

All of us are willing to hear from your patches !

补充说明一下使用方法和步骤:
首先确定要修改什么,做什么样的补丁,之后分析并锁定几个函数(来自函数列表),确定函数在那个文件并对这个文件进行反编译
简单举例说明
500046ac    0008    ImpDma::GetState(int)
这里500046ac 是函数的地址,即Rom中的这个地址的函数是ImpDma::GetState(int)。Rom的起始地址是50000000这里46ac是偏移地址。由于文件在O2_14版的地址和15版的地址并不完全相同,所以我们只能用O2_14版来确定此函数所在的文件。
FCA00000已介绍了几种方式,我再说明一下。获取O2_14的Xbi文件,并从中解出各模块(由于winswup有25M,我就不发上来了,需要的朋友留Email.这里放上已解出的各模块)。其中有个02072004-K1_core.img文件,这个文件就是Z1部分的Rom映象文件,一般我们需要修改的文件都在这个模块中。这个文件的头0x100个字节为文件头,去掉这个头之后的部分就完全对应Rom中的Z1部分。
所以对于46ac这个偏移地址,实际在02072004-K1_core.img文件中的偏移地址为0x47ac而通过函数列表文件,我们知道这个地址在ekern.exe这个文件中,但是我们没有O2_14版的这个文件,只有15版的,最好的办法是装个O2_14版,但这太麻烦了,还有个解决办法是在02072004-K1_core.img文件中的偏移地址0x47ac附近复制一段16进制字符串比如20Byte,之后在15版的ekern.exe中搜索这个16进制串,即可找到15版中对应的位置,有时这种方法不一定成功,需要调整一下查找的16进制字符串的长度或位置。
接下来就是用IDA反编译ekern.exe,并分析相关函数,找到解决补丁需求的修改方法,并生成补丁代码。
补丁格式 replace:修改前的代码:修改后的代码。

所以最重要的还是要熟悉ARM的汇编语言。开始分析有难度的话,可以找几个简单的程序XX一下,这对提高分析程序的技巧以及熟悉汇编都有很大的好处。


有兴趣的朋友可以来一起讨论一下,祝各位都可以做出自己的补丁。

Xbi导出的模块文件比较大,我这里上传太慢,稍后放上。
20多分钟还没能传一个包上来,今天有事要出去了,没电脑用,估计要到明天晚上才能传上来了。


忘掉了一点,函数列表文件O2_14.symbol其实是个文本文件,有15M,所以用记事本开很慢,建议用ultraedit来看,或用Wold来看.

[ 本帖最后由 bryan2k4 于 2006-1-16 14:11 编辑 ]

ameng 发表于 2006-1-16 13:04:43

厉害!厉害!厉害!

theozjy123 发表于 2006-1-16 13:12:11

不顶不行啊!!!!!!!!!!!!!!!!

gotoner 发表于 2006-1-16 13:18:58

大大的长了见识,厉害哦!

louis1007 发表于 2006-1-16 13:27:26

现在开始练内功技法了,厉害!!!

吸烟=崇高 发表于 2006-1-16 13:29:01

长见识了``顶了顶了``

山高高 发表于 2006-1-16 13:36:26

不错!得好好学习。

chenfry 发表于 2006-1-16 13:41:47

开眼界了..

carylou 发表于 2006-1-16 14:56:53

应该再召唤coollang等人回来研究研究

differentma 发表于 2006-1-16 15:13:07

向高手靠进,弄来看看!!!!11

咖啡泡泡 发表于 2006-1-16 15:16:08

开眼界了..

lhw_007 发表于 2006-1-16 15:27:00

有钱的出钱,有力的出力,有,呵呵,有嗓门的吆喝!帮顶!

shinechou 发表于 2006-1-16 15:39:42

简直是超级强帖,不得不顶!非常感谢大侠如此精彩分享!

segalgx 发表于 2006-1-16 16:01:15

支持一下!!

duyun 发表于 2006-1-16 16:44:54

太专业了,我不行只有呐喊助威的份。

kiwiecer 发表于 2006-1-16 17:05:28

怎么现在研究补丁的只剩bryan了呢?以前的高手去哪里了??

rmjlr 发表于 2006-1-16 17:07:08

呐喊助威,也就是我力所能及的了,汗.....

ff9 发表于 2006-1-16 18:02:11

强悍啊,不过看不懂,只有力气喊了,支持啊

comcom 发表于 2006-1-16 18:29:37

顶....高手~~~

xiwen0217 发表于 2006-1-16 18:40:59

放弃,纯顶!!!!
页: [1] 2 3 4
查看完整版本: SX1所有函数列表,做补丁必备,想自己做补丁的朋友请进!