首页 > 学院 > 手机知识 > 正文

分析及修改夏新E8 ROM文件的方法

2024-06-10 11:39:15
字体:
来源:转载
供稿:网友

    我针对 AMOI E8手机的ROM进行分析和替换文件,主要顺着手工修改写下去,其它的就不多说明了,以免越看越乱,如有不足之处还望指教。

    前言:
    需要工具软件: dumPRom , rommaster , WinHex 以及本人写的一个程序(非必须)。目录设置:把 ROM 文件和软件( nk_MP_060716.nba )放在统一目录下,例如我用 E:/rom ,要增加的文件放 E:/rom/add 。在 ROM 文件中的十六进制数都是倒过来表示,比如“ 1A2B3C4D ”会成为“ 4D3C2B1A ”可以用我写的程序来进行倒序(hamsrom.ys168.com)。

    一、分析篇:
    用 dumprom 分析文件结构,打开命令提示符(开始-运行-输入 cmd 回车)输入“ E:/rom/dump.exe E:/rom/nk_MP_060716.nba > E:/rom/dumpinfo.txt ” ( 可以直接把文件拖放到命令提示符窗口内 ) 回车,打开 dumpinfo.txt,可以看到首行img00000000:hdr=82ff1234,base=80040000,commandlineoffset=80040000,这个是指 ROM 中的基准偏移量为 80040000 ,就是指 ROM 文件的偏移量起始 0 位是手机中的 80040000 位.

    再往下看有一行 80040040 - 80040048 L00000008 'ECEC' -> 82ff1234 ,用 WinHex 打开 ROM 文件,可以看到偏移量 40 (也就是手机中的 80040040 )就是 'ECEC' ,是 ROM 的标志(一般分析 ROM 可以先找 ECEC ),后面紧跟的十六进制数 34 12 FF 82 ,我们应该把它倒过来即 82 FF 12 34 ,这就文件指针的开始地址, 82ff1234-80040000 得 ROM 文件实际地址 02FB1234 ,转到文件偏移量 02FB1234 就可以得到我们要修改的文件的所有信息了,查找dumpinfo.txt 中“ 82ff1234 ”就可以找到一段 82ff1234 - 82ff1288 L00000054 rom_00 header: dlls=01ac01dd-02000000 phys=80040000-82ff70b0, 279 modules, 542 files, 1 copyentries ext=80078640   ram=88480000-8a000000 cputype=000001c2 ,这就是 ROM 信息,需要特别说明的是 rom 文件的 2fb1264 位的“ 1E02 ”是指文件数量“ 021E ”= 542 ,我们手动增加文件后也要改这个数。

    dumpinfo.txt 往下一行,这就是文件指针区开始的第一个文件 nk.exe ,这是一个 modent ,分散在 ROM 文件中的几个地方,有兴趣可以再分析,先用简单一些的 filent (单一文件)说起,

    转到 dumpinfo.txt 最后倒数第三行, 82ff7094 - 82ff70b0 L0000001c filent 541 00000001 01c4f9ea1f89bb00   31 31 812b7fdc SkinSetting.lnk

    说明: 82ff7094 - 82ff70b0 L0000001c :这一段信息在文件 82ff7094 - 82ff70b0 长度 0000001c ; filent :单一文件; 541 ,文件数编号;00000001 :文件在手机中的状态,这个比较重要,但知道一般我们要加的用 00000005 (无压缩,可在手机中拷出)和 00000805 (压缩)就可以了;01c4f9ea1f89bb00 :文件修改时间,从 1601 年起,以 10^(-7) 秒计;
31 31 :前一个是文件实际大小,后一个是 ROM 中的实际大小,如果有压缩两个数字就不会一样,可以往上找看看文件状态为 00000805 的行;812b7fdc :文件实际内容的起始地址 812b7fdc-80040000=01277FDC 。

    用 WinHex 打开 ROM 文件,移动到最底端, 2fb7094 到 2fb70af 这 1c 长度的内容就是上面 dumpinfo.txt 最后倒数第三行中的信息, 01000000 00BB891F EAF9C401 1F000000 1F000000 2CBECB80 DC7F2B81.

    和上面内容对应起来看
    01000000  --> 00000001 文件在手机中的状态
    00BB891F EAF9C401   文件修改时间
    1F000000 --> 0000001F=31 文件实际大小
    1F000000 --> 0000001F=31 ROM 中的实际大小
    2CBECB80 --> 80CBBE2C =00C7BE2C 指向文件名内容地址     "SkinSetting.lnk"
    DC7F2B81 --> 812B7FDC=01277FDC 文件实际内容的起始地址

    每个文件指针段长度都为 1c ,如果文件删除后,整个段会被删除,后面的段会向前补上,所以我们先删除一些文件后,在 ROM 文件的最后就会产生一大段的 0000000 ,我们可以紧接前面的数据加入自己的文件指针信息。

(待续…)

 

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选