Frida 内存读写 是利用 Frida 这个动态插桩工具,在运行时对目标进程的内存进行 读取和修改 的操作。它允许你像“上帝模式”一样查看或篡改程序内部的数据和代码,常用于逆向分析、调试、游戏破解、安全测试等场景。
.读写数据
流程图
[开始]
↓
[alloc addr_int] → [writeInt(1234)]
↓
[alloc addr_double] → [writeDouble(1234.5678)]
↓
[alloc addr_str] → [readUtf8String] → [writeUtf8String(“ni hao”)] → [read again]
↓
[打印各变量值]
↓
[结束]
代码
var addr_int=Memory.alloc(8)
addr_int.writeInt(1234)
var addr_double=Memory.alloc(8)
addr_double.writeDouble(1234.5678)
console.log("addr",hexdump(addr_str))
console.log("addr utf8 content",addr_str.readUtf8String())
addr_str.writeUtf8String("ni hao")
console.log("addr",hexdump(addr_str))
console.log("addr utf8 content",addr_str.readUtf8String())
console.log("------")
console.log("addr_int",hexdump( addr_int))
console.log("addr_int",addr_int.readInt())
addr_int.writeInt(432)
console.log("addr_int",hexdump( addr_int))
console.log("addr_int",addr_int.readInt())
console.log("------")
//这里存储方式不是以字节 是以另外的方式
console.log("addr_double",hexdump( addr_double))
console.log("addr_double",addr_double.readDouble())
console.log("------")
.读写代码
流程图
[开始]
↓
[计算代码地址]
↓
[查看原始指令(hexdump + parse)]
↓
[修改内存权限为 rwx]
↓
[写入新机器码(如替换指令)]
↓
[验证修改结果]
↓
[结束]
代码
//读写指令
//ARM指令转换网址https://armconverter.com/
var addr_code=target_so.add(0x1684)
console.log('addr_code',hexdump(addr_code))
var code_str= Instruction.parse(addr_code).toString()
console.log('code_str',code_str)
Memory.protect(ptr(addr_code),4,"rwx");
////手动写代码 将add w0,w8,w9 修改为sub w0,w8,w9
//注意后面的代码
// addr_code.writeByteArray(hexToBytes("0001094B"))
// console.log('addr_code',hexdump(addr_code))
// var code_str= Instruction.parse(addr_code).toString()
// console.log('code_str',code_str)
2497

被折叠的 条评论
为什么被折叠?



