美文网首页
python ctpyes 指针的指针

python ctpyes 指针的指针

作者: iosjoker | 来源:发表于2018-06-29 12:37 被阅读0次

    这玩意太难排版,凑合吧

    c 的调用方式如下

    void test(char**p, int* len);

    char* p = malloc(0x1000)

    int len = 0x1000

    test(&p, &len)

    DebugPrint("size is %d ", len)

    DumpHex(p, len)

    python 呼叫test

    func = CDLL('path').test

    functype = CFUNCTYPE(c_void, c_void_p, c_void_p)

    func = functype(CDLL('path').test)

    data = create_string_buffer(0x1000)

    len = c_uint64(0x1000)

    func(byref(c_int64(addressof(data))), byref(len))  # 如果32位机器的话data 的地址转化为c_int32

    data = data[:len.value] # 将字节码重新组装。 data 本身存储的是c_array_0x1000 . 不是python 的bytes类型。

    ctypes pyobjc 这种库自身做了一个桥接。 很多虽然python能访问的类型,并不是python原生的类型。

    需要很细心的转化为原生类型后,就大胆的使用吧。

    相关文章

      网友评论

          本文标题:python ctpyes 指针的指针

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