如何调用别人的DLL

如何调用别人的DLL,第1张

如果是简单的dll,没有导出为各种类的,仅导出了一些简单的函数。那么可以通过 Dependency walker 或者其他工具来检查dll的导出表,可以看到导出函数的函数名。通过名字猜测其意义。

但函数的参数类型,个数,无法看到。

如果有一定水平,可通过反汇编,检查其堆栈顶移动的字节数猜测其参数个数。简单分析也不难得出其含义。

char 类型当 short 传.

char* 类型, 如果仅用作入参, 设置为 Type.String, 传入 bytes[] 即可.

如果用作出参, 则要用到 指针: Pointer, 譬如:

int buffer

setParameter(2, Type.INT, buffer)

invoke 完毕后

Pointer headBuff = Pointer.createPointerToNativeMemory(buffer, 大小)

byte[] bytes = headBuffer.getMemory()

如果是简单的dll,没有导出为各种类的,仅导出了一些简单的函数。那么可以通过 Dependency walker 或者其他工具来检查dll的导出表,可以看到导出函数的函数名。通过名字猜测其意义。

但函数的参数类型,个数,无法看到。

如果有一定水平,可通过反汇编,检查其堆栈顶移动的字节数猜测其参数个数。简单分析也不难得出其含义。

char 类型当 short 传.

char* 类型, 如果仅用作入参, 设置为 Type.String, 传入 bytes[] 即可.

如果用作出参, 则要用到 指针: Pointer, 譬如:

int buffer

setParameter(2, Type.INT, buffer)

invoke 完毕后

Pointer headBuff = Pointer.createPointerToNativeMemory(buffer, 大小)

byte[] bytes = headBuffer.getMemory()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8119277.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存