阅读:3944回复:5
获取所有进程的映像路径以及命令行参数
我们知道,如果获取本进程命令行的话,可以通过调用 GetCommandLine 获得, GetCommandLine 返回的是LPTSTR类型的数据,该返回值便是本进程命令行的内存首地址。那么,我们可以让远程执行 GetCommandLine 这个函数,然后获取远程进程中这个函数的返回值,再通过 ReadProcessMemory 把远程进程的命令行读出来就得到我们想要的了。
具体实现步骤如下: 1、通过 GetProcAddress 取得 GetCommandLineA 的地址。 2、用 CreateRemoteThread 启动远程线程,使远程进程执行 GetCommandLineA 。 3、用 WaitForSingleObject 等待远程线程结束。 4、用 GetExitCodeThread 取得远程线程退出代码,其实就是远程进程中 GetCommandLineA 函数的返回值,这是远程进程命令行的首地址。 5、通过 GetProcAddress 取得 lstrlenA 的地址。 6、用 CreateRemoteThread 启动远程线程,使远程进程执行 lstrlenA 。 7、用 WaitForSingleObject 等待远程线程结束。 8、用 GetExitCodeThread 取得远程线程退出代码,其实就是远程进程中 lstrlenA 函数的返回值,这是远程进程命令行的文本长度。 9、使用 ReadProcessMemory 把远程进程的命令行读取出来。 [代码性质] VC完整应用程序代码 |
|
|