美文网首页
Frida Javascript api #NativePoin

Frida Javascript api #NativePoin

作者: 邓超_码农加点中 | 来源:发表于2020-02-13 22:56 被阅读0次

    原文链接: https://frida.re/docs/javascript-api/#nativepointer
    欢迎加入 Frida 交流群: 1049977261

    NativePointer

    • new NativePointer(s):
      通过 s 创建一个新的 NativePointer 对象, s 可以是一个数字也可以 是一个包含以 "0x" 开头的十六进制的数字字符串.
      您可以使用 ptr(s) 作为这个方法的简写.
    • isNull(): 返回一个布尔值以便让您方便的检测指针是否为 NULL.

    • add(rhs), sub(rhs),
      and(rhs), or(rhs),
      xor(rhs):
      通过将当前 NativePointer 对象与另一个数字或 NativePointer 对象进行加, 减, 与, 或, 异或来创建一个新的 NativePointer 对象.

    • shr(n), shl(n):
      通过将当前对象向右或向左移 n 位来创建一个新的 NativePointer 对象.

    • not(): 通过将当前对象进行位反转来创建一个新的 NativePointer 对象.

    • equals(rhs): 通过比较当前对象与 rhs 是否拥有相同的指针来判断它们是否相同.

    • compare(rhs):
      类似于 String#localeComare() 一样返回一个数字类型的比较结果.

    • toInt32(): 将当前对象转换成一个有符号的 32 位的整型数字.

    • toString([radix = 16]):
      将当前对象转换成数字字符串, 可指定进制, 默认十进制.

    • toMatchPattern():
      根据当前指针的原始数据返回一个 Memory.scan() 兼容的匹配模板(pattern)

    • readPointer(): 从当前内存地址上读取一个 NativePointer 对象.

      如果当前地址不可读则抛出一个 JavaScript 异常.

    • writePointer(ptr): 在当前内存地址上写入一个 ptr 对象.

      如果当前地址不可写则抛出一个 JavaScript 异常.

    • readS8(), readU8(),
      readS16(), readU16(),
      readS32(), readU32(),
      readShort(), readUShort(),
      readInt(), readUInt(),
      readFloat(), readDouble():
      从当前内存地址上读取一个有符号或无符号的整型或浮点型数字.

      如果当前地址不可读则抛出一个 JavaScript 异常.

    • writeS8(value), writeU8(value),
      writeS16(value), writeU16(value),
      writeS32(value), writeU32(value),
      writeShort(value), writeUShort(value),
      writeInt(value), writeUInt(value),
      writeFloat(value), writeDouble(value):
      在当前内存地址上写入一个有符号或无符号的整型或浮点型数字.

      如果当前地址不可写则抛出一个 JavaScript 异常.

    • readS64(), readU64(),
      readLong(), readULong():
      从当前内存地址上读取一个有符号或无符号的 64 位或 128 位的值,
      并返回相应的 Int64/UInt64 对象.

      如果当前地址不可读则抛出一个 JavaScript 异常.

    • writeS64(value), writeU64(value),
      writeLong(value), writeULong(value):
      在当前内存地址上写入一个有符号或无符号的 Int64/UInt64 对象.

      如果当前地址不可写则抛出一个 JavaScript 异常.

    • readByteArray(length):
      从当前内存地址上读取 length 个字节, 并将其作为一个 ArrayBuffer 对象返回.
      通过将这个对象传递到 send() 的第二个参数, 它可以有效的传输到您的 Frida 应用中.

      如果 length 个字节中的任意一个不可读则抛出一个 JavaScript 异常.

    • writeByteArray(bytes):
      在当前内存地址上写入 bytes, bytes 可以是 readByteArray() 返回的 ArrayBuffer 对象, 也可以是由 0 ~ 255 构成的整型数组. 例如: [ 0x13, 0x37, 0x42 ].

      如果任意一个字节不可写入到指定的地址则抛出一个 JavaScript 异常.

    • readCString([size = -1]),
      readUtf8String([size = -1]),
      readUtf16String([length = -1]),
      readAnsiString([size = -1]):
      从当期内存地址上读取一个 ASCII, UTF-8, UTF-16, 或 ANSI 字符串.
      如果您知道字符串的字节尺寸, 您可以提供可选的 size 参数.
      如果这个字符串是以结束符结尾的, 您也可以省略 size 参数, 或者传入 -1.
      同样的, 如果您知道字符串有多少个字符, 您也可以提供可选的 length 参数.

      如果 sizelength 个字节中的任意一个不可读则抛出一个 JavaScript 异常.

      注意, readAnsiString() 仅可用于 Windows.

    • writeUtf8String(str),
      writeUtf16String(str),
      writeAnsiString(str):
      将 JavaScript 字符串以结束符结尾进行编码并写入到当前内存地址.

      如果任意一个字节不可写入到指定的地址则抛出一个 JavaScript 异常.

      注意, writeAnsiString() 仅可用于 Windows.

    ArrayBuffer

    • wrap(address, size):
      通过已有的内存区域创建一个 ArrayBuffer 对象, NativePointer 类型的
      address 指定了区域的基础地址, 数字 size 则指定了尺寸.
      不同于 NativePointer 的读写相关的 API, 访问时不会进行校验, 这意味着
      坏的指针将会导致进程崩溃.
    • unwrap():
      NativePointer 类型返回当前对象的基础地址. 在后备存储依然被使用的情况下,
      调用者有责任使缓冲区保持活跃状态.

    相关文章

      网友评论

          本文标题:Frida Javascript api #NativePoin

          本文链接:https://www.haomeiwen.com/subject/iksrfhtx.html