Frida 安卓逆向破解辅助Hook
用到的工具
- Frida
- 夜神模拟器或者手机
- Python3.7.2
- Window系统
安装python
Python3.7.2 下载地址
win+R 输入cmd,在控制台中输入python,看到如下信息说明安装成功
安装Frida
在命令行中输入
pip install frida
pip install frida-tools
安装完成后再命令行中输入
frida --version
安装成功
安装模拟器 或者使用手机(这里使用模拟器)
夜神模拟器下载地址
下载安装frida-server 并安装到模拟器或者手机上
需要使用和frida同一个版本 这里使用14.2.13
frida-server下载地址
有四个Android的版本:查看模拟器或者手机下载对应版本
使用夜神模拟器演示查看方法: 使用ADB 查看
打开命令行 输入夜神模拟器安装目录下的nox_adb.exe路径 shell getprop ro.product.cpu.abi
这里模拟器使用的是x86 选择上面下载地址中的frida-server-14.2.13-android-x86 版本
下载完成
改名为 frida-server
将这个文件复制到手机里 目录为 /data/local/tmp/
// 连接adb
adb connect 127.0.0.1 62001
命令行输入 adb push D:\frida-server /data/local/tmp/
在模拟器或者手机中文件夹可以看到
安装成功后在手机上启动服务
打开命令行 链接adb设置转发端口
$ D:\SoftWare\Nox\bin\nox_adb.exe forward tcp:27042 tcp:27042
shell连接手机
$ D:\SoftWare\Nox\bin\nox_adb.exe shell
输入su 切换到root用户
$ su
切换目录
$ cd /data/local/tmp
输入chmod 获取权限
$chmod 777 frida-server
启动 frida-server
$ ./frida-server
测试是否启动成功
- 打开一个新的命令行 当前这个不要关掉
- 输入frida-ps -R 获取启动frida-server的手机上正在运行的应用
显示这个说明安装成功
创建一个用来被自己破解的安卓应用
AndroidStudio3.5下载地址
配置好AndroidStudio环境 (包括AndroidSDK ,JDK,Gradle等 )
打开AndroidStudio创建安卓空项目
在布局文件上添加安卓界面
在MainActivity 中添加代码控制App逻辑
打包出APK到模拟器上安装
点击设置文字按钮之后中间的文字变成按钮点击了~ 说明apk成功运行
接下来用frida hook把一步一步这个按钮功能改了
需要一些python代码以及javascript代码
先编写python代码尝试执行frida 的功能
import frida
# 获取模拟器或者手机上已连接的设备
device = frida.get_remote_device()
print(device)
打开命令行执行python脚本
打印出Device的信息说明成功与手机系统通信
接下来完善脚本
import frida# 获取模拟器或者手机上已连接的设备
device = frida.get_remote_device()
# print(device)# 获取device上的所有app
applications = device.enumerate_applications()for application in applications:print(application)
打印出手机上已安装的app则成功
从打印出的列表中找到刚才装的应用包名为com.example.hookapp
接下来附加到应用
import frida# 获取模拟器或者手机上已连接的设备
device = frida.get_remote_device()
# print(device)# 获取device上的所有app
# applications = device.enumerate_applications()# for application in applications:
# print(application)# 附加到应用
session = device.attach("com.example.hookapp")jsScript = """console.log('this is javascript code')
"""
# 加载Javascript代码
script = session.create_script(jsScript)# 执行
script.load()
执行后打印出 this is javascript code 成功
因为大量的hook操作需要在javascript中执行
所以将javascript代码独立出来
创建文件hook.js ,找到需要hook的函数
写下代码
// 程序入口
Java.perform(function()
{// 获取类var clazz = Java.use("com.example.hookapp.MainActivity");// 获取类中所有函数var methods = clazz.class.getDeclaredMethods();console.log("have method count:"+methods.length);if(methods.length > 0){//遍历函数名methods.forEach(function(method){console.log(method);});}});
修改python执行脚本 hook.py
import frida# 获取模拟器或者手机上已连接的设备
device = frida.get_remote_device()
# print(device)# 获取device上的所有app
# applications = device.enumerate_applications()# for application in applications:
# print(application)# 附加到应用
session = device.attach("com.example.hookapp")# jsScript = """
# console.log('this is javascript code')
# """file = open("hook.js",mode='r',encoding='UTF-8')
scr = file.read()# 加载Javascript代码
script = session.create_script(scr)# 执行
script.load()
在命令行 将目录切换到python脚本目录之后执行
$ cd D:\Developer\Hook\script
$ D:
$ hook.py
在命令行中显示两个函数
接下来 hook ShowWord这个按钮监听的函数
匿名函数参数需要和原函数一样
Java.use(类名).方法名.implementation = function(a)
{return 调用一次方法()
}
修改hook.js
// 程序入口
Java.perform(function()
{// 获取类var clazz = Java.use("com.example.hookapp.MainActivity");// 获取类中所有函数// var methods = clazz.class.getDeclaredMethods();// console.log("have method count:"+methods.length);// if(methods.length > 0){// //遍历函数名// methods.forEach(function(method){// console.log(method);// });// }clazz.ShowWord.implementation = function(a){console.log("Hook success")return this.ShowWord("this is my hook method");}
});
修改hook.py 加上等待系统输入让程序暂停等待hook
import sys
sys.stdin.read()
import frida
import sys
# 获取模拟器或者手机上已连接的设备
device = frida.get_remote_device()
# print(device)# 获取device上的所有app
# applications = device.enumerate_applications()# for application in applications:
# print(application)# 附加到应用
session = device.attach("com.example.hookapp")# jsScript = """
# console.log('this is javascript code')
# """file = open("hook.js",mode='r',encoding='UTF-8')
scr = file.read()# 加载Javascript代码
script = session.create_script(scr)# 执行
script.load()
sys.stdin.read()
执行hook.py
成功hook 按钮 并修改
Frida 安卓逆向破解辅助Hook相关推荐
- Frida 安卓逆向破解Unity游戏IL2CPP
准备一个要被破解的APP 这个游戏的功能是点击刷新 后生命值增加到8 魔法值增加到10 接下来用hook技术把这两个值改成9999 将安装包后缀.apk 改为.zip 解压 打开lib 文件夹 如果l ...
- 学 Frida 安卓逆向之快速搭建 Frida 安卓逆向环境
学 Frida 安卓逆向 快速搭建 Frida 安卓逆向环境 这段时间空闲的时间一直在跟着肉丝姐补课,手残把手机搞崩了,借着这个机会写一篇文章记录下如何从零完成 Frida 安卓逆向环境的搭建. 按照 ...
- 1.Nexus 5x 刷机Android8.1 root-《frida安卓逆向协议爬虫》
<frida安卓逆向协议爬虫>系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 目录 前言 如今 ...
- 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )
From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...
- c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法
0x00 frida简介 frida是近几年才推出的一款全平台的逆向神器.功能上主要采用动态hook的方式,加入log,修改逻辑等.可以对java,native等hook. 具体使用情况,谁用谁知道. ...
- 5、frida进阶-Android逆向之旅---Hook神器家族的Frida工具使用详解
本文转载自:https://www.cnblogs.com/qwangxiao/p/9255328.html 一.前言 在逆向过程中有一个Hook神器是必不可少的工具,之前已经介绍了Xposed和Su ...
- 安卓APP破解利器之FRIDA
本文讲的是安卓APP破解利器之FRIDA,在我去年参加RadareCon大会的时候,我了解到了一个动态的二进制插桩框架--Frida.起初我觉得它似乎只有一丁点趣味,后来经过实践才发现它原来是如此的有 ...
- apk逆向思路_安卓逆向和手游辅助学习路线
一.安卓逆向基础(建议1周) 1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向.在环境安装的工程中会遇到很多细节上的问题. 2. 第二步就是要了解 ...
- 安卓逆向Xposed HOOK TB直播APP的x-sign参数
最近学习安卓逆向,接触一下TB系的APP,了解大厂APP是做数据安全的,这篇文章主要介绍某宝直播APP的签名参数x-sign的HOOK过程,当然,其他的参数也是可以HOOK的.本文只用于学习交流,请勿 ...
最新文章
- spring学习之@ModelAttribute运用详解
- vue 点击渲染ajax,vue中在页面加载时发送ajax请求获取数据渲染不到页面上
- 浅谈一致性Hash原理及应用
- unity中链接字符串和变量显示_理解Unity中的优化(六):字符串和文本
- java html转图片_Python一键转Java?“Google翻译”你别闹
- python三种数据类型_Python-更改Pandas中列的数据类型
- 数据库中主键与索引的区别
- 喵哈哈村的魔法考试 Round #14 (Div.2) 题解
- exe反编译为python语言_如何反编译Python写的exe到py
- Dynamic resolution 动态分辨率 相机系列6
- 模拟斗地主洗牌发牌,并对已发好的拍进行排序(红桃A,方块A, 黑桃2.......)
- linux parallel指令参数,GNU Parallel的具体使用
- 电脑钢琴模拟器(初学WINDOW库)
- 将List集合用字符串,逗号隔开进行拼接
- 【web漏洞】弱口令
- HP PSC 系列一体机性能比较列表
- Vue 移动端 hash模式下微信授权登录
- Pandas武功修炼秘籍(第一章:初见端倪)
- Laravel Sail 使用 PhpStorm 与 Xdebug 进行调试
- 极狐GitLab CI 月来袭!2小时 get CI 流水线设计秘籍
热门文章
- cad文字递增快捷键_这些CAD快捷键,实在太好用啦,瞬间提升10倍效率!
- 雨课堂卷子提前看_雨课堂怎么新建试卷?制作试题的具体方法
- vs code里打开 终端,下面一片空白 无法输入命令【最新版已解决】
- [软件工程程序修复论文阅读]基于代码感知机器翻译的程序修复
- 看完沐神的装机清单,我酸了。。
- 基于JAVA剧院售票系统计算机毕业设计源码+数据库+lw文档+系统+部署
- 安心做一只会飞的笨鸟
- Linux背景知识(1)RedHat和Centos
- [计算机-好软推荐]证件照制作的利器,不会PS也没有关系
- Chrome浏览器无法加载已解压的.crx文件的解决办法