记得曾经分析第一个样本的时候,我第一天分析的东西,都截图记录下来,第二天晚上回去继续分析的时候,我要花大概15-20分钟去复现昨天的现场,如果不小心错过了重要的函数,就得重头再来,后面前前后后浪费了很多时间才搞出来,最后分享会演示的时候,直接被老大鞭策了。所以才开始了解并编写ida脚本,不过由于网上能看的资料实在是比较少,踩了不少坑,到今天为止终于可以愉快,并且顺畅的写脚本了。所以把流程分享给大家,希望能帮助像我一样的人提高分析效率。
我使用的IDA是泄露版本的7.0然后python版本是2.7
这样好处显而易见,直接把代理文件丢进插件目录,然后引入我们插件的module就好了,这样就不会直接操作ida的插件目录,不容易出问题。我这边真正写插件的目录就是roytool
我这边目录/Applications/ida.app/Contents/MacOS/plugins
下面我们就可以在我们之前append的module(roytool)下编写脚本了。
打开ida直接验证效果,如果上面的代码没有问题,Edit-Plugins
我们会看到上面图中的样子,点击我们的插件(或者用快捷键)就会运行init、run函数中的代码了。到此为止,我们插件的基本流程就算完事了。下面继续介绍
在不使用idaapi.require(module)的情况下,每次更新插件代码,ida都要大退重启,才能生效,这时候就需要idaapi.require
ex:
注意:既然用了idaapi.require 就不要使用import功能了,不然代码依然不会实时更新
这里举个例子,比如我们要快速定位到init_array函数
通过上面的代码就可以直接定位到init_array了,真滴是又简单,又方便。我在这里可能至少能剩下1-2分钟的时间/每次调试,而且这里只是举例init_array, 我们也可以这样去调试我们要调试的函数
我们分析的过程中,会在汇编指令做个中记录日志,比如某个寄存器的值了,或者某个函数是做什么的,再或者,我们会直接更改函数的名字,方便每次查看。这时候,为了效率,或者说能快速的复现上次调试的现场,我们就可以用这个功能,代码也非常简单。
这个我在上一个脱壳流程中写到了,感兴趣的小伙伴可以去看一下。
篇幅问题,就简单的举几个常用的,就是想体现很简单的代码,就能节省我们大量的分析时间,我们可以找到自己效率低的地方,然后用idc接口去提高分析效率
先看效果
最后保存为.ui文件,再使用pyuic5 -o xxx.py xxx.ui,就能直接输出.py文件了,我们保存到项目中就可以直接用(具体配置可以自行google)
方便又简单
OK,到这里就完成了,我相信我里面提到的问题,肯定还有更好的解决方案,不一定要写脚本,但是由于自己经验少,可能只能通过脚本来完成,我分享这个是希望告诉像之前的我一样的小伙伴,工欲善其事,必先利其器!最后谢谢大家的观看!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课