MTK 手机BIN文件加密的一点心得
工具:IDA, UltraEdit, ARM250(ARM Project Manager 我专用来编译补丁文件), 打补丁工具(公司编的小工具)
第一次写这种东东,文笔又不好。见笑了。
MTK手机的Bin文件就是某款手机所对应的一整套原代码编译的目标程序(灼烧文件)。
在PC机上我们是把系统与应用程序分得很清楚的。但是MTK中则不同,系统与应用程序捆绑在一起的;当然这只对编译出来的系统BIN文件而言的,硬要单独加入应用程序也不是不可以。当然可以,那就要单独‘挂载’。前提是不要过度依赖硬件,如GPIO引脚之类的。
一般来说,当公司搞到MTK源工程文件后就可以修改所需内容,完之后就可以编译产生系统BIN文件,这时公司怕别人盗走成果往往会采用默认的加密方法。而这种加密方法现在很容易就可以破解的(当然针对这种形式破解补丁自己要先写好,以后就是死搬硬套)。所以想说说我现在加密的方法(当然这是从前辈那儿学来的,不是纯摸索的)。
加密效果:被加密的BIN文件只能运行在第一次烧录进的手机上!从手机里读出来的BIN,烧录到另一台手机上,则不开机!
思路:第一次烧录时,BIN文件原样读入进手机FLASH中,但要做个标记,用来确认是否本机器!可以把指定的关键代码(关键代码很多,如调用寄存器的代码一般都比较关键)提到补丁中去执行? MTK芯片上都有唯一的一个ID,我们就是用这个ID来加密关键代码的。当手机开机时,ROM先运行我们先前打进行去的一段检测代码补丁,内部密码判是否与标志相符。不符则关机!
总的来说就是用这个MTK芯片ID在ROM中加密和解密一段关键代码判断是否与标志匹配。被读出来的BIN文件关键代码将是与ID对应的密文!
我加密的过程随便描述一下。
1:找补丁位置,我找的是 INT_InitRegions 函数里面的 zi_init_32 函数。IDA显示如下:
ROM4:00418E94 EXPORT INT_InitRegions
ROM4:00418E94 INT_InitRegions ; CODE XREF: ROM:
ROM4:00418E94 0E 70 A0 E1 MOV R7, LR
ROM4:00418E98 10 01 9F E5 LDR R0, =0xDC2ECC
ROM4:00418E9C 10 11 9F E5 LDR R1, =_32khz_gpio_pin
ROM4:00418EA0 01 20 A0 E1 MOV R2, R1
ROM4:00418EA4 0C 41 9F E5 LDR R4, =unk_939C
ROM4:00418EA8 04 20 82 E0 ADD R2, R2, R4
ROM4:00418EAC 19 00 00 EB BL copy
ROM4:00418EAC
ROM4:00418EB0 04 21 9F E5 LDR R2, =unk_264660
ROM4:00418EB4 04 01 9F E5 LDR R0, =MPUChannelStatus
ROM4:00418EB8 00 10 A0 E1 MOV R1, R0
ROM4:00418EBC 02 10 81 E0 ADD R1, R1, R2
ROM4:00418EC0 1E 00 00 EB BL zi_init_32
ROM4:00418EC0
MTK 手机BIN文件加密的一点心得工具:IDA, UltraEdit, ARM250(ARM Project Manager 我专用来编译补丁文件), 打补丁工具(公司编的小工具)第一次写这种东东,文笔又不好。见笑了。MTK手机的Bin文件就是某款手机所对应的一整套原代码编译的目标程序(灼烧文件)。在PC机上我们是把系统与应用程序分得很清楚的。但是MTK中则不同,系统与应用程序捆绑在一起的;当然
加密
芯片:ATSHA204A(8脚S0IC封装)
推荐:具有4.5kb eeprom,且性价比最高。
接口:Interface Type :Single-wire; I2C,推荐使用i2c接口,传输速率可达1Mb/s
i2c地址:0x64 I2C_Address(由0xC0右移一位得到,至于为什么右移是因为这个数据最高位溢出,详情可百度)
目前在做一个项目,具有在线升级功能,具有boot区,boot_data区,APP区和上位机升级软件
(讲解APP,boot及上位机实现的,请看https://blog.csdn.net/wuhenyouyuyouyu/article/details/102851287)
。正常情况下是下载Boot程序,然后用上位机下载APP,考虑到生产上的效率能不能下载一个HEX就可以
了,经过查看资料是可行的,具体思路如下。
一、上位机实现
1、要能根据APP
文件
生成boot_data
文件
;
2、如果考虑
加密
1.
bin
文件
,exe
文件
,图片
文件
等都可以使用二进制
加密
方式进行
加密
。
2.使用while循环来取代for循环进行字符
加密
。
3.exe
文件
加密
解密的应用:先将exe
文件
伪装成txt
文件
,避免杀毒软件检测,再通过解密,txt–>exe#define _CRT_SECURE_NO_WARNINGS
#define SRC_PATH "C:\\Users\\michael\\Deskto
先讲下概念:一般系统识别
文件
的方式大家都会认为是
文件
的拓展名,比如.txt .mp4等等,是这样的。但是其实很多时候系统识别
文件
还通过
文件
的头部(linux下是这样的)~~
关于上面的概念大家可以测试一下:
比如你有个视频
文件
叫xxx.mp4,我把
文件
名改为xxx.mmmm但是系统(win下)右键鼠标,没有打开方式这一项了,但是你依然可以打开:从已
做嵌入式产品,最头痛的事情就是害怕自己的代码给别人读出来,不需要通过自己,人家直接拿去生产了。所以要保护自己的最好方式就是使用硬
加密
IC的方式。当然有句话说的好“这世上没有破解不了的
加密
算法”。每一个
加密
芯片都有它的不足和优势,今天我不说如果破解
加密
IC ,我拿几个产品来对比,只讲它的优点和缺点。
ATSHA204:使用SHA-256算法进行
加密
操作,内置16*32字节的slot(E
只需要在原
文件
流的最前面加一个标致的字节就行了!
比如,原
文件
加密
后的字节流为:43 55 73 02
你在往
文件
中写的时候,在其前面加一个字节XX(01=JPG,02=BMP,03=GIF等)
如果原
文件
是JPG,则把流写成,01 43 55 73 02
在解密时,首先读到第一个字节,进行判断类型,把其...
MTK
手机
AT命令手册是一份关于
MTK
(
手机
芯片)的AT命令集合的手册。AT命令是模拟终端命令,用于控制和配置
手机
的各种功能和参数。
MTK
手机
AT命令手册包含了一系列用于控制和配置
手机
的命令,包括但不限于呼叫管理、短信管理、网络管理、SIM卡管理、音频管理、电源管理等等。通过发送特定的AT命令,可以实现诸如拨打电话、发送短信、连接互联网、查询网络信息等功能。
这份手册具体列出了每个AT命令的语法和用法,以及命令的参数和返回值。用户可以根据自己的需求,选择合适的AT命令来实现特定的功能。同时,手册还提供了一些示例代码,以帮助用户更好地理解和使用这些命令。
MTK
手机
AT命令手册对于
手机
开发人员和系统集成商来说,是一份重要的参考资料。通过研究和应用这些AT命令,他们可以更好地开发和调试
手机
软件,实现更多的功能和定制化需求。
总之,
MTK
手机
AT命令手册是一份包含了
MTK
手机
各种功能和配置的命令集合,通过学习和应用这些命令,用户可以更好地控制和配置
手机
,实现各种个性化和定制化需求。