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函数中将看到如下一些具体功能实现代码,注意寄存器的配置都是对芯片的某个内存地址进行操作,变量也是对应某一个存储器地址。
关键字:IDA 反编译 STM32 Hex Bin文件
引用地址:
IDA反编译STM32 Hex\Bin文件成C代码
推荐阅读最新更新时间:2024-10-30 22:28
使用Keil MDK以及标准外设库创建STM32工程
1.1 使用Keil MDK以及标准外设库创建STM32工程 通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。本节就介绍怎样利用Keil MDK开发环境和标准外设库来搭建自己的工程。 建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。 1.1.1 开发工具与开发环境 1
[单片机]
STM32定时器学习---基本定时器
STM32F1系列的产品,除了互联型产品外,工位8个定时器 TIM6、TIM7:基本定时器 TIM2/3/4/5:通用定时器 TIM1、TIM8:高级定时器 三种定时器的区别: 基本定时器: 基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源。 基本定时器框图: 1、定时器时钟源 TIM6 TIM7挂载在APB1上,由预分频系数控制。1:36M 2:72M 2、计数器时钟 定时器时钟经过 PSC 预分频
[单片机]
STM32基础知识:串口通信-DMA方式
1 DMA概述 直接存储器访问 (DMA) : 用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率。 DMA数据传输的四个要素: 传输源 :DMA数据传输的来源 传输目标:DMA数据传输的目的 传输数量:DMA传输数据的数量 触发信号:启动一次DMA数据传输的动作 STM32的DMA控制器特点 每个DMA控制器有8个数据流,每个数据流可以映射到8个通道(或请求); 每一个DMA控制器用于管理一个或多个外设的存储器访问请求,并通过总线仲裁器来协调各个DMA请求的优先级; 数据流(st
[单片机]
STM32外部中断控制LED
单片机源程序如下: #include stm32f10x.h #include button.h #include led.h #include delay.h #include exti_config.h #define key GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0) int main() { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0) ; button_init(); led_init(); exti_config(); nvic_config(); while(1) {
[单片机]
STM32 程序卡死在启动文件startup_stm32fxxxx.s的SysTick_Handler中
出现的问题 硬件调试的时候发现程序一直在启动文件下面箭头这行。显然是跟SysTick_Handler有关 由于我使用了FreeRTOS,所以需要SysTick为系统时基单元,所以需要SysTick_Handler,但是我却没有定义此中断函数,所以导致上面的程序一直进入不了以SysTick_handler命名的中断函数;填上就好了; 解决问题 添加SysTick_Handler函数:
[单片机]
用Keil对STM32代码封库的实现方法
有时候,我们所写代码的具体实现方法不想让其他人知道。这时,可以用Keil对代码进行封库。 注意:在封库之前,必须确保整个工程代码能够编译通过。 下面举例说明操作步骤: 想要把工程中“firmware.c”文件封装成库文件。 1、对不封装成库的文件执行以下操作: 点击“OK”确定。对除“firmware.c”的其他文件,执行上述操作。操作完成后,会发现文件图标有所变化: 2、选择“Options for Target”- output选项卡- 选择Create Library项 3、编译整个工程,会在选定的路径 ..\Output\ 下出现 firmware.lib 文件 4、删除工程中的“fir
[单片机]
STM32开发笔记28: 中断请求的移植与处理
单片机型号:STM32L053R8T6 本文介绍如何移植STM32的IRQ(中断请求)到自己的系统中,我们以USART1接收中断为例。 先看启动文件(汇编语言),如下列程序所示,列出了其向量区,USART1的中断向量已用红色标识,当和USART1相关的中断发生时,程序指针(PC)在保护现场后,直接指向到该向量。 __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler
[单片机]
STM32 ADC
STM32 ADC 简介 STM32 拥有 1~3 个 ADC (STM32F101/102 系列只有 1 个 ADC) ,这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。 STM32F103 系列最少都拥有 2 个 ADC,我们选择的 STM32F103ZET 包含有 3 个 ADC。STM32
[单片机]