首页
社区
课程
招聘
[原创]TI(德州仪器) TMS320C674x逆向分析方法
2017-3-19 11:31 8324

[原创]TI(德州仪器) TMS320C674x逆向分析方法

2017-3-19 11:31
8324

一、闲语

    去年听闻看雪融资了,一看新闻发现才融资500万,在这个泡沫膨胀的互联网+年代,真是太少了。像我这种只知索取,从未回馈论坛的人深感惭愧,无赖水平有限,如今终于拼凑一篇文章,发到看雪,聊表心意。

    TI的逆向,网上能找到的资料很少,个人也并不懂嵌入式开发,整个逆向流程都是根据其他平台逆向经验,一步一步摸索出来,也许很多步骤非常SB,如果有什么错误请批评指正,或者有更好的方法请不吝赐教。

二、正向开发流程

    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官网文档:
http://www.ti.com/product/tms320c6745/technicaldocuments
里面资料非常详细,可以对着里面一个个看,用的比较多的两个文档:
TMS320C674x指令格式:TMS320C674x DSP CPU and Instruction Set User's Guide .pdf
芯片相关的接口地址可以到这里找:  TMS320C6745, TMS320C6747 Fixed- and Floating-Point Digital Signal Processor (Rev. F)


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞1
打赏
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/08
最新回复 (7)
雪    币: 226
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
雨夜听风 2017-3-20 11:06
2
0
支持
雪    币: 32410
活跃值: (18740)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2017-3-20 13:24
3
0
雨夜听风 支持
感谢对看雪论坛的支持!
雪    币: 6769
活跃值: (4422)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
gjden 14 2017-3-20 14:33
4
0
TMS320的指令可以直接用IDA分析,非常方便。
雪    币: 1705
活跃值: (79)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
pealcock 2017-3-25 14:07
5
0
gjden TMS320的指令可以直接用IDA分析,非常方便。
没想到看雪老大和版主都回复了,看来我中间写的有问题。因为我分析这个已经有好几年了,当时IDA还没有对C6xxxx的支持,现在6.8已经更新功能了。
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hamszm 2017-4-8 07:25
6
0
请问aisparse.exe在哪个安装目录下?AISgen_d800k008的安装目录下好像没有耶!
雪    币: 1705
活跃值: (79)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
pealcock 2017-4-20 23:54
7
0
hamszm 请问aisparse.exe在哪个安装目录下?AISgen_d800k008的安装目录下好像没有耶!
不好意思,AISgenD800K005-0.8.2.0-setup.exe安装后里面有。我以为这几个里面都有,AISgen_d800k008安装后确实没有。
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hamszm 2017-4-27 20:06
8
0
pealcock 不好意思,AISgenD800K005-0.8.2.0-setup.exe安装后里面有。我以为这几个里面都有,AISgen_d800k008安装后确实没有。
AIS文件解析的程序TI有开源的C#源码。
游客
登录 | 注册 方可回帖
返回