[英]Inter-process Hooking
是否可以使用鈎子跳轉到另一個進程的運行內存,然后再跳回,而無需注入DLL?
例如,如果進程A
具有過程foo
而進程B
具有與foo
相同的原型的過程bar
(用於鈎子),假設兩個進程都在運行,是否可以將foo
鈎接到jmp到bar
?
編輯:這需要在Windows上完成。
根據定義,流程是沙盒。 如果您甚至錯誤地走出了地址空間,它也會被引發並捕獲為SIG_USR信號,並報告為分段錯誤
話雖如此,但是您可以使用進程間通信機制,例如共享內存-shmem,管道和套接字來在進程之間進行通信。
編輯:也有提供遠程方法調用的RPC(遠程過程調用)機制,例如CORBA。
Windows中的每個進程(以及Unix中,可能還有其他大多數現代OS中的進程)都具有自己的虛擬內存空間,該空間通常映射到不同的物理地址。 因此,將DLL注入另一個進程的地址空間是鈎住該進程中任何內容的唯一方法。 另一方面,一旦您在該進程中擁有DLL,就可以在其中執行許多操作。 產生您自己的線程並使用Windows消息(作為Windows中最簡單的通信方法之一)與父進程進行通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.