ELF,file判断一下是什么文件
ELF 32-bit LSB executable, QUALCOMM DSP6, version 1 (SYSV), statically linked, for GNU/Linux 3.0.0, with debug_info, not stripped
这是一道基于高通hexagon架构的题目
introduce:骁龙处理器中世界级的Qualcomm Hexagon数字信号处理器(DSP)支持多种多媒体功能,并且经过优化可实现高性能和高能效。Hexagon DSP能够卸载CPU任务,利用异构计算支持始终在线任务,例如音频和显示
IDA通常是不支持反汇编这个架构的指令的
IDA的procs目录包含已安装的IDA版本所支持的处理器模块。处理器模块为IDA提供机器语言-汇编语言转换功能,并负责生成在IDA用于界面中显示的汇编语言。
下面这个项目中含有一个IDA processor module for the hexagon (QDSP6) processor,
https://github.com/gsmk/hexagon
我的平台为windows,下载后是一个dll,放到IDA(≤7.5)的procs目录下
使用32位IDA打开进行分析,这次可以反汇编了,但是目前没有找到什么可以反编译,无奈之下,只有看英文文档直接撸汇编
指令参考文档下载:https://developer.qualcomm.com/qfile/29900/80-n2040-8_h_programmers_ref_v5.pdf
.text:00020200 start: @ DATA XREF: LOAD:00010018↑o
.text:00020200 @ LOAD:0001007C↑o
.text:00020200 { allocframe (#0) }
.text:00020204 { call welcome }
.text:00020208 { r0 = #0x1337 }
.text:0002020C { immext (#0x30500)
.text:00020210 r1 = ##target }
.text:00020214 { loop0 (loc_20218, #0x50) } @ 'P'
.text:00020218
.text:00020218 loc_20218: @ DATA XREF: start+14↑r
.text:00020218 { r2 = memb (r1 + #0) }
.text:0002021C { r2 = xor (r0, r2)
.text:00020220 r0 = add (r0, #1)
.text:00020224 memb (r1 ++ #1) = r2.new }:endloop0
分析:先调用welcome函数,然后给r0赋值,之后循环0x50次,将target地址处开始的数据进行异或解密