本帖最后由 eaglepeng 于 2020-3-11 15:23 编辑
前段时间想重新修改下官改固件logo,找到了一份Linux下简单的解包打包工具,后来在逛帖子看到另一个工具。现总结如下,需要的带走!!
我测试的是K2P B 1 固件,解包修改打包,刷写,一切OK !别的固件不清楚(看帖子说基于openwrt系类应该都可以)!另外,建议解包后直接在Linux下修改!
另外,懂固件修改的小伙伴赠予我一些小白看的懂的教程,在此感谢!需要的文件在附件中,略微收点恩币,嘴下留情,谢谢
正题======================================================================================
第一款:modify工具
安装ubuntu系统,解压到opt目录,打开终端:
依次输入命令
进入modify工具目录 cd /opt/modify
查看modify目录下文件 ls依次执行以下三条指令
chmod +x modify.sh
chmod +x mksquashfs
chmod +x padjffs2
chmod +x unsquashfs
解包命令,把需要解包的文件放modify文件夹,重命名rom.trx,运行
./modify.sh e rom.trx
解包之后,修改
可以把解包之后的文件,复制出来,进windows修改,换回去时,注意文件权限。比较文件差异用Beyond Compare方便
也可以直接在ubuntu系统下修改,文件比较安装meld
重新打包命令
ls
依次执行以下三条指令
chmod +x modify.sh
chmod +x mksquashfs
chmod +x padjffs2
chmod +x unsquashfs
打包命令,运行
./modify.sh c newrom.trx
第二款: binwalk路由器固件解包修改工具(这个比较麻烦,我一开始也折腾了一会)
大体分为两步
第一步,配置环境(配好后以后再用就直接进行第二步)
一.安装ubuntu(我用的deepin 15.11,一样的)
二.在ubuntu的终端上安装Binwalk
终端里执行安装:
1、执行sudo apt-get install python3-pip 按装 python3环境
2、 sudo su //然后输入密码,获取root权限,避免后期执行命令时出现权限不够的情况。
sudo apt-get update //更新软件
sudo apt-get install build-essential autoconf git //获取开发工具git
3.打开我们下载好的binwalk:cd binwalk
执行安装命令导入python3环境: sudo python3 setup.py install
4、依赖库和组件工具安装
Binwalk使用pycrypto库解密一些已知的加密固件映像:sudo apt-get install python3-crypto
Binwalk使用pyqtgraph生成图形和可视化,这需要以下内容:
sudo apt-get install libqt4-opengl python3-opengl python3-pyqt4 python3-pyqt4.qtopengl python3-numpy python3-scipy python3-pip
sudo pip3 install pyqtgraph
第二步,解包-打包方法
下载官改固件到Linux中
解包
打开终端:
终端运行解包命令:sudo binwalk -e 固件名.bin
解包完成后会生成:固件名.bin.extracted文件夹,在文件夹中打开squashfs-root,进行固件修改
打包
1、sudo binwalk 固件名.bin //查看固件各部分布局
这里解释下:binwalk解包和打包是把整个分区都解析出来了,我们可以修改的就是上面提到的文件夹里的内容。那么我们打包的时候需要把分区其他一起打包,有了这个过程。 上图可以看到,有3个部分: 1、TRX firmware header 2、LZMA compressed data 3、Squashfs filesystem 我们把前两个区域用dd命令切出来 sudo dd if=k2p_bcm_v17.bin of=head.bin bs=1 skip=0 count=1819880 #if是原固件,of是输出文件,bs是单位长度,skip是偏移量,count是分区大小 count参数可以通过第三部分的第一个数字(偏移量)得来。 切好之后生成head.bin文件,我们就有了一个头,只需要再把我们编辑的部分打包后,和头拼到一起就行了。
2、打包编译好的固件:sudo mksquashfs squashfs-root rootfs.bin -comp xz #squashfs-root指定目录,rootfs.bin指定输出文件,-comp xz 说明压缩方式为 xz ,视binwalk的输出而定。 于是就生成了一个rootfs.bin的文件 3、将编译好的rootfs.bin的文件和切好的head.bin文件放到一起 执行sudocat head.bin rootfs.bin > k2p-b1-v18.bin 到此固件就打包完了。 补充:这个是K2P B1参看资料,有关固件修改的哪个部分,打包截取部位可以看下。具体到其他固件,一定要清楚分区结构(或者至少清楚解包的各文件属性)。https://www.right.com.cn/forum/thread-329343-1-1.html
https://www.right.com.cn/forum/thread-218346-1-1.html
|