frida 入门及几种 hook 思路

admin 2022年6月29日02:51:55评论438 views字数 2492阅读8分18秒阅读模式

前言

frida Xposed简单对比

那时学hook导入的X将X放在现役和安卓服务器平台上,X摆在了脑袋里看,在云里云里很容易用教程和师傅反着来,然后用frida的文章和师傅反着来,然后用frida的文章中的(实战链接文章,不来发了),而且之前花生师傅也发过了。

而是更多比较大的,说出来,Xposed走是那种直接的工作方式,直接写出来,用,可以说是再重新写一份工作, 它的方式是把代码带到的简单但也很明显的方式就是很好地处理实际应用程序的使用

环境生态

本机实验环境

python3.7夜神模拟器Android5.1.1Windows10

frida 安装

pip install fridapip install frida-tools

frida-server 安装运行

看看自己的平台,首先是x86的

λ adb shell getprop ro.product.cpu.abix86

我这个x86的,到frida-releases进行这个找到版本下载,把它用推到手机中,然后转向到本机端口adb,frida-server

adb push frida-server /data/local/tmpadb forward tcp:27042 tcp:27042adb shell /data/local/tmp/frida-server

已经起来了,可以用查看frida-ps -U进程

frida 入门及几种 hook 思路

hook实战测试

实战链接在最早上

拿师傅的程序写组件的方式写了

解锁码

先装到手机上测试,发现进去后要一个钥匙进行解锁。

frida 入门及几种 hook 思路

使用(我用的jadx)打开apk测试,第一个是要一个小程序反编译到工具下,发现有两个处码与出来的挑战完全一致。

frida 入门及几种 hook 思路

进入加密函数一探究竟,就可以看到进行了加密。

frida 入门及几种 hook 思路

程序使用后是否有使用权限的鉴定程序(在此之前有权限解锁和解锁我们未执行的函数,但条件不执行)。

frida 入门及几种 hook 思路


了解后进行打钩打印的方式,一种是把等量的电话号码打印出来(这种思路等流程用下挂机方式,是挂机打印方式和系统下挂方式),偷鸡的方式就是直接直接加密函数返回一个我们修改控制的值,然后在输入的时候输给我们的值就好了。

插入js代码的时候有一种方式,分别是js直接加载和使用的方式,python在最下边把js代码的把代码放在python里面,python在最下边的角色代码,本篇用是python的方式。

console.log("Script loaded successfully ");Java.perform(function x() {
var String = Java.use('java.lang.String')//定位到要hook的类名
String.equals.implementation = function (arg1) {//equals就是我们要hook的函数
console.log("your input : " + this.toString());
console.log("I'm the real key : " + arg1);//打印出来真实的解锁码
var ret = this.equals(arg1);
return ret;//返回值
}
var Show_key = Java.use("com.hfdcxy.android.by.a.a");
Show_key.a.overload("java.lang.String").implementation = function (args1) {
console.log("Your_key_is" + args1);//打印解锁码
}
var my_class = Java.use("com.hfdcxy.android.by.test.a");
my_class.a.implementation = function () {
return "123456789";//使用"123456789"当返回值
}});

挂钩方法完成一个钩子,使用python注入一下看看效果


frida 入门及几种 hook 思路
看到了输入的123和真正的比较 成功了,进入下一个。
frida 入门及几种 hook 思路

点金币,开宝箱

点金币的这个执行的函数后加简单的i(原本的程序很简单,就是点击一下,点击一次)

frida 入门及几种 hook 思路

开宝箱按钮鉴定就是你的硬币大小,比9999就完成挑战

frida 入门及几种 hook 思路

这里再介绍另一种姿势,就是修改函数的参数完成参数调用,frida实现起来也很简单,见js:

console.log("Script loaded successfully ");
Java.perform(function x() {
var coin = Java.use("com.hfdcxy.android.by.test.b");
coin.a.overload("android.content.SharedPreferences", "android.widget.TextView", "int").implementation = function (args1,args2,args3) {//overload后接的参数都是这个a函数的参数
return this.a(args1,args2,9999)//把参数改成9999,这样一次就能加9999个了
}
});

frida 入门及几种 hook 思路

点了满足,硬币就很大了,直接条件


frida 入门及几种 hook 思路

总结 & python loader

可以看到frida在hook时真的方便,代码也不难,本篇js太过简单,有好多很nb的模板都可以拿来练练并测试,官方文档也是深入学习的好去处

import time
import frida
device = frida.get_remote_device()
pid = device.spawn(["com.ss.android.ugc.aweme"])#程序名
device.resume(pid)
time.sleep(1)
session = device.attach(pid)
with open("s1.js") as f:
script = session.create_script(f.read())
script.load()

input()




来源先知(https://xz.aliyun.com/t/8211#toc-0)


注:如有绘画请联系删除





frida 入门及几种 hook 思路

欢迎大家一起加群讨论学习和交流

frida 入门及几种 hook 思路

快乐要懂得分享,

加倍的快乐。


原文始发于微信公众号(衡阳信安):frida 入门及几种 hook 思路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月29日02:51:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   frida 入门及几种 hook 思路https://cn-sec.com/archives/1139416.html

发表评论

匿名网友 填写信息