网站首页 > 技术教程 正文
嵌入式代码破解:
通过一定的外部工具和手段,将代码从CPU中读取出来,然后再将其下载到相同芯片上运行。
这样完成硬件抄板后,直接就可把别人的代码抄袭下来。
破解原则:
就像所有的加解密一样,在现有的技术条件下,没有破解不了的密码,只是破解的时效性以及代价。
设计加密的目的是让破解者的破解成本高于收益成本,从而使其放弃破解。
根据破解流程,可以两方面进行防破解:
1,代码下载完成后,将flash锁死,防止代码被读出;
2,代码被读取出来后,下载到其它芯片中无法运行。
对于方法1:
1,可以将芯片抛开,找到熔丝,接上后,即可以将程序读出来;
2,此方法有个不方便的地方: 对于远程代码调试,我们需要将bin文件发给对方,由对方下载进去。
对于方法2:
要求我们的代码即使被读出来了,但下载到其它芯片中,是无法运行的。
这就要求代码的身份信息与芯片的身份信息一致。
代码的身份信息录入方式:
1)下载的bin文件中本身就有身份信息,这就要求在下载bin之前,对bin文件进行处理,加入身份信息;
2)程序运行起来后,通过其它方法,写入身份信息。
代码的身份信息,可以更改。
芯片的身份芯片:
1)最常用的就是芯片的 UID. -- 这个就要求芯片在出厂时就带有唯一的ID;
2)程序运行起来后,以某种方法写入到芯片中 -- 这要求此UID是无法读出来的。
要求芯片的身份信息,写入后无法更改。
简单的单片系统中的防破解方法, 以及破解方法
1,增加加密芯片
即代码启动,先生成一串随机数,后将此随机数发给加密芯片,加密芯片加密后,发给CPU,
CPU对其进行解密,看是否与发出的数据一致。
【即代码和加密芯片使用一套加密算法和密钥,并要求一机一密钥】
破解方案一:
读出CPU的程序,-- 这个比较简单
复制一模一样的加密芯片。【加密芯片一般难以复制】
破解方案二:
读出CPU的程序,进行反汇编后,修改代码,让其跳过与加密芯片的握手阶段即可;
【比如 CJNE这种指令,可能就是进行握手的代码】
这在汇编代码中容易猜测出来。
2,使用芯片ID进行加密
代码启动后,读取芯片的UID,再与代码的身份信息进行比较,若相对应,则代码继续运行;
【芯片的UID基本是无法更改的,即使可以更改,批量化更改也是不现实的】
【可以对代码的身份信息进行加解密处理,以增加难度】
破解方法一:
对代码进行反汇编,找到读取UID的部分。因为一般芯片的UID地址固定。
char *puid = 0x84000001, 一般做的做法是这种形式。
更改bin文件,将此指针,指向一个空白区域,在这个区域写入代码的ID。
这样代码进行比较时,即可认证成功,代码继续运行。
防破解办法:
读取芯片UID时,不要使用立即数,可以通过一些逻辑计算获取,以增加破解难度;
3,破解方法
对于分析汇编代码,找到防破解的功能函数,更改其代码,(或注入新的代码)让其跳过防破解函数,
从而实现破解,
防破解方法:
将防破解函数,防破解认证过程,分解成几个子过程,再将其分布在代码的其它有用功能代码之中
以增加破解难度。
4,对于更改代码,或者注入代码的破解方式,如何进行防破解
1)增加代码的分析困难:
a, 比如讲读取ID的立即数,改为通过逻辑计算获得;
b, 将防破解的关键代码,运行过程分散开来;
2)将代码文件扩展到整个flash空间大小,防止数据注入。
对于编译生成的bin文件,通过增加随机数,或者BIN原片段的方式进行扩展
3)增加代码的完整性验证过程:即对BIN文件进行签名
5,bin文件签名过程:
a, 编译器生成bin文件后,在bin文件后面填充上随机数据(或者bin文件片段),形成新的BIN文件;
b, 将BIN文件进行哈希计算,得到哈希值;
c,对哈希值进行加密,得到文件的签名值;
d,将签名值填充到BIN文件中,形成签名的BIN文件;
e,将签名的bin文件下载到CPU中运行;
f,CPU启动后,对整个BIN文件进行哈希计算,并读取出签名值,对签名值进行解密
对比哈希值与解密后的签名值,如果一致,表明代码没有进行过更改。
【哈希计算也可以改为CRC32等计算,加解密可以是RSA,SM4等,也可以是异或等简单的逻辑计算】
6,代码的身份信息加入:
即如何将代码的身份信息加入到BIN文件中。
1)下载BIN文件前,注入身份信息
a,通过工具,读取出芯片ID;
b,将ID信息进行加密后,注入到BIN文件中,形成新的BIN文件;
这个对于有boot的芯片,比较方便,在下载时,先发命令获取到UID,BIN注入UID后,
猜你喜欢
- 2025-04-09 超详细的CAD2015 破解版安装教程,每一个步骤让你不再烦恼
- 2025-04-09 一个最简单的通过WireShark破解SSL加密网络数据包的方法
- 2025-04-09 牢不可破的超大要塞,号称比利时巨锁,看德军亲自演示破解密钥
- 2025-04-09 索尼PS5已被破解?知名黑客发文称获得所有控制台秘钥
- 2025-04-09 有了量子芯片就能破解区块链秘钥么?
- 2025-04-09 还在使用简单密码?快修改!别让勒索软件攻击找上门
- 2025-04-09 了解加密与解密的初学者指南(了解加密与解密的初学者指南)
- 2025-04-09 【亲测有效的电脑技巧】:破解bitlocker
- 2025-04-09 支付中的加密/解密算法——RSA加密和AES加密
- 2025-04-09 暴力破解Wifi网络连接密码(暴力破解wifia)
你 发表评论:
欢迎- 最近发表
-
- 函数公式的7大潜规则,这次给你讲透了
- 数据逆向查找不止有vlookup,你该知道的三种逆向查询操作
- Vlookup函数怎么一次查找能返回多个结果?
- vlookup函数的嵌套你用过吗?一次可以引用3个表格的数据
- Vlookup函数的新用法,查询合并单元格,很多Excel高手都不知道
- 分明有数据,公式也没错,为什么vlookup还是会返回错误值
- 条件判断还在用if函数就out了,vlookup函数模糊查询一键完成
- EXCEL函数 VLOOKUP函数 HLOOKUP函数
- excel中vlookup函数的用法(excel中vlookup函数公式)
- 自动获取vlookup函数的第三参数,再也不用一列一列的数了
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)