簡體   English   中英

進程間掛鈎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM