最近简单学习了一下Frida,确实是一个神器。
用一个安卓apk的题目来简单学习一个frida的使用。
先看一下apk,文末会给出apk的下载链接
随便输入字符,会提示
反编译一下这个apk,我使用的jadx
我们通过搜索 错误,来定位到逻辑代码
最重要的函数是MainActivity.this.ccc.cc他接受了两个参数,一个是我们输入的文本,一个是内部生成的 ,至于怎么生成的我们不用关心,Frida了面前无秘密。
接下来安装一下frida
使用pip安装
pip3 install frida
pip3 install frida-tools
安装完成以后验证
然后下载frida的服务端
https://github.com/frida/frida/releases
在adb里面执行getprop ro.product.cpu.abi,然后根据cpu的指令集下载服务端文件
我是mumu的模拟器,我下载的是
frida-server-14.1.3-android-x86.xz
然后把文件复制到安卓模拟器的/data/local/tmp/ 目录,chmod u+x frida添加执行权限
启动服务端
测试,如果能正确显示安卓的进程,就是已经安装好了
HOOK脚本
import frida
import sys
jscode = '''
Java.perform(function () {
//这里是要Hook的软件具体位置的 包名 + 类名
var Testsig = Java.use('com.example.easyapk.c');
//这里写要Hook的方法名 以及参数
Testsig.cc.implementation=function(str,str2){
//直接返回为true
console.log(str);
console.log(str2);
return true;
};
});
'''
def on_message(message, data):
print(message)
process = frida.get_usb_device().attach('com.example.easyapk') # 要Hook的软件包名
script = process.create_script(jscode)
script.on('message', on_message)
print('Hook成功')
script.load()
sys.stdin.read()模拟器里面启动要hook的软件,然后再启动python
随便输入,验证码即可验证成功
并且在console打印出函数的参数,成功~
本文始发于微信公众号(漏洞推送):Frida初体验-安卓CTF逆向
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论