安卓的逆向题目在ctf中已经比较常见了。自从上次网鼎杯用了frida框架做过bang之后,感觉这个框架功能很是强大,因此打算学习一下这个框架,并记录一下学习过程以免以后忘了
frida安装
pip install frida
pip install frida-tools
我是在Windows系统上安装的,用的是python3,因为python2会报错
pyhton2安装失败结果:
frida-server启动流程
首先需要去下载一个frida-server,网址:server下载地址
因为我用的是雷电模拟器调试,因此下载的是x86的(模拟器好像一般都是x86)
adb shell连接上去
使用adb push 把frida-server文件放到/data/local/tmp目录下
chmod 755,赋予执行权限,然后启动server:
最后还需要设置一下转发:
adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042
frida-server交互
在完成上面的操作之后,我们就可以通过python脚本与frida-server进行交互了
比如在之前的bang中,我们直接运行exp脱壳
接下来我们以一道seccon的题目讲解一下如何写交互脚本
该题目flag生成逻辑如下:
calc()是在so文件中,当然我们可以直接去逆向so文件,思路就和逆向c语言写的程序差不多,不过这里我们主要讲一下frida的使用,这个方法就不多讲了
如果我们能直接调用calc()函数,不就不需要去逆向它了吗?
下面是官网提供的exp:
import frida, sys
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".for