JNA BaseAddress / find dylib

时间:2017-12-21 11:24:24

标签: java macos dll jna dylib

我使用taskID,pid和名称获得了我自己的MacProcess。实际上我想用他们的地址获取这个过程的所有模块/ dylib(或者只是一个名称为client.dylib的特定模块/ dylib)

在Windows上,我可以做类似的事情:

 public int base(String dllName) {
    Pointer snap = kernel32.CreateToolhelp32Snapshot(Tlhelp32.TH32CS_SNAPMODULE32.intValue() | Tlhelp32.TH32CS_SNAPMODULE.intValue(), getProcessId("processname"));
    Tlhelp32.MODULEENTRY32W entry = new Tlhelp32.MODULEENTRY32W.ByReference();
    while (kernel32.Module32NextW(snap, entry)) {
        String name = entry.szModule();
        if (name.equalsIgnoreCase(dllName + ".dll")) {
            Pointer pointer = entry.hModule.getPointer();
            return ((Long) Pointer.nativeValue(pointer)).intValue();

但是在MacOS上我显然不能使用dll等等。我如何通过JNA获取Mac上正在运行的应用程序的模块(例如test.dylib)的地址?实际上是一个模块(例如client.dylib),它的地址来自正在运行的应用程序。为了更好地理解我在寻找什么,我为windows添加了这个代码。非常感谢你的时间和帮助!

0 个答案:

没有答案