网站换模板要怎么做,网站建设需要注意哪些细节,建设学校网站的意义,公司为什么要网站备案系列文章目录
第一章 frida操作 文章目录 系列文章目录前言一、两种模式二、frida命令行执行及参数三、frida使用python执行四、动静态域调用1. 静态域调用2.动态域调用 五. 远程rpc调用六. 补充总结 前言
熟悉frida操作#xff0c;hook手机app的关键位置进行逆向操作
一、…系列文章目录
第一章 frida操作 文章目录 系列文章目录前言一、两种模式二、frida命令行执行及参数三、frida使用python执行四、动静态域调用1. 静态域调用2.动态域调用 五. 远程rpc调用六. 补充总结 前言
熟悉frida操作hook手机app的关键位置进行逆向操作
一、两种模式
attach应用运行过程中hook, 有壳也可以spawn创建进程时就hook(类还没有加载), 有壳话就不行
二、frida命令行执行及参数
frida -UF -l agent/HelloWorld.js
-U usb模式
-F 最前台的应用
-l 加载脚本
-o 输出到文件
-f spawn模式
--no-pause 进程启动之后立即执行不用暂停 三、frida使用python执行
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()四、动静态域调用
1. 静态域调用
指的是在代码中直接引用类的字段不需要创建类的实例。
// 打印设备指纹信息, 修改指纹信息
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));})
}2.动态域调用
使用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!)}})})
}五. 远程rpc调用
https://www.freebuf.com/articles/system/190565.htmljavascript代码
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符号导出名不可以有大写字母或者下划线
};py代码
import time
import fridadef my_message_handler(message, payload):print messageprint payloaddef 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 进行注入
总结
frida学习资料