

Android 安全研究 hook 神器frida学习(一)
source link: http://www.cnblogs.com/hatkids/p/14197657.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在进行安卓安全研究时,hook技术是不可或缺的,常用的有Xposed:Java层的HOOK框架,由于要修改Zgote进程,需要Root,体验过Xposed,整个过程还是很繁琐的,并且无法hook,native层的。作为一名安卓菜鸟,Frida明显更方便,更适合我,结合现有的工具可以很容易的达到hook 的目的。
本篇文章为第一篇,初体验Frida。
学习的前提:安卓开发基础 ,推荐:https://www.runoob.com/w3cnote/android-tutorial-android-studio.html,(代码敲一遍),java基础,python基础,js基础。
关于Frida的安装,环境搭建:https://juejin.cn/post/6844904110706130952
简单体验Frida,破解一个app。
app很简单,需要输入密码才能进入主页面;破解思路,我们要找到检查验证码的函数,进行hook.
找到hook点的思路,静态分析代码,借助工具进行动态调试。
代码1位置处可以看到securityCheck()函数进行校验,如果返回值为true,验证成功。在3位置可以看到,函数实在native,要想知道函数内容需要查看so文件。
hook一个函数,是返回值为true,可以去hook函数的参数,提交正确的参数可返回true,或者hook函数的返回值,使函数的返回值永远为true也可以。
这里我们只从java层去hook,hook函数的返回值,使函数的返回值永远为true即可
开始写hook代码,我们只需要按照所给的代码框架,写入未入hook代码即可。
1 import frida 2 import sys 3 4 jscode = """ 5 //这个地方写js代码,也是主要的hook代码; 6 7 """ 8 9 def on_message(message, data): 10 if message['type'] == 'send': 11 print("[*] {0}".format(message['payload'])) 12 else: 13 print(message) 14 15 16 # 重点的4行代码 17 process = frida.get_usb_device().attach('com.yaotong.crackme')//更改为要的app包名,.attach可改为spawn。spawn:以包名启动进程并附加 ,attach:在app运行过程中去附加 18 script = process.create_script(jscode) 19 script.on('message', on_message) 20 script.load() 21 sys.stdin.read()
jscode 里要写的内容为
console.log("Hello"); function main() { console.log("Hello");//打印字符,证明hooK开始 Java.perform(function x() { var MainActivity = Java.use("com.yaotong.crackme.MainActivity"); //要想hook一个函数我们先要找到他的类,得到类以后可以就调用它里面的函数.Java.use(包名.类名)实现 //MainActivity即为我们hoook到的类,可以直接调用里面的函数,更改属性值等操作,具体写法如下(ps:该函数为普通方法,构造方法,重载方法写法都不同) MainActivity.securityCheck.implementation = function (str) { //调用函数,function里面的参数要与原函数对应。 return true; //更改返回值,frida会检测app进程,一旦该pp调用了MainActivity里面的securityCheck()函数,会自动更改返回值为true; }; }) } setImmediate(main);
运行脚本:
接着我们去输入验证码的地方输入任意值,调用该函数都会返回true
hook成功
以上是Frida的初体验,找到hook点,编写hook的js代码,启动frida,调用该函数,hook成功。整个过程十分方便。
Recommend
-
14
Frida-跨平台注入工具基础篇 瘦蛟舞 ·
-
43
这是 酒仙桥六号部队 的第 75 篇文章。 全文共计8297个字,...
-
39
a year ago学习记录26 minutes lesen (Über 3899 Worte)frida-gum代码阅读笔记0x00 : 前言与预备知识frida
-
9
Frida实战hook学习笔记 2019-09-05 12:38:53 code 约 961 字 预计阅读 2 分钟 1298 次阅...
-
13
[原创]实现frida版的JustTrustMe(一)JustTrustMe官方源码学习-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com ...
-
9
Objection太强了,告别敲代码的方式,快速动态trace,时间就是生命,用上就会戒不掉,且支持ios和android。官方文档: https://github.com/s...
-
8
hook神器FRIDA0x00 安装 使用python 一键安装 pip3 install fridapip3 install frida-tools 在安卓手机上安装frida-server 下载地址...
-
4
技术分享 | Frida 实现 Hook 功能的强大能力 更多技术文章Frida 通过 C 语言将 QuickJS 注入到...
-
11
frida-trace是一个用于动态跟踪函数调用的工具。支持android和ios。安装教程请参考官网。工欲善其事必先利其器。本文将以某App为示范,演示frida-trace的各种方法在iOS中的应用。 让看文章的你在使用frida-trace时更得心应手。 mac系统...
-
12
This article is about greybox fuzzing of userland targets that can be encountered in Android using AFL++ and its Frida mode. We also discuss how to target JNI functions, to test the native features invoked by Java code. Intro...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK