地址指针相加

js中,普通2个,原以为都是普通的数值的值,用加号相加:

var functionSize = 0x24C8; // 9416 == 0x24C8
...
const moduleBaseAddress = Module.findBaseAddress(moduleName);
const funcRealStartAddr = moduleBaseAddress.add(funcRelativeStartAddr); // 0x1001fc460
...
var funcRealEndAddr = funcRealStartAddr + functionSize;

结果却是:

funcRealEndAddr=0x10015c0006564809416

而不是以为的:

  • funcRealEndAddr=0x1001fe928
    • 其中:0x1001fe928 - 0x1001fc460 = 0x24C8

原因:

此处的值funcRealStartAddr,其实是Frida中的特殊定义的类型,叫做:NativePointer

所以,两个NativePointer类型的地址相加,要用特殊写法,否则就变成了:字符串级别的拼接相加了。

解决办法:

搞懂定义和方法:

后,改为:

用NativePointer的add(和前面写法一样)

var funcRealEndAddr = funcRealStartAddr.add(functionSize);

即可

-> 输出正常的值:

funcRelativeStartAddr=656480, functionSize=9416, funcRelativeEndAddr=665896
moduleName=akd, moduleBaseAddress=0x10015c000
funcRealStartAddr=0x1001fc460, funcRealEndAddr=0x1001fe928

results matching ""

    No results matching ""