WEB开发网
开发学院软件开发VC 定制调试诊断工具和实用程序(8) 阅读

定制调试诊断工具和实用程序(8)

 2006-07-20 11:42:17 来源:WEB开发网   
核心提示:本文假设你熟悉 Win32,DLL定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(一) 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(二) 定制调试诊断工具和实用程序&mda

本文假设你熟悉 Win32,DLL

  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(一)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(二)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(三)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(四)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(五)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(六)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(七)

CreateRemoteThread,命令行及其它

你已经看到如何用 Win32 调试 API 来揭示进程是怎样加载 DLLs 以及加载到哪里的。现在让我们来揭开CreateRemoteThread 的秘密,这个函数允许你使用另外一个进程在其上下文中启动函数作为线程运行:

HANDLE CreateRemoteThread(
 HANDLE hProcess,             // 进程句柄
 LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD-安全描述符
 DWORD dwStackSize,            // 初始栈大小
 LPTHREAD_START_ROUTINE lpStartAddress,  // 线程函数
 LPVOID lpParameter,            // 线程参数
 DWORD dwCreationFlags,          // 创建选项
 LPDWORD lpThreadId            // 线程标示符
);

lpStartAddress 应该是拟在另一个进程环境中执行的线程过程地址。这个函数的窍门在于 lpStartAddress 参数必须是另一个进程地址空间中的地址,这也是它为什么难以使用的原因。如果你不想重新创建代码程序集,那么就将它拷贝到另一个进程地址空间即可, 你可以使用一个较容易的解决方法。

1 2 3 4 5  下一页

Tags:定制 调试 诊断

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接