由于新接了一个任务,就是通过封装自己的DLL来获取其他App进程空间中的部分信息。因此,最近几天都在研究DLL 注入其他进程的有关问题,通过Hook技术的了解,可以实现将MyDll注入到其他App中,但是,由于本人编程经验很有限,最后,经过高人指点,决定使用Windows中强大的CreateRemoteThread等相关函数来完成。其中,理论方面的精华来自于Internet及《Windows 核心编程》。。
现将远程注入DLL的实现方法总结如下:
Steps:
1.设计一个自己的DLL及调用它的exe,(这样就可以帮助我们很好的控制其他App)。
2.为你要操作控制的Proc(这里成为目标Proc)new一个线程,使用Windows中的HANDLE CreateRemoteThread();具体使用查阅MSDN,有很好的说明;
但是,在使用CreateRemoteThread时要注意对线程函数的内存地址的把握。
因此,需要为这个new Thread 申请一块有效的内存空间,并将该内存空间通过函数VirtualAllocEx复制到目标Proc中,注意使用VirtualFreeEx()释放内存。
3.最后,这个建立好的Thread使用动态加载DLL,即调用函数LoadLibraryA(),就可以实现目标了。
由于时间紧,并且还没有动手实现,因此,对该方法的进一步理解及讨论将在后面的Blog中揭晓。