三星手机论坛(SAMSUNG)'s Archiver

现在开始 发表于 2006-8-7 06:59

音乐盒DIY全攻略(二)

上次讲到bin中间的mmf铃声是如何存放的,这回讲讲这些铃声是如何被调用的.

任何程序要想调用一段数据,必须要知道这段数据的准确位置,播放铃声也是一样,系统必须知道这段铃声的开始位置,这就需要用到指针.

要想理解指针的概念并不难,指针就好像一个路标,标识着一个地址,你按照这个地址找,就能找到这个指针所指向的位置,你要的东西就从那里开始存放.

在生活中有很多类似指针的东西,比如说每本书书在开始的位置都有一个目录,这就是一个指针,如果我要想找第二章的第三节,我就可以按照后面标识的页码去找,如果目录没写错,肯定能找到,呵呵.

在bin文件里面也有一个这样的目录,这就是指针,这里写了每首歌的开始地址,按照这个目录,我们可以找到每首歌,这个指针并不是给用户看的,而是给手机系统看的,如果我们改了这个目录,系统就会按照我们改的地址去找歌曲.

比如第一铃声的开始位置是630000,如果我们改了指针,告诉系统第一首歌是从6303b7开始,那么系统会认为第一首歌真的是在6303b7,我们刷这样修改后的bin,听第一首铃声的时候,会发现,它和第二首铃声是一样的,因为我们把第一首铃声的指针指向第二首歌的位置了.

通俗一点说就像这样,还是用书的目录为例

第一章 ------------- 1
  第一节 ------------- 1
  第二节 ------------- 15
.
.
.
如果我们把目录改成这样

第一章 ------------- 1
  第一节 ------------- 15
  第二节 ------------- 15
.
.
.
当我们按照第一节标识的页码去找的时候,找到的是第二节,而不是第一节,表现在手机里面的现象就是,当你选中第一首歌的时候,播放的是第二首歌.

好了,原理就是这样,如何去改呢,听我慢慢讲.

改书的目录我们知道要改页码,但是要改bin的指针,我们要改哪里呢?

bin里面的指针都存放在一些固定的位置.

第一首歌的指针在1d1994,我首先要找到这个位置,看看里面写的是什么,Alt+G 写上地址0x1d1994,我们可以看到,这里写着的是00 00 63 00,因为指针存储的时候是从低位到高位存,所以要把这段数据翻过来看,也就是00 63 00 00

也就是第一首歌的开始位置630000,好了,我们再往后看B7 03 63 00,也就是第二首歌的开始位置6303B7,往后都是铃声开始的地址.我们可以修改这些指针,指向不同的位置,就可以简单的改变铃声了,我们把1d1994的数据改成B7 03 63 00,这样第一首歌就指向第二首歌的位置了,我们还可以用这样的方法改其他铃声,但是这样改出来的铃声还是原有bin里面的铃声,没有新的东西.

预知如何加新铃声,请看下集. :D

peifu 发表于 2007-1-15 21:41

说的真不错啊,就是没看明白.快点发吧.

清新 发表于 2007-12-9 13:01

汗..刚才看到(一)..到处找(二)..现在还没完啊??楼主真会折磨人.

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.