本文主要记录了Frida的一些模板和配置及一些场景目录和问题记录 前提是已经安装了Frida,查看其他文章
启动和配置
adb root
adb shell
cd /data/local/tmp
# 修改 文件 权限
chmod 755 frida-server
# 运行文件
./frida-server
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
frida-ps -U
Frida的一些模板和配置
python模板
import frida
import sys
# 定义消息回调函数,接收 Frida 脚本发送的消息
def on_message(message, data):
if message["type"] == "send":
print(message["payload"])
else:
print(message)
# 使用包名来附加目标应用并执行 JS 代码
def hook_target_application(app_name, js_file):
# JavaScript 脚本内容
with open(js_file, encoding="utf-8") as fin:
script_source = fin.read()
# 获取 USB 设备并通过包名附加到目标应用
# 也可以使用进程id
device = frida.get_usb_device()
# pid = device.spawn(package_name)
# print(pid)
process = device.attach(app_name)
# 创建并加载脚本
script = process.create_script(script_source)
script.on("message", on_message)
script.load()
# 等待用户输入停止信号
sys.stdin.read()
# 卸载脚本并分离进程
script.unload()
process.detach()
# 主函数
if __name__ == "__main__":
# 设置目标应用的包名
app_name = "My Application"
js_file = "scripts/js_file.js"
# 调用函数进行 hook
hook_target_application(app_name, js_file)
js模板
Java.perform(function () {
// 获取 JNI 类
var Activity = Java.use('com.example.myapplication.MainActivity');
// 重写 getResult 方法
Activity.check.implementation = function (str) {
console.log('getResult called with:', str);
// 调用原始方法
var result = this.check(str);
console.log('getResult returned:', result);
// 返回原始结果
result = "right";
return result;
};
});
利用脚本
有这样一个场景 打开闪退 所以需要frida进行自启动app
adb shell pm list packages|findstr che
frida -U -f com.chehejia.oc.m01 -l hook.js
Q
process = device.attach(app_name) 如果使用包名的话,会报错,需要使用进程id或者应用名称
Github也有这个issue?
