如何注入jar包到目标程序


写在前面

最近在研究Java ui元素嗅探技术,主要目的是识别鼠标指针所在位置的Java元素,本来是通过WindowsAccessBridge中的API实现,但是局限性太多,还有一种思路是通过java awt识别,这种方法自然是要用Java来实现。
虽然我现在不会写具体逻辑,但是可以先记录下怎么将jar包导入到目标JVM,这种技术以后也总会有用的。

具体实现

import com.sun.tools.attach.VirtualMachine;
...
public static void inject(String pid,String jarPath){
    // 根据pid附加目标jvm
    VirtualMachine localVirtualMachine = VirtualMachine.attach(pid);
    // 加载jar包
    localVirtualMachine.loadAgent(jarPath);
    // 脱离
    localVirtualMachine.detach();
}

然后就可以使用URLClassLoader引入更多的jar包了。

写在后面

在做安卓逆向的时候感觉会比较有用。