首页
社区
课程
招聘
[原创]简易的IDAPython脚本
发表于: 2020-6-25 00:45 13295

[原创]简易的IDAPython脚本

2020-6-25 00:45
13295

记得曾经分析第一个样本的时候,我第一天分析的东西,都截图记录下来,第二天晚上回去继续分析的时候,我要花大概15-20分钟去复现昨天的现场,如果不小心错过了重要的函数,就得重头再来,后面前前后后浪费了很多时间才搞出来,最后分享会演示的时候,直接被老大鞭策了。所以才开始了解并编写ida脚本,不过由于网上能看的资料实在是比较少,踩了不少坑,到今天为止终于可以愉快,并且顺畅的写脚本了。所以把流程分享给大家,希望能帮助像我一样的人提高分析效率。

我使用的IDA是泄露版本的7.0然后python版本是2.7

这样好处显而易见,直接把代理文件丢进插件目录,然后引入我们插件的module就好了,这样就不会直接操作ida的插件目录,不容易出问题。我这边真正写插件的目录就是roytool

我这边目录/Applications/ida.app/Contents/MacOS/plugins

下面我们就可以在我们之前append的module(roytool)下编写脚本了。

打开ida直接验证效果,如果上面的代码没有问题,Edit-Plugins

452ba0c036e60d300446587ff34db2ff

我们会看到上面图中的样子,点击我们的插件(或者用快捷键)就会运行init、run函数中的代码了。到此为止,我们插件的基本流程就算完事了。下面继续介绍

在不使用idaapi.require(module)的情况下,每次更新插件代码,ida都要大退重启,才能生效,这时候就需要idaapi.require

ex:

注意:既然用了idaapi.require 就不要使用import功能了,不然代码依然不会实时更新

这里举个例子,比如我们要快速定位到init_array函数

通过上面的代码就可以直接定位到init_array了,真滴是又简单,又方便。我在这里可能至少能剩下1-2分钟的时间/每次调试,而且这里只是举例init_array, 我们也可以这样去调试我们要调试的函数

我们分析的过程中,会在汇编指令做个中记录日志,比如某个寄存器的值了,或者某个函数是做什么的,再或者,我们会直接更改函数的名字,方便每次查看。这时候,为了效率,或者说能快速的复现上次调试的现场,我们就可以用这个功能,代码也非常简单。

这个我在上一个脱壳流程中写到了,感兴趣的小伙伴可以去看一下。

篇幅问题,就简单的举几个常用的,就是想体现很简单的代码,就能节省我们大量的分析时间,我们可以找到自己效率低的地方,然后用idc接口去提高分析效率

先看效果

e09aebdc15b0047cb59e05bb6a45aede

b3ef729c12297dde731e0a30c698963a

最后保存为.ui文件,再使用pyuic5 -o xxx.py xxx.ui,就能直接输出.py文件了,我们保存到项目中就可以直接用(具体配置可以自行google)

方便又简单

OK,到这里就完成了,我相信我里面提到的问题,肯定还有更好的解决方案,不一定要写脚本,但是由于自己经验少,可能只能通过脚本来完成,我分享这个是希望告诉像之前的我一样的小伙伴,工欲善其事,必先利其器!最后谢谢大家的观看!


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

收藏
免费 13
支持
分享
最新回复 (15)
雪    币: 529
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2020-6-25 09:33
0
雪    币: 3735
活跃值: (1188)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
3
感谢分享!!
2020-6-25 12:30
0
雪    币: 1199
活跃值: (1312)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
给力!
2020-6-25 13:32
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
5
不错,向楼主学习,学会写python插件
2020-6-25 16:16
0
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
NightGuard 不错,向楼主学习,学会写python插件
一起努力进步!!
2020-6-25 16:53
0
雪    币: 498
活跃值: (4206)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习了
2020-6-26 18:55
0
雪    币: 69
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
mark
2020-6-26 19:30
0
雪    币: 19950
活跃值: (4942)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢楼主分享
2020-6-26 22:36
0
雪    币: 1841
活跃值: (1290)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
10
学习了,感谢分享
2020-8-2 23:45
0
雪    币: 8201
活跃值: (2701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了,谢谢分享!
2020-8-3 07:19
0
雪    币: 209
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
学习了
2020-8-4 14:55
0
雪    币: 847
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
感谢分享
2020-8-7 05:20
0
雪    币: 102
活跃值: (2050)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
感谢楼主,向楼主学习,学会写python插件,有机会请楼主吃大餐。
2021-6-23 14:47
0
雪    币: 68
活跃值: (1662)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
大佬牛逼
2022-8-13 14:03
0
雪    币: 207
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
确实解决了好些痛点....
2022-8-26 10:13
0
游客
登录 | 注册 方可回帖
返回
//