历史上的今天
今天是:2025年06月26日(星期四)
2019年06月26日 | IDA反编译STM32 Hex\Bin文件成C代码
2019-06-26 来源:eefocus
IDA是一款功能强大的反编译软件,网上找了许久没找到它的使用教程,经过摸索可将STM32的hex文件进行反汇编,操作步骤如下,首先下载IDA Pro版破解软件,免安装。
IDA Pro下载链接:https://pan.baidu.com/s/14UyF40mzg17byfnlaWgPwQ
如果文件为bin文件,可使用bin转hex工具转为hex格式,
BinToHex下载链接:https://pan.baidu.com/s/1u8ewOrs3H5LOfMUGioNEuw 提取码:20jr
1、打开解压后目录下的idaq.exe可执行文件,点击[File]-[Open]看到如下界面,

2、打开hex文件弹出提示

3、【processot type】选择小端ARM,点击【set】保存

4、按顺序点击图片中的1-2-3,设置好后点击所以【ok】关闭提示框

5、接下来将看到hex的文件内容,在CODE32下按d合并行

6、右击第二行跳到程序起始处

7、在跳转到的程序前面按c键

8、反汇编完成,在CODE32处按F5键将生成类C伪代码,见第12步

9、右击函数头选择【Graph view】可查看函数间调用关系

10、查看函数调用关系

11、在子函数中按【F5】键,生成反编译代码

12、反编译后的CODE32函数,该函数前面是stm32中启动文件中的一些时钟初始化函数,main函数的入口在最后sub_8003076();中,双击该函数即可进入。

13、进入main函数中将看到如下一些具体功能实现代码,注意寄存器的配置都是对芯片的某个内存地址进行操作,变量也是对应某一个存储器地址。

史海拾趣
|
应用很简单,2003输入接MCU的IO,输出接一个加热丝(加热丝电阻100欧姆左右),现在的现象是不管MCU的IO是什么信号,加热丝都一直进行加热。现在批量生产的10台机器中有一台出现了这个问题,是元件本身的问题,还是电路的问题呢,小弟很着急,请大 ...… 查看全部问答> |
|
u-boot引导linux,在出现如下问题后就不动了……请求帮助! 网上有两种解决方案: 一是串口的问题,即ttySAC0; 二是时钟频率的问题。 这两个我都排除了,但还是不行! 出现的问题如下: Starting kernel ... Uncompressing Linux................................................................... ...… 查看全部问答> |
|
void main(void) { unsigned char xdata* data dptr; unsigned char i,VOUT=0; float Y,Y1,Y2,X; while(1) { dptr=0x7ff8; ...… 查看全部问答> |
|
请问:如果某一个timer到时间而没有被关闭,将会有什么结果产生? 我是这样想: 设置并且启动timer后,timer开始计时,一旦指定的延时结束,函数立即被调用。 可是如果timer到时间没有被关闭,将会产生什么样的结果呢? 请高手们帮助解答一下… 查看全部问答> |
|
STM32F103VE 能从电脑上看到USB盘符,文件也能读出,速度也不慢。 可就是一往上写就不行,提示超时错误。 用USBlyer抓包,一大堆都是success,只有一个Remova Relation 显示Not surportted. 只要一写,就卡住。。。。。。N久后说设备超时 ...… 查看全部问答> |
|
小弟调试的LM3S9系列 定时器时 32位的RTC模式,16位的边沿计数捕获 边沿定时捕获都不能进中断 但是32位的单次触发 周期定时 和16位的单次触发 周期定时都没问题! 而且我发现出现问题的程序都用到了pulseInit(void)函数产 ...… 查看全部问答> |




