用到的工具

  1. Frida
  2. 夜神模拟器或者手机
  3. Python3.7.2
  4. 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

测试是否启动成功

  1. 打开一个新的命令行 当前这个不要关掉
  2. 输入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相关推荐

  1. Frida 安卓逆向破解Unity游戏IL2CPP

    准备一个要被破解的APP 这个游戏的功能是点击刷新 后生命值增加到8 魔法值增加到10 接下来用hook技术把这两个值改成9999 将安装包后缀.apk 改为.zip 解压 打开lib 文件夹 如果l ...

  2. 学 Frida 安卓逆向之快速搭建 Frida 安卓逆向环境

    学 Frida 安卓逆向 快速搭建 Frida 安卓逆向环境 这段时间空闲的时间一直在跟着肉丝姐补课,手残把手机搞崩了,借着这个机会写一篇文章记录下如何从零完成 Frida 安卓逆向环境的搭建. 按照 ...

  3. 1.Nexus 5x 刷机Android8.1 root-《frida安卓逆向协议爬虫》

    <frida安卓逆向协议爬虫>系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 目录 前言 如今 ...

  4. 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

    From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...

  5. c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法

    0x00 frida简介 frida是近几年才推出的一款全平台的逆向神器.功能上主要采用动态hook的方式,加入log,修改逻辑等.可以对java,native等hook. 具体使用情况,谁用谁知道. ...

  6. 5、frida进阶-Android逆向之旅---Hook神器家族的Frida工具使用详解

    本文转载自:https://www.cnblogs.com/qwangxiao/p/9255328.html 一.前言 在逆向过程中有一个Hook神器是必不可少的工具,之前已经介绍了Xposed和Su ...

  7. 安卓APP破解利器之FRIDA

    本文讲的是安卓APP破解利器之FRIDA,在我去年参加RadareCon大会的时候,我了解到了一个动态的二进制插桩框架--Frida.起初我觉得它似乎只有一丁点趣味,后来经过实践才发现它原来是如此的有 ...

  8. apk逆向思路_安卓逆向和手游辅助学习路线

    一.安卓逆向基础(建议1周) 1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向.在环境安装的工程中会遇到很多细节上的问题. 2. 第二步就是要了解 ...

  9. 安卓逆向Xposed HOOK TB直播APP的x-sign参数

    最近学习安卓逆向,接触一下TB系的APP,了解大厂APP是做数据安全的,这篇文章主要介绍某宝直播APP的签名参数x-sign的HOOK过程,当然,其他的参数也是可以HOOK的.本文只用于学习交流,请勿 ...

最新文章

  1. spring学习之@ModelAttribute运用详解
  2. vue 点击渲染ajax,vue中在页面加载时发送ajax请求获取数据渲染不到页面上
  3. 浅谈一致性Hash原理及应用
  4. unity中链接字符串和变量显示_理解Unity中的优化(六):字符串和文本
  5. java html转图片_Python一键转Java?“Google翻译”你别闹
  6. python三种数据类型_Python-更改Pandas中列的数据类型
  7. 数据库中主键与索引的区别
  8. 喵哈哈村的魔法考试 Round #14 (Div.2) 题解
  9. exe反编译为python语言_如何反编译Python写的exe到py
  10. Dynamic resolution 动态分辨率 相机系列6
  11. 模拟斗地主洗牌发牌,并对已发好的拍进行排序(红桃A,方块A, 黑桃2.......)
  12. linux parallel指令参数,GNU Parallel的具体使用
  13. 电脑钢琴模拟器(初学WINDOW库)
  14. 将List集合用字符串,逗号隔开进行拼接
  15. 【web漏洞】弱口令
  16. HP PSC 系列一体机性能比较列表
  17. Vue 移动端 hash模式下微信授权登录
  18. Pandas武功修炼秘籍(第一章:初见端倪)
  19. Laravel Sail 使用 PhpStorm 与 Xdebug 进行调试
  20. 极狐GitLab CI 月来袭!2小时 get CI 流水线设计秘籍

热门文章

  1. cad文字递增快捷键_这些CAD快捷键,实在太好用啦,瞬间提升10倍效率!
  2. 雨课堂卷子提前看_雨课堂怎么新建试卷?制作试题的具体方法
  3. vs code里打开 终端,下面一片空白 无法输入命令【最新版已解决】
  4. [软件工程程序修复论文阅读]基于代码感知机器翻译的程序修复
  5. 看完沐神的装机清单,我酸了。。
  6. 基于JAVA剧院售票系统计算机毕业设计源码+数据库+lw文档+系统+部署
  7. 安心做一只会飞的笨鸟
  8. Linux背景知识(1)RedHat和Centos
  9. [计算机-好软推荐]证件照制作的利器,不会PS也没有关系
  10. Chrome浏览器无法加载已解压的.crx文件的解决办法