一、声明

作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教。个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地方,后面再慢慢修改。

二、正向开发流程

C语言开发,开发工具使用CCS(Code Composer Studio,基于eclipse开发的),有过开发经验的都会很容易上手,新建test工程,选择C674x,输出文件为ELF格式,如图所示:

编译成功后,会生成test.out文件(ELF格式)。

使用TI提供的AISgen_d800k008.exe把.out转成了ais格式:

最后将test.bin烧入设备即可。

三、逆向初步

逆向分析就是在仅仅只有bin文件的条件下,还原原来程序功能。IDA对TI指令的反汇编支持很差,最新版本的6.8才有对6xxxx的支持,并且效果非常不好。我所用的方法是先把AIS格式还原为ELF格式,再使用CCS进行反汇编。

1、  把AIS格式的test.bin还原为ELF格式文件

使用UE比对test.bin和test.out,可以发现,test.out中的ELF头和很多节被删除,只保留了几个基本的节。下面是readelf -a test.out的结果:

而test.bin中仅仅保留了.text .const .cinit和入口点信息。

本来开始准备自己手动一点点还原的,后来在AISgen的安装目录下发现了一个程序aisparse.exe,一看这名字就感觉有戏,运行结果:

Usage: aisparse ais.bin [ais.h]

果不其然,这个就是用来解析bin格式的,输入为.bin文件,输出为.h文件:

一下就清晰了很多,顺手写了个AIS –> ELF的小程序。当然,生成的test.elf相比原先的test.out丢失了很多信息。

2、  逆向ELF

没有找到好的工具反汇编,最后发现使用CCS的调试功能的可以进行反汇编。这也需要一定的小技巧:使用CCS随便写一个程序,调试,在调试界面,依次选择Run->Load->Load Program,选择test.elf,就能调试了test.elf,也可以从中copy出反汇编代码静态分析。需要注意的是,这里的反汇编代码有的地方是错误的哦,非常坑!

后面具体的指令格式,多看看TI的文档,有时间我再往下写。

最新文章

  1. HTML5学习之 开发工具
  2. Application中的路径
  3. Apache Benchmark测试工具
  4. css中的position:relative和absolute 属性
  5. oracle 11g设置打开空表extent储存块
  6. ArcGIS 10.3 安装及破解
  7. hdoj 5112 A Curious Matt
  8. bluetooth-蓝牙事件监听
  9. Oracle 游标使用全解(转)
  10. H264中的MapUnits
  11. C#多线程编程序--聊聊线程
  12. python 闭包计算移动均值及nonlocal的使用
  13. js检测数据类型四种办法
  14. verilog中signed的使用
  15. Python-接口自动化(九)
  16. 使用Guava获取某一个类的指定超类上的泛型Type T
  17. VC++文件拖放
  18. RSS阅读
  19. ImageView和onTouchListener实现,点击查看图片细节
  20. Android MediaCodec 的实例化方法

热门文章

  1. Win10 的虛擬桌面
  2. mobile meta iphone
  3. Mysql死锁问题解决方式 & 聚簇索引、隔离级别等知识
  4. PHP中文件包含的路径问题
  5. 主成分分析PCA(转载)
  6. Spring AOP代理时 ClassCastException: $Proxy0 cannot be cast to (类型转换错误)
  7. HDU1217:Arbitrage(SPFA)
  8. ui-router---$stateProvider
  9. Tamper Data 安装与使用
  10. Android自定义控件系列(四)—底部菜单(下)