INFINONE XC164单片机逆向记录(2)反汇编

本文详细记录了对INFINONE XC164单片机进行逆向工程的过程,从256KB的存储空间分析到使用IDA进行反汇编,探讨了线性与递归反汇编的差异。重点解析了BOOTLOAD处的中断向量,特别是RESET、SSC0和TIMER7中断,涉及主程序和LIN线的中断处理,通过反编译找到了关键变量如RXD_BUFFER和TXD_BUFFER。
摘要由CSDN通过智能技术生成

  本人所写的博客都为开发之中遇到问题记录的随笔,主要是给自己积累些问题。免日后无印象,如有不当之处敬请指正(欢迎进扣群 24849632 探讨问题);

写在专栏前面https://blog.csdn.net/Junping1982/article/details/129955766

INFINONE XC164单片机逆向记录(1)资料准备https://blog.csdn.net/Junping1982/article/details/129945022

特别声明:未经授权,请勿转载

----  文接上章  -------------------------------

 手册内找到的FLASH逻辑地址为0xC00000 ~ 0xC1FFFF共128K,实际上SAK-XC164CS-32F0BB的存储空间有256K,从客户读取的数据及后面介绍的开发环境中可以看得出来,这里推理一下FLASH逻辑地址为0xC00000 ~ 0xC3FFFF共256KB的存储空间。

根据以上信息,打开IDA,配置数据如下

一路OK,YES并选择芯片型号为XC164CS

 IDA没有进行任何型式的反汇编工作,弹出的提示为找不到入口点,这里要说明一下,IDA是非线性反汇编工具,它是基于递规模式设计的反汇编工具,当前我自己设计的几款反汇编工具全部都是采用线性反汇编的,读了<<IDA Pro权威指南(第2版) (美)伊格尔(Chris Eagle ) 著;石华耀,段桂菊 译>>一书,书中对线性与递归反汇编的优缺点做了比较,总的来说递归反汇编对单片机程序的反汇编来说十分友好。后面有时间,有其它机会我会将目前的程序的框架改为递归反汇编的。言归正传,咱们接着上面的话题开始反编译,使用HEX View快速定位程序到C00000处,

 重新选中反汇编窗口(IDA view),

 选中位置C00000, 并按'C‘键,手工开启汇编

 这样便将复位处的代码完成的反汇编工作,依次将中断向量处非0的地址都做下反汇编,经过整理,BOOTLOAD处启用的中断向量有

  1. 00H, RESET
  2. 10H, STKOF
  3. 18H, STKUF
  4. 28H, PRTFLT
  5. B2H, SSC0
  6. F1H, TIMER7
  7. 10CH, PLL/OWD
  8. 150H, CAN0

 与客户需求有关的是RESET, SSC0, TIMER7三处中断,这里涉及主程序以及LIN线的数据中断及时隙控制,将反编译后的内容导出到ASM文件,并用记事本打开。

将SSC0的中断处用反C后得到如下代码

由代码或见,中断处使用了如下全局变量

BYTE RXD_BUFFER[10];    0C078H
BYTE RXD_POOL[10];      0C082H 
BYTE TXD_BUFFER[10];    0C08CH

BYTE RXD_POS;      byte_C094
USHORT* word_C096 = TXD_BUFFER; 
USHORT* word_C098 = RXD_BUFFER; 

 这样通过如此这样查找,线索更多了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晶通物控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值