[发明专利]一种针对FPGA固件的精准逆向工程方法有效
| 申请号: | 201810524531.9 | 申请日: | 2018-05-28 |
| 公开(公告)号: | CN108733404B | 公开(公告)日: | 2021-10-15 |
| 发明(设计)人: | 王坚;章韬;郭世泽;陈哲;李桓 | 申请(专利权)人: | 电子科技大学 |
| 主分类号: | G06F8/74 | 分类号: | G06F8/74;G06F21/76 |
| 代理公司: | 成都正华专利代理事务所(普通合伙) 51229 | 代理人: | 李蕊;李林合 |
| 地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 针对 fpga 精准 逆向 工程 方法 | ||
1.一种针对FPGA固件的精准逆向工程方法,其特征在于,包括如下步骤:
S1:截获比特流数据,将其保存为比特流文件;
S2:使用EDA工具获取FPGA结构信息,根据FPGA结构信息,使用映射生成器生成比特流映射信息,并将FPGA结构信息和比特流映射信息输入数据库;
S3:根据比特流映射信息,使用比特流逆向工具将比特流文件进行逆向,并还原成网表文件;
S4:结合FPGA结构信息,使用网表逆向工具从网表文件中恢复出功能等价的RTL代码,并输出代码文件;
所述步骤S4中,网表逆向工具的工作方法,包括如下步骤:
S4-1:进行初始化:初始化网表逆向工具,使用网表逆向工具读取网表文件,并将连接信息的结构和元件功能信息的结构转换成预设数据结构,并且加载FPGA结构信息;
S4-2:进行端口分类:根据步骤S4-1处理后的连接信息和元件功能信息,将PAD元件进行I/O端口分类;
S4-3:提取路径:根据I/O端口的类型,从网表文件中提取信号路径簇;
S4-4:生成代码:使用与元件的功能相同的RTL代码替换信号路径簇中的元件,并结合FPGA结构信息、信号路径簇的结构和属性将RTL代码进行整合;
S4-5:输出代码文件:生成代码文件,将所有RTL代码整合到代码文件中,检测并移除重复的端口定义声明,输出代码文件。
2.根据权利要求1所述的针对FPGA固件的精准逆向工程方法,其特征在于,所述步骤S2中,映射生成器的工作方法,包括如下步骤:
S2-1:进行初始化:初始化映射生成器,并生成空白网表;
S2-2:进行Tile测试:从FPGA的每种类型的FPGA结构组成单元Tile中各选一个,生成测试Tile组,将测试Tile组中每个Tile所有的待测试元件添加到空白网表进行测试,得到所有待测试元件的映射信息;
S2-3:计算偏移量:选择测试Tile组中一个Tile作为基准Tile,选择一个与基准Tile同类型的Tile作为待测Tile,将基准Tile与待测Tile配置成相同工作模式并分别加入空白网表中,生成比特流并计算基准Tile与待测Tile对应的控制比特集合地址之间的偏移量;
S2-4:遍历偏移量信息:将测试Tile组作为基准Tile组,将其它所有Tile作为测试Tile,遍历计算每个基准Tile与同类型的所有测试Tile之间的偏移量,得到偏移量信息;
S2-5:存储比特流映射信息:将步骤S2-2得到的元件映射信息与偏移量信息作为比特流映射信息存储到数据库,并输出比特流。
3.根据权利要求1所述的针对FPGA固件的精准逆向工程方法,其特征在于,所述步骤S3中,比特流逆向工具的工作方法,包括如下步骤:
S3-1:进行初始化:初始化比特流逆向工具,读取截获到的比特流,加载数据库中的比特流映射信息;
S3-2:还原连接信息:根据比特流映射信息,找到所有打开的可编程互联点PIP,根据PIP恢复出所有信号网络,并且基于深度优先搜索算法实现连接信息的还原并得到完整的连接信息;
S3-3:打信息补丁:分析所有Tile中相邻元件之间的相关性,并为在映射信息测试中缺失的信息打上补丁;
S3-4:逆向元件信息:根据比特流文件、比特流映射信息和补丁信息来确定每个元件的工作状态,得到元件功能信息,实现元件的逆向;
S3-5:输出网表文件:输出生成网表文件,将步骤S3-2得到的连接信息和元件功能信息整合到网表文件,输出网表文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810524531.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种BIOS设置方法和装置
- 下一篇:训练网页分布式表示模型的方法和装置





