FridaHook(一)——Java层常见方法

1、frida安装运行

pc:pip install frida

模拟器:
adb connect 127.0.0.1:7555
adb shell
cat /proc/cpuinfo

下载对应版本frida-server,安装运行

adb push frida-server /data/local/tmp
adb shell
cd /data/local/tmp
chmod 777 frida-server
./frida-server

转发端口

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

输入frida-ps -U查看进程

FridaHook(一)——Java层常见方法_第1张图片

2、Hook普通方法

(1)初始运行效果

FridaHook(一)——Java层常见方法_第2张图片

FridaHook(一)——Java层常见方法_第3张图片

(2)反编译查看代码

FridaHook(一)——Java层常见方法_第4张图片
FridaHook(一)——Java层常见方法_第5张图片

(3)编写hook脚本

重新给参数a,b赋值,并将其相加的结果返回。

FridaHook(一)——Java层常见方法_第6张图片

(4)运行js结果
frida -U -l hookpuTong.js HookTestDemo

FridaHook(一)——Java层常见方法_第7张图片

3、Hook重载方法

(1)初始运行效果

FridaHook(一)——Java层常见方法_第8张图片
FridaHook(一)——Java层常见方法_第9张图片

(2)反编译查看代码

FridaHook(一)——Java层常见方法_第10张图片

FridaHook(一)——Java层常见方法_第11张图片

三种不同的参数,分别是无参数,int 型参数,以及一个构造参数。使用.overload()选择hook不同参数的重载方法。

(3)编写int类型参数hook脚本

修改参数a的值及返回字段信息

FridaHook(一)——Java层常见方法_第12张图片

运行结果:

frida -U -l hookChongZai.js HookTestDemo

FridaHook(一)——Java层常见方法_第13张图片

(4)编写构造参数hook脚本

Money类:

FridaHook(一)——Java层常见方法_第14张图片

hook脚本:

参数a为Money类,即overload(“com.xiaojianbang.app.Money”)

FridaHook(一)——Java层常见方法_第15张图片

运行:

FridaHook(一)——Java层常见方法_第16张图片

(5)编写无参数hook脚本

修改返回的字段信息

FridaHook(一)——Java层常见方法_第17张图片

运行结果如下:

FridaHook(一)——Java层常见方法_第18张图片

4、Hook构造方法

(1)初始运行效果

显示RMB:100
FridaHook(一)——Java层常见方法_第19张图片

(2)反编译查看代码

Money类的构造方法

FridaHook(一)——Java层常见方法_第20张图片

(3)编写hook脚本

构造方法要用 $init 修饰,而不是用要调用的方法名
FridaHook(一)——Java层常见方法_第21张图片

(4)运行js结果
frida -U -l hookGouZao.js HookTestDemo

显示信息为修改后的Dollar:20000

FridaHook(一)——Java层常见方法_第22张图片

你可能感兴趣的:(安全)