2009-01-30 128 views
3

我需要一種將x64窗口中的CreateRemoteThread併入64位和32位進程的方法。我已經研究出如何找到目標進程的指令集,如何爲組件底座的目標進程分配內存,並且我幾乎研究瞭如何處理地址空間隨機化。CreateRemoteThread 32-> 64和/或64-> 32

我不知道如何實際啓動遠程進程上的線程時,它是錯誤的指令集。

注意:我不在乎你解決了哪兩個問題。我自己的exe可以是32位或64位(但是在知道目標進程的位數之前,我確實必須選擇)。

在有人抱怨我真的不應該這樣做之前,請問微軟爲什麼必須在所有打開的句柄上設置FILE_SHARE_DELETE,然後才能刪除正在使用的文件。不,沒有辦法需要刪除其他進程打開的文件。

+0

這確實令人不快。 – Joshua 2009-05-12 21:15:15

+0

你有沒有得到CreateRemoteThread 32 - > 64的工作? – QAZ 2010-01-19 18:21:39

+1

對不起QAZ我沒有。 – Joshua 2010-01-19 18:30:25

回答

3

CreateRemoteThread 32- > 64不起作用。

CreateRemoteThread 64- > 32個作品。

2

作爲解決您陳述問題的解決方法,如果您需要刪除其他進程使用的文件,並且其他進程尚未打開,您可能也可能應該在操作系統提供的重新啓動功能上使用延遲刪除他們爲FILE_SHARE_DELETE。與使用線程注入來修改外部進程中的現有文件句柄相比,這可能更不具有潛在的危險性,更不用說潛在地需要更少的權限。只是一個想法。

如果您設置了遠程線程注入,請參閱MSDN page上的解決方法;也許這裏有一些靈感。你也可以考慮只用強力殺死其他進程(很好,首先,有必要強制執行),因爲你是goona需要管理員訪問權限,並且用內部句柄打擾可能不會使它們處於良好狀態。這是安裝人員在需要替換打開的文件而不重新啓動時所要做的(或要求用戶執行的操作)。

+0

不,DeleteOnReboot()需要管理員權限。我確切地知道哪些進程保持打開文件,甚至不需要掃描它們,而且知道它們是由同一用戶進行掃描的。 我曾考慮過其他機制,但都沒有表現出承諾。 – Joshua 2009-01-30 03:43:38