Frida使⽤⽅法
下⾯内容均已Android为主,
框架
普通
import frida
import sys
def on_message(message, data):
print(message)
dev = _remote_device()
# 需要hook的应⽤包名
session = dev.attach('keep.keep')
# hook代码的核⼼部分
jscode ="""
Java.perform(function () {
// hook的类
var b0 = Java.use('l.p.b0');
// hook的⽅法
b0.a.overload("java.lang.String").implementation = function(){
// 获取⽅法⼊参
var args = arguments[0];
// 打印log
send("字符串转MD5 b0.a args:"+args);
/
/ 根据需要返回结果,这⾥使⽤this调⽤原⽅法
return this.a(args);
}
});
"""
script = ate_script(jscode)
<('message', on_message)
script.load()
ad()
在python⽂件中写⼊上⾯⽂件,执⾏该⽂件即可。
运⾏时如果报错,建议检查下⼿机端frida-server是否运⾏,是否进⾏了端⼝映射,详见
⼈性化
对于上⾯的⽅法,hook代码部分需要是字符串的形式,对于我这种习惯了⽤ide提⽰的⼈,简直太不友好了,⼤⼤降低了ide的作⽤。不过不要慌,了解⼀下?
这是⼀个能让你使⽤TypeScript语法编写hook代码的脚⼿架,⼯程结构并不复杂,clone到本地之后,先使⽤npm命令安装下依赖
npm install
会有⼀个如下的⼯程⽬录结构
其中index.ts⽂件便是编写hook代码的地⽅
如果想⾃定义⽂件名称或者路径,可以在package.json中修改⽬录指向
然后执⾏如下命令就可以进⾏hook了
# 将ts代码转换为js
npm run build
# 将代码注⼊
frida -U -f android应⽤包名 --no-pause -l _agent.js
为了⽅便起见可以在终端执⾏如下命令,检查代码有变更后⾃动build并注⼊npm run watch
常⽤⽅法
⽅法hook
Java.perform(function(){
// hook的类
var b0 = Java.use('l.p.b0');
js arguments// hook的⽅法,如果有重载⽅法也通过overload中的参数区分
b0.a.overload("java.lang.String").implementation=function(){
// 获取⽅法⼊参
var args = arguments[0];
// 打印log
send("b0.a args:"+args);
/
/ 根据需要返回结果,这⾥使⽤this调⽤原⽅法
return this.a(args);
}
});
构造⽅法hook
变量hook
静态变量hook
Java.perform(function(){
var CrypLib = Java.use('keep.keepmon.utils.CrypLib');
CrypLib.a.overload("java.lang.String").implementation=function(){ var arg = arguments[0];
send("静态变量a:"+CrypLib.a.value);
return this.a(arg);
}
});
native⽅法hook
持续更新中

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。