我正在C的迷你Windows進程管理器上工作,我有一個線程的句柄。
如何檢索該線程的起始地址?事情是這樣的:
如何在Windows中檢索線程的起始地址?
4
A
回答
4
這樣的問題在幾天前已經被問到了。這裏有一個簡單的解決方案:
DWORD WINAPI GetThreadStartAddress(HANDLE hThread)
{
NTSTATUS ntStatus;
HANDLE hDupHandle;
DWORD dwStartAddress;
pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtQueryInformationThread");
if(NtQueryInformationThread == NULL)
return 0;
HANDLE hCurrentProcess = GetCurrentProcess();
if(!DuplicateHandle(hCurrentProcess, hThread, hCurrentProcess, &hDupHandle, THREAD_QUERY_INFORMATION, FALSE, 0)){
SetLastError(ERROR_ACCESS_DENIED);
return 0;
}
ntStatus = NtQueryInformationThread(hDupHandle, ThreadQuerySetWin32StartAddress, &dwStartAddress, sizeof(DWORD), NULL);
CloseHandle(hDupHandle);
if(ntStatus != STATUS_SUCCESS)
return 0;
return dwStartAddress;
}
來源:http://forum.sysinternals.com/how-to-get-the-start-address-and-modu_topic5127_post18072.html#18072
您可能必須包含這個文件:http://pastebin.com/ieEqR0eL
相關問題:How to add ntdll.dll to project libraries with LoadLibrary() and GetProcAddress() functions?
1
你應該能夠得到一個堆棧跟蹤與StackWalk64或相關功能,然後用dbghelp.dll解析它。
這CodeProject上的文章可以解釋這一切詳細: http://www.codeproject.com/KB/threads/StackWalker.aspx
3
NtQueryInformationThread
與ThreadQuerySetWin32StartAddress
。另一種可能是用StackWalk64
走線的堆棧。
如果您只需要起始地址,NtQueryInformationProcess
是lot更簡單。即使編碼相當簡潔,走棧也需要幾百個左右。
相關問題
- 1. 線程起始地址
- 2. 獲取線程起始地址
- 3. 如何檢索原始目標地址
- 4. 如何檢索遠程IP地址?
- 5. 如何獲取C++中的進程的起始/基地址?
- 6. 如何從iPhone的地址簿中檢索地址。
- 7. 如何將線程的起始地址與模塊名稱匹配?
- 8. 如何在Windows Phone中檢索字符串中的聯繫人地址?
- 9. 如何檢測正在寫入堆棧地址的線程?
- 10. 如何檢索Meteorjs上的IP地址?
- 11. 在nasm中指定起始地址?
- 12. 的Windows:以編程方式檢索手動配置IPv6地址
- 13. 如何獲取當前進程的起始地址--- Linux
- 14. 如何將一段的起始地址寫入ROM中的專用地址
- 15. ip地址檢索
- 16. 在彙編編程中獲取堆棧的起始地址
- 17. 在Go中,如何從開放的TCPConn *中檢索IP地址?
- 18. windbg中disassamble函數的起始地址
- 19. Arduino中的XBee起始地址
- 20. C++ Non-Pod起始地址
- 21. 如何檢索地址簿內容?
- 22. 如何檢索WiFi Direct MAC地址?
- 23. Windows Store應用程序(C#/ Xaml)檢索IP地址
- 24. 如何從Grails中的IP地址檢索地理位置?
- 25. 如何使用multiValues在Cocoa的地址簿中檢索kABPhoneNumber?
- 26. 如何從附近的主機,在Python中檢索MAC地址?
- 27. 如何檢索回購的遠程git地址?
- 28. 如何從其成員的地址獲取struct的起始地址
- 29. 檢索的IP地址與RKA IP地址的中間件
- 30. Java:如何在C++中存儲和檢索內存地址
謝謝,但這個函數會返回一個數字。 如何將其作爲起始地址使用? –
該函數返回目標進程地址空間中線程的起始地址。您可以以任何您想要的方式使用它(例如,如果您知道函數定義,則可以使用CreateRemoteThread函數將其轉換並調用)。 –
我可以找回像這樣的東西:chrome.dll!chromeMain + 0x11ded 使用那個數字嗎? –