最近看到很多朋友问怎么做音乐盒bin,为此,我专门整理的下面的教程,希望能对各位朋友有所帮助!
必备软件: 16进制编辑器,推荐使用UltraEdit-32或WinHex
MMFMan
首先要了解bin是什么东西,我以X199 XB03版为例,给大家详细讲一下.
其实音乐盒bin就是一种特定格式的字节流文件,在这个文件里面包含控制手机的一些程序,手机显示的文字,播放的铃声等等数据.
我们制作的音乐盒其实也是符合这种规格的字节流文件,用自己喜欢的铃声替换内置的铃声就可以DIY出自己的音乐盒.
我们可以用MMFMan直接替换内置铃声,但是这样做出来的音乐盒有很大的局限性,不能替换大铃声,不能刷单曲,没法改文字等等.
所以要打造个性的音乐盒就要完全了解bin的结构,做一个全新的bin文件来刷机.
用MMFMan打开原版XB03的bin文件,导出铃声.
我们可以听到,从25个铃声是手机里面第一个铃声,前面的是游戏的音乐.
用UltraEdit打开25.mmf,会显示成乱码,点工具条上面的切换HEX模式,会显示这个文件的16进制代码.
我们看到这个文件是以 4D 4D 4D 44 00 00 开头的,打开其他文件也是这样的,这是mmf的文件头标识,每个mmf铃声文件都会以这段16进制代码开头.
好了,下一步我们就去原版bin里面找这一部分16进制的代码
我们可以看到在MMFMan的位移一栏,写的是16进制的数字,这个是标识铃声的开始的地址,用这个地址我们可以在bin里面查找铃声
用UltraEdit打开XB03原版bin,Ctrl+G 打开跳转对话框,这里面填写的是要跳转的地址,也就是MMFMan的位移里面的数值,
对于16进制的地址必须以0x开头,比如我们要跳转到630000,就要输入0x630000,回车就可以了,如果你输入的地址没错,
会跳转到一段以4D 4D 4D 44 00 00开头的字符串前,这就是25.mmf文件的开始地址,我们可以一个字节一个字节的比较,
bin里面的字节和mmf里面的字节是完全一样的(废话!),好了,我们可以从630000开始,用鼠标点住,把这些字节选中,也可以按住Shift键,
然后按Page Down或者方向键来选,直到下一组4D 4D 4D 44 00 00,下一个出现的地址应该是26.mmf的开始地址前一个字节从MMFMan里面可以看到,
26.mmf的开始地址是6303b7,我们把从630000到6303b7这一段数据复制出来新建一个文件,粘贴进去,存成.mmf文件,用播放器听一下,就是手机里面第一个铃声.
其实MMFMan从bin里面导出铃声的原理就是这样的,截取一段数据,另存成mmf文件.
如果你有兴趣你可以手动把所有的铃声都倒出来,呵呵呵呵!
好了,前面所说的就是mmf铃声在bin文件里面存放的基本原理.
我会在以后的文章中继续讲解的!!
(未完!待续!!)
--------------------------------
2004-6-7 更新
上次讲到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里面的铃声,没有新的东西.
预知如何加新铃声,请看下集.
----------------------------------------------------
2004-6-8 更新
书接上回,上回讲到修改指针,这次讲讲替换铃声及修改歌名!
替换铃声的工具我只用过MMFMan,我就用这个工具来替换铃声,给大家讲讲吧,如果熟悉了bin的结构,直接做音乐盒就可以了,不用这些替换工具也可以.
用MMFMan打开xb03原版bin,找一首想要替换的歌曲,新的歌曲要小于你打算替换的歌曲,我用49.mmf吧,就是<<月亮惹的祸>>,替换新歌曲,保存,这时候用这个新bin刷机就会听到新的铃声了,但是歌曲名还没有改.
歌曲名在bin里面也是像mmf铃声一样,按照字节流来存放的,有固定的地址,通过指针可以调用,我们可以直接替换原来位置的文字来改歌名,也可以在空位置写上新的名字,然后改这个歌名的指针,把它指向你插入歌名的位置.
我先来说说第一中方法,文字在bin里面是用UTF-8格式来存储的,不能直接看到文字,都是乱码,怎么找呢,我们可以把中文的歌名转成UTF-8字节流,然后查这个字节流的位置.
比如我们把<<月亮惹的祸>>转成UTF-8格式就是E6 9C 88 E4 BA AE E6 83 B9 E7 9A 84 E7 A5 B8,我们在ultraedit里面打开bin文件,查找这段代码,会在4FBBD1和504EC2的位置找到它,
为什么会有两个呢,一个是用来选铃声的,一个是在电话本里面选铃声的,其实一个就够了,两次调用的时候都指向这里就可以,为什么写两次,不明白,浪费!!
好了,可以动手改了,把你要写的文字转成UTF-8格式,一共可以写15个字节,也就是5个汉字,如果要是写多了,后面的数据就会往后错,地址就乱了,不足5个字,可以用00补足,注意要写的是16进制代码,而不是中文.
比如我要写痴心绝对,转成UTF-8就是E7 97 B4 E5 BF 83 E7 BB 9D E5 AF B9这是4个汉字,后面还要用00 00 00补足空位,来保持文件的完整性.
也就是用E7 97 B4 E5 BF 83 E7 BB 9D E5 AF B9 00 00 00来替换掉原来的E6 9C 88 E4 BA AE E6 83 B9 E7 9A 84 E7 A5 B8
4FBBD1和504EC2的地方都要修改!
好了替换文字的第一中方法讲完了,我再讲讲第二种方法,如果你像替换的铃声或文字比较长,原来的位置写不开,就可以用这第二种方法.
打开xb03原版bin,到地址630000,我们可以看到,在它前面有很多FF FF FF ....组成的数据,这些是没有用到的空间,从607eb0到630000都是没有用到的,可以随便用!
为了计算方便,还是找一个整数地址比较方便,我们从610000开始.
如果我们想加入一个64K的单曲,就可以从610000开始写,打开一个单曲bin,全部复制,然后回到原版bin,用鼠标选中610000到620000的数据,这正好是64K,把拷贝好的数据替换进去.
然后Ctrl+G 到地址6fffff,看看文件是不是正好7兆,如果是,文件的最后一个地址是6fffff,如果不是,那就重来吧,你出错了.
替换好之后就可以修改指针了,因为即便加了新铃声,但是系统的指针没有指向它,也不会知道它的存在,
好,我们就把原来的第一首铃声指向这里,到地址1d1994,这里是原来第一首铃声的指针数据是 00 00 63 00,在前面讲过的,这就是第一首铃声的地址630000
我们把00 00 63 00 改成00 00 61 00,这样第一首铃声就变成你新改的铃声了,但是歌名还没改,继续改歌名.
如果你加入的单曲bin是带歌名的,那么在61FFC0就已经有歌名了,我们只要把指针指向这里就好了.
文字的指针是这样分布的
铃声选择 5E7108~5E71AC 每4个字节一个地址
电话本 5EB1E4~5EB288 每4个字节一个地址
详细情况在附件里面有详细的列表
我们就把第一首歌名的指针 5E7108的数据 E4 BA 4F 00 改成 C0 FF 61 00 ,把5EB1E4的数据E5 4D 50 00改成C0 FF 61 00,好了这样就都改完了,看看文件大小如果没问题就可以刷机了!
从620000到630000还可以加一首64k的铃声,大家自己做吧,嘿嘿.
下此讲音乐盒的制作,敬请期待!
我整理了bin里面所有铃声的地址和指针,大家看看附件吧.
xb03 原版歌名地址.rar
-----------------------------------------------------
我整理了bin里面所有铃声的地址和指针,大家看看附件吧.
必备软件: 16进制编辑器,推荐使用UltraEdit-32或WinHex
MMFMan
首先要了解bin是什么东西,我以X199 XB03版为例,给大家详细讲一下.
其实音乐盒bin就是一种特定格式的字节流文件,在这个文件里面包含控制手机的一些程序,手机显示的文字,播放的铃声等等数据.
我们制作的音乐盒其实也是符合这种规格的字节流文件,用自己喜欢的铃声替换内置的铃声就可以DIY出自己的音乐盒.
我们可以用MMFMan直接替换内置铃声,但是这样做出来的音乐盒有很大的局限性,不能替换大铃声,不能刷单曲,没法改文字等等.
所以要打造个性的音乐盒就要完全了解bin的结构,做一个全新的bin文件来刷机.
用MMFMan打开原版XB03的bin文件,导出铃声.
我们可以听到,从25个铃声是手机里面第一个铃声,前面的是游戏的音乐.
用UltraEdit打开25.mmf,会显示成乱码,点工具条上面的切换HEX模式,会显示这个文件的16进制代码.
我们看到这个文件是以 4D 4D 4D 44 00 00 开头的,打开其他文件也是这样的,这是mmf的文件头标识,每个mmf铃声文件都会以这段16进制代码开头.
好了,下一步我们就去原版bin里面找这一部分16进制的代码
我们可以看到在MMFMan的位移一栏,写的是16进制的数字,这个是标识铃声的开始的地址,用这个地址我们可以在bin里面查找铃声
用UltraEdit打开XB03原版bin,Ctrl+G 打开跳转对话框,这里面填写的是要跳转的地址,也就是MMFMan的位移里面的数值,
对于16进制的地址必须以0x开头,比如我们要跳转到630000,就要输入0x630000,回车就可以了,如果你输入的地址没错,
会跳转到一段以4D 4D 4D 44 00 00开头的字符串前,这就是25.mmf文件的开始地址,我们可以一个字节一个字节的比较,
bin里面的字节和mmf里面的字节是完全一样的(废话!),好了,我们可以从630000开始,用鼠标点住,把这些字节选中,也可以按住Shift键,
然后按Page Down或者方向键来选,直到下一组4D 4D 4D 44 00 00,下一个出现的地址应该是26.mmf的开始地址前一个字节从MMFMan里面可以看到,
26.mmf的开始地址是6303b7,我们把从630000到6303b7这一段数据复制出来新建一个文件,粘贴进去,存成.mmf文件,用播放器听一下,就是手机里面第一个铃声.
其实MMFMan从bin里面导出铃声的原理就是这样的,截取一段数据,另存成mmf文件.
如果你有兴趣你可以手动把所有的铃声都倒出来,呵呵呵呵!
好了,前面所说的就是mmf铃声在bin文件里面存放的基本原理.
我会在以后的文章中继续讲解的!!
(未完!待续!!)
--------------------------------
2004-6-7 更新
上次讲到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里面的铃声,没有新的东西.
预知如何加新铃声,请看下集.
----------------------------------------------------
2004-6-8 更新
书接上回,上回讲到修改指针,这次讲讲替换铃声及修改歌名!
替换铃声的工具我只用过MMFMan,我就用这个工具来替换铃声,给大家讲讲吧,如果熟悉了bin的结构,直接做音乐盒就可以了,不用这些替换工具也可以.
用MMFMan打开xb03原版bin,找一首想要替换的歌曲,新的歌曲要小于你打算替换的歌曲,我用49.mmf吧,就是<<月亮惹的祸>>,替换新歌曲,保存,这时候用这个新bin刷机就会听到新的铃声了,但是歌曲名还没有改.
歌曲名在bin里面也是像mmf铃声一样,按照字节流来存放的,有固定的地址,通过指针可以调用,我们可以直接替换原来位置的文字来改歌名,也可以在空位置写上新的名字,然后改这个歌名的指针,把它指向你插入歌名的位置.
我先来说说第一中方法,文字在bin里面是用UTF-8格式来存储的,不能直接看到文字,都是乱码,怎么找呢,我们可以把中文的歌名转成UTF-8字节流,然后查这个字节流的位置.
比如我们把<<月亮惹的祸>>转成UTF-8格式就是E6 9C 88 E4 BA AE E6 83 B9 E7 9A 84 E7 A5 B8,我们在ultraedit里面打开bin文件,查找这段代码,会在4FBBD1和504EC2的位置找到它,
为什么会有两个呢,一个是用来选铃声的,一个是在电话本里面选铃声的,其实一个就够了,两次调用的时候都指向这里就可以,为什么写两次,不明白,浪费!!
好了,可以动手改了,把你要写的文字转成UTF-8格式,一共可以写15个字节,也就是5个汉字,如果要是写多了,后面的数据就会往后错,地址就乱了,不足5个字,可以用00补足,注意要写的是16进制代码,而不是中文.
比如我要写痴心绝对,转成UTF-8就是E7 97 B4 E5 BF 83 E7 BB 9D E5 AF B9这是4个汉字,后面还要用00 00 00补足空位,来保持文件的完整性.
也就是用E7 97 B4 E5 BF 83 E7 BB 9D E5 AF B9 00 00 00来替换掉原来的E6 9C 88 E4 BA AE E6 83 B9 E7 9A 84 E7 A5 B8
4FBBD1和504EC2的地方都要修改!
好了替换文字的第一中方法讲完了,我再讲讲第二种方法,如果你像替换的铃声或文字比较长,原来的位置写不开,就可以用这第二种方法.
打开xb03原版bin,到地址630000,我们可以看到,在它前面有很多FF FF FF ....组成的数据,这些是没有用到的空间,从607eb0到630000都是没有用到的,可以随便用!
为了计算方便,还是找一个整数地址比较方便,我们从610000开始.
如果我们想加入一个64K的单曲,就可以从610000开始写,打开一个单曲bin,全部复制,然后回到原版bin,用鼠标选中610000到620000的数据,这正好是64K,把拷贝好的数据替换进去.
然后Ctrl+G 到地址6fffff,看看文件是不是正好7兆,如果是,文件的最后一个地址是6fffff,如果不是,那就重来吧,你出错了.
替换好之后就可以修改指针了,因为即便加了新铃声,但是系统的指针没有指向它,也不会知道它的存在,
好,我们就把原来的第一首铃声指向这里,到地址1d1994,这里是原来第一首铃声的指针数据是 00 00 63 00,在前面讲过的,这就是第一首铃声的地址630000
我们把00 00 63 00 改成00 00 61 00,这样第一首铃声就变成你新改的铃声了,但是歌名还没改,继续改歌名.
如果你加入的单曲bin是带歌名的,那么在61FFC0就已经有歌名了,我们只要把指针指向这里就好了.
文字的指针是这样分布的
铃声选择 5E7108~5E71AC 每4个字节一个地址
电话本 5EB1E4~5EB288 每4个字节一个地址
详细情况在附件里面有详细的列表
我们就把第一首歌名的指针 5E7108的数据 E4 BA 4F 00 改成 C0 FF 61 00 ,把5EB1E4的数据E5 4D 50 00改成C0 FF 61 00,好了这样就都改完了,看看文件大小如果没问题就可以刷机了!
从620000到630000还可以加一首64k的铃声,大家自己做吧,嘿嘿.
下此讲音乐盒的制作,敬请期待!
我整理了bin里面所有铃声的地址和指针,大家看看附件吧.
xb03 原版歌名地址.rar
-----------------------------------------------------
我整理了bin里面所有铃声的地址和指针,大家看看附件吧.