赞
踩
第一章 frida操作
熟悉frida操作,hook手机app的关键位置进行逆向操作
frida -UF -l agent/HelloWorld.js
-U usb模式
-F 最前台的应用
-l 加载脚本
-o 输出到文件
-f spawn模式
--no-pause 进程启动之后立即执行,不用暂停
import time import frida # 连接安卓机上的frida-server device = frida.get_usb_device() # USb连接 # device =frida.get_device_manager().add_remote_device('192.168.199.199:5555') # ip连接 # 获取前台运行的应用 print(device.get_frontmost_application()) pid = device.get_frontmost_application().pid # attach模式 session = device.attach(pid) # 加载s1.js脚本 with open("agent/20220531.js") as f: script = session.create_script(f.read()) script.load() # 脚本会持续运行等待输入 input()
指的是在代码中直接引用类的字段,不需要创建类的实例。
// 打印设备指纹信息, 修改指纹信息
function FingerPrint(){
Java.perform(function(){
var BUILD = Java.use("android.os.Build");
BUILD.DEVICE.value = "sailfish";
console.log("Device is =>", BUILD.DEVICE.value);
console.log("ID is =>", BUILD.ID.value);
console.log("MODEL is =>", BUILD.MODEL.value);
console.log("SERIAL is =>", BUILD.SERIAL.value);
// console.log("SERIAL is =>", BUILD.getSerial());
console.log("sdk is =>", BUILD.getString("ro.build.version.sdk"));
})
}
使用Frida的JavaScript API,在运行时通过类的实例引用字段。这意味着可以修改字段的值,甚至访问私有字段。
function InstanceDemo(){
Java.perform(function(){
Java.choose("com.example.junior.CalculatorActivity", {
onMatch:function(instance){
console.log("found instance =>", instance);
console.log("instance showText is =>", instance.showText.value);
console.log("found instance =>", instance.clear("456"));
},onComplete:function(){
console.log("Search Complete!")
}
})
})
}
function callSecretFun() { //定义导出函数
Java.perform(function () { //找到隐藏函数并且调用
Java.choose("com.roysue.demo02.MainActivity", {
onMatch: function (instance) {
console.log("Found instance: " + instance);
console.log("Result of secret func: " + instance.secret());
},
onComplete: function () { }
});
});
}
rpc.exports = {
callsecretfunction: callSecretFun //把callSecretFun函数导出为callsecretfunction符号,导出名不可以有大写字母或者下划线
};
import time import frida def my_message_handler(message, payload): print message print payload def read_rpc_code(): with open("s3.js") as f: script = session.create_script(f.read()) script.on("message", my_message_handler) script.load() return script # 连接 device = frida.get_usb_device() pid = device.spawn(["com.roysue.demo02"]) device.resume(pid) time.sleep(1) session = device.attach(pid) # rpc调用 script = read_rpc_code() script.exports.callsecretfunction()
frida-ps -Uai : 列出当前手机的进程,可以看到进程id
然后可以通过
objection -g 进程id explore 进行注入
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。