LINUX 下的逆向 用 IDA 分析,样本逆向中系统调用的识别方法

作者:RootKiter

无符号表情况下的逆向

LINUX平台下的程序,可以通过strip程序进行精简,精简过的可执行文件会变小,同时又丝毫不影响执行效率。但这种情况会给程序逆向带来困扰。由于没有符号表的支持,所有函数在IDA中都会被显示为sub_xxx的形式,这会给逆向工程带来麻烦。

这里简单记录一下各常见平台下的系统调用识别方法。

常见平台的系统调用识别方法

无论哪个平台的系统调用都有两个关键点,一个是调用指令,另一个是调用号。

系统调用的具体功能由系统调用号制定,调用号和功能的对应关系要参考相关头文件。

我把目前所有能找到的系统调用有关的头文件,都放在了github 上的Reverse-bins项目中,供查阅。

X86

调用指令         INT 80h

寄存器         eax

参考表         x86系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

1.png (32.15 KB, 下载次数: 72)

2016-12-21 10:33 上传

ARM

ARM 下的系统调用,有两种,一种是带参数的,另一种是指令调用时参数指定,分别如下:

寄存器指定

调用指令         SVC 0

寄存器         r7

参考表         ARM系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

2.png (21.33 KB, 下载次数: 69)

2016-12-21 10:33 上传

指令内指定

调用指令         SVC 0xXXXXX

寄存器

参考表         ARM系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

3.png (30.02 KB, 下载次数: 61)

2016-12-21 10:33 上传

MIPS

调用指令         syscall 0

寄存器         $v0

参考表         MIPS系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

4.png (39.73 KB, 下载次数: 60)

2016-12-21 10:33 上传

PPC

调用指令         sc

寄存器         r0

参考表         PPC系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

5.png (35.95 KB, 下载次数: 61)

2016-12-21 10:33 上传

SH4

调用指令         trapa #h’10

寄存器         r3

参考表         SH4系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

6.png (40.52 KB, 下载次数: 71)

2016-12-21 10:33 上传

SPC

调用指令         ta 0x10

寄存器         %g1

参考表         SPC系统调用表

8f3ff2fbfdd7c7c8339951a6542705fa.gif

7.png (40.24 KB, 下载次数: 60)

2016-12-21 10:33 上传

这里记录了无符号表时,系统调用函数的识别方法,可用于LINUX下逆向参考。

这种对照关系也可以在IDA脚本进行实现,以节省逆向时间,在分析MIRAI样本的工作中,大概能节约30%的分析时间。

参考资料

1、x86系统调用表:

https://github.com/rootkiter/Reverse-bins/blob/master/syscall_header/i586_unistd_32.h

2、ARM系统调用表

https://github.com/rootkiter/Reverse-bins/blob/master/syscall_header/armv5l_unistd.h

3、MIPS系统调用表

https://github.com/rootkiter/Reverse-bins/blob/master/syscall_header/mips_unistd.h

4、PPC系统调用表

https://github.com/rootkiter/Reverse-bins/blob/master/syscall_header/powerpc-440fp_unistd.h

5、SH4系统调用表

https://github.com/rootkiter/Reverse-bins/blob/master/syscall_header/sh4_unistd_32.h

6、SPC系统调用表

https://github.com/rootkiter/Reverse-bins/blob/master/syscall_header/sparc_unistd.h

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值