首页
社区
课程
招聘
[原创]使用IDA开发壳程序、自动化分析程序
发表于: 2019-9-10 17:20 21787

[原创]使用IDA开发壳程序、自动化分析程序

2019-9-10 17:20
21787

2 目录:

(1)如何导出IDA的分析结果

(2)介绍IDAT的使用

(3)一键生成IDAT命令

(4)编写IDAPY脚本

(5)一键批量调用IDAT


3 正文:

(1)如何导出IDA的分析结果

众所周知IDA分析可执行程序的最开始,会生成一个同名的idb文件,

在图形界面中看到的各种区段符号偏移信息,都存储在idb中,

IDA提供了python脚本接口来访问这些数据,

而IDA是一个GUI程序,不方便通过代码带执行IDAPY,

实际上IDA目录下还有一个命令行版本的IDAT,

可以将PY脚本传递给idat运行,接着脚本访问数据库内容,SAVE为文本。





(2) 介绍IDAT的使用

这个是IDAT使用的官网介绍, https://www.hex-rays.com/products/ida/support/idadoc/417.shtml

实际非常坑,脚本传参失败,也看不到日志,最开始用命令很难写规范。


这里给出一个实例格式参考:

>>>    idat.exe -A -L"日志.txt" -S"脚本.py 脚本参数" 目标二进制文件

>>>    idat.exe -A -L"log\libape__getallfunc.txt" -S"script\getallfunc.py output\libape__getallfunc.json" input\libape.so


(3) 一键生成IDAT命令

自己写命令,还是很麻烦,干脆写一个小程序,一键生成idat.exe命令

(4) 编写IDAPY脚本

idapy脚本的写法,这里举一个简单例子,遍历IDA分析出的BIN所有函数信息,并保存为JSON,

宇宙最强神器IDA,简单粗暴。。

(5)一键批量调用IDAT

实际上,

我们可能有很多可执行程序,

有很多脚本模块(比如获取符号的,获取交叉引用的......),

所以挨个手动调用IDAT还是很麻烦,这里干脆再写个一键调用。


大致做法:

把可执行文件、IDAPY脚本文件、IDAPY日志、IDAPY输出都放在固定的目录下,然后


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

最后于 2019-9-10 18:00 被爱吃菠菜编辑 ,原因:
上传的附件:
收藏
免费 12
支持
分享
最新回复 (23)
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
2
学习了
2019-9-10 17:51
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
3
感谢分享哦~
2019-9-10 18:03
0
雪    币: 8924
活跃值: (5147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jgs
4
学习了,谢谢楼主分享
2019-9-10 18:25
0
雪    币: 6369
活跃值: (1693)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
5
很早就想这么做了~而且ida官方也是推荐命令行的方式去做batch,他们最开始的搞批量上传常见云sig就是headless下批量运行ida多进程实现的,每个进程差不多能吃满一个核心。
有时候确实有批量分析N+库文件生成idb的需要,但姑且还是偷懒了
2019-9-10 18:32
0
雪    币: 3935
活跃值: (192)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢楼主~
2019-9-10 19:27
0
雪    币: 53
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
大佬txl
2019-9-11 10:27
0
雪    币: 3623
活跃值: (656)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
9
请问ida有供c++调用的接口吗?有点不习惯python的类型
2019-9-11 11:14
1
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
10
月落之汀 很早就想这么做了~而且ida官方也是推荐命令行的方式去做batch,他们最开始的搞批量上传常见云sig就是headless下批量运行ida多进程实现的,每个进程差不多能吃满一个核心。 有时候确实有批 ...
可以修改下我的代码,最后执行命令的部分改为多进程。
2019-9-11 11:23
0
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
11
只有idc脚本和py脚本,都是动态类型的。
最后于 2019-9-11 11:25 被爱吃菠菜编辑 ,原因:
2019-9-11 11:25
0
雪    币: 2173
活跃值: (3231)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
12
其实写python脚步夜没那么麻烦,不过这个思路还是满有意思的,可以用ida的分析结果来自动抽取指令进行加密处理,但是可执行程序再生成呢?LIEF可是方便的多了?
2019-9-11 19:55
0
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
13
初衷主要是发现IDA像是个静态信息数据库,按需提取就行,
写壳写自动逆向工具,最初的静态信息收集信息阶段动作,全部都省略了。
2019-9-11 20:50
0
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
14
@xiaohang  我觉得IDA应该信息更全面一些,尤其还有各种内存访问交叉引用的统计,免费的就是不如花钱的
最后于 2019-9-11 21:08 被爱吃菠菜编辑 ,原因:
2019-9-11 21:08
0
雪    币: 2647
活跃值: (5093)
能力值: ( LV9,RANK:225 )
在线值:
发帖
回帖
粉丝
15
很好的思路,赞一个。
最后于 2019-9-12 16:13 被天水姜伯约编辑 ,原因:
2019-9-12 16:13
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
mark
2019-9-13 00:06
0
雪    币: 12395
活跃值: (3704)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
厉害了我的IDA
2019-9-15 08:37
0
雪    币: 4361
活跃值: (387)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢分享
2019-9-15 09:04
0
雪    币: 110
活跃值: (254)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
mark,好思路
2019-9-21 03:48
0
雪    币: 14362
活跃值: (3944)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不错。一个全新的思路。
2019-9-21 11:11
0
雪    币: 175
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习了,IDA一直不会用。
2019-9-23 18:50
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
刚用跑了一下程序,发现只有在管理员模式下才能调用idat.exe,和ida 6.8区别还是有的,真的想吐槽windows
2020-3-9 21:46
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
真的太给力了,拜谢楼主
2020-3-23 10:24
0
雪    币: 205
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
看不懂,这要英语基础吗
2020-3-29 00:48
0
游客
登录 | 注册 方可回帖
返回
//