var env = Java.vm.getEnv(); var handlePointer = Memory.readPointer(env.handle); dmLogout("env handle: " + handlePointer); var GetStringUTFCharsPtr = Memory.readPointer(handlePointer.add(0x2A4)); dmLogout("GetStringUTFCharsPtr addr: " + GetStringUTFCharsPtr); Interceptor.attach(GetStringUTFChars...
var thiscode=ptr(details.context.pc).readU32() var opcode=((thiscode>>24)&0x3b) //三个pc偏移寻址共同位 if(opcode==24){ //将需要读取的数据存入mycode+0x128处 mycode.add(0x128).writePointer(ptr(mempoint.readPointer())) mycode.add(0x13...
readPointer(): 从当前内存地址上读取一个NativePointer对象. 如果当前地址不可读则抛出一个 JavaScript 异常. writePointer(ptr): 在当前内存地址上写入一个ptr对象. 如果当前地址不可写则抛出一个 JavaScript 异常. readS8(),readU8(), readS16(),readU16(), readS32(),readU32(), readShort(),readUShort(...
frida读写std::string function readStdString(str){ const isTiny = (str.readU8()&1) === 0; if (isTiny) return str.add(1).readUtf8String(); return str.add(2*Provess.pointerSize).readPointer().readUtf8String(); } function writeStdString(str, content){ const isTiny = (str.readU8...
console.log("message", msg.add(4).readPointer()); console.log("wParam", msg.add(8).readPointer()); console.log("lParam", msg.add(12).readPointer()); console.log("pt", msg.add(20).readPointer()); console.log("lPrivate", msg.add(24).readPointer()); ...
rawIdentifier = args[3].add(pointerSize).readPointer().readUtf8String(); } else { rawIdentifier = tryParseXpcServiceName(env); if (rawIdentifier === null) return; } let identifier, event; if (rawIdentifier.startsWith('UIKitApplication:')) { ...
拿到偏移后可得到所属SO模块, 示例代码如下 functiongetMethodModule(method){consthandle=method.handle;constjni_code_offset=getJNICodeOffset();constentry=ptr(handle).add(jni_code_offset).readPointer();constmodule=Process.findModuleByAddress(entry);constoffset=entry.sub(module?.base||0);console.log(...
function frida_NativePointer() { Java.perform(function () { console.log(""); //拿到libc.so在内存中的地址 var pointer = Process.findModuleByName("libc.so").base; //读取从pointer地址开始的16个字节 console.log(pointer.readByteArray(0x10)); ...
var wqzz = rwzz.add(0X3038).readPointer();var ll = wqzz.add(0x4E0); var zl = wqzz.add(0X4F8);var tl = wqzz.add(0X4EC);writeEncode(eval(ll.toString()),1000);writeEncode(eval(zl.toString()),1000); writeEncode(eval(tl.toString()),1000); }3.4. Frida写nut方案在3.3中,...
Frida 可以读取和修改目标进程的内存,这可以用于修改函数参数、返回值和执行流程。 在Java 环境中,Frida 提供了 Java.cast 和 Java.array 等 API 来操作对象和数组。 在原生环境中,Frida 提供了诸如 Memory.readPointer 和 Memory.writePointer 等 API 来读写内存。