爲了能夠使用inject_and_interpose代碼進行一些注入和插入,我需要在實際執行之前獲取新啓動的進程(典型的閉源用戶應用程序)的PID。要清楚,我需要做的比只是「注意到它快」 - 我不能輪詢,或接收到一些異步通知,這意味着該進程已經執行了幾毫秒的時間我採取行動。如何在執行之前獲取新進程的PID?
我需要有機會在執行單個語句之前執行注入和插入操作。
我打算編寫一個後臺進程,當一個特定名稱的進程出現時,會同步通知後臺進程。我也願意編寫一個啓動應用程序,然後啓動目標應用程序。
任何解決方案都需要支持64位代碼,至少在10.5(Leopard)到10.8(Mountain Lion)之間。
如果這證明是痛苦的簡單,我會繼續承認我是新來的OS X :)謝謝!
在windows上,您可以通過在調用'CreateProcess'時通過設置'CREATE_SUSPENDED'標誌來啓動處於掛起狀態的進程來執行此操作。然後,一旦你完成了任何棘手的事情,你就可以調用'ResumeThread'。也許這會幫助你朝正確的方向前進。 – 2012-07-27 00:13:01
我非常確定,除非您控制流程啓動,否則在執行單個語句之前無法同步攔截新啓動的流程。 – 2012-07-27 00:14:20
@JonathonReinhart,我已經參與了這個Windows的開發,但是在OS X下沒有運氣,所以「在正確的方向看」就是我在這裏嘗試的;)謝謝! – bland328 2012-07-27 00:19:46