为了能够使用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