IDA 反编译openblt (实战:手搓 hex 文件变成 C语言)
IDA 反编译openblt (实战:手搓 hex 文件变成 C语言)
OpenBlt作为一款开源的引导加载程序,在嵌入式系统领域有着广泛的应用。本文将详细介绍如何使用IDA Pro 7.7版本对OpenBLT进行反编译分析,通过将hex文件转换为C语言代码,帮助读者深入了解其内部工作机制。
引言
OpenBlt 作为一款开源的引导加载程序,在嵌入式系统领域有着广泛的应用。对 OpenBLT 进行反汇编分析,不仅有助于我们深入理解其内部工作机制,还能为系统的安全评估、漏洞挖掘以及功能扩展提供有力支持。
IDA(Interactive Disassembler)作为一款强大的逆向工程工具,能够将二进制代码转换为汇编代码,并提供丰富的分析功能,是反汇编 OpenBLT 的理想选择。
这里选用 开源OpenBlt , 是可以通过反编译后的C 文件与源码对比,最后确定反编译的效果。
准备工作
IDA Pro
详细可参考之前文档,IDA 反汇编 STM32F1xx
本文使用的 IDA Pro 7.7 版本
IDA sdk
需要用的对应IDA Pro版本的 IDA sdk ; 网上有很多版本,可自行搜下下载。
待分析文件
分析使用的测试文件https://download.csdn.net/download/nishiwho/90420826
分析文件使随便找git上找的开源库。这里面提供了3个文件。
.hex 为 待分析的文件。
.lib 是编译的stm32的std库、openblt库生成的lib文件。
.sig 文件是使用 lib 文件生成的签名文件。
开始工作
sig 文件生成
生成 sig 文件需要用到 IDA sdk 里的 flair 工具包。
# 生成 pat 文件
pelf.exe onstm32.lib onstm32.pat
# 生成 sig 文件
sigmake.exe onstm32.pat onstm32.sig
lib 转 pat 文件基本直接能完成; pat 转 sig 文件,一般编译 .exc 文件, 根据文件提示,添加需要的函数,并删除前面4行即可。
把生成的 sig 文件 复制到 ida77\sig\arm 中
反编译
1. 加载 hex 文件
使用STM32 Parser 插件处理后,按快捷键 Alt+F8 显示结果。
看到使用插件处理后,基本上矢量表函数能完全显示正常。
2. 加载签名并处理
选择 “视图” -> “打开子视图” -> “签名”, 或者直接 shift+F5; 弹出签名窗口,右键添加签名文件
加载sig 文件,点击 OK 即可。
查看加载签名后的文件,很多函数都能解析了。
对比下,反编译后的成果和原始文件。
现在基本能愉快的通过 IDA 查看相关的 C 函数 和 汇编函数 。
结论
通过使用 IDA 对 OpenBLT 进行反汇编分析,我们可以深入了解其内部工作机制。在进行反汇编分析时,要遵守相关的法律法规和道德规范,确保分析工作的合法性和正当性。