64 位 PE 注入——挂起、注入、恢复(x64 相当于改变 EAX?)
64 bit PE injection - Suspend, inject, resume (x64 equivalent to changing EAX?)
全部,
我试图通过无休止地调试应用程序来解决这个问题,但我似乎找不到答案。
在我的 32 位 PE 注入中,我最终将 EAX 更改为注入 PE 的新入口点,然后恢复线程。我读到内核 运行 在最后调用 EAX 以到达入口点(我在调试应用程序时没有看到这一点,所以不知道是否真的如此)。
但是,我似乎找不到这在 x64 中是否可行(尝试了所有寄存器:))。
所以总而言之有两个问题:
- 内核是否真的调用了 EAX,因为我在调试时看不到那个调用
- 是否可以使用相同的方法更改寄存器以在 x64 中获取 运行 的新入口点,或者我是否需要依赖例如创建远程线程?
P.S.: 我是一名安全研究员:)
在 x64 中 RCX
寄存器用作应用程序定义的线程入口点。在 x86 中 - 使用 EAX
寄存器。而不是内核调用这个地址。但是 kernel32.dll
全部,
我试图通过无休止地调试应用程序来解决这个问题,但我似乎找不到答案。
在我的 32 位 PE 注入中,我最终将 EAX 更改为注入 PE 的新入口点,然后恢复线程。我读到内核 运行 在最后调用 EAX 以到达入口点(我在调试应用程序时没有看到这一点,所以不知道是否真的如此)。
但是,我似乎找不到这在 x64 中是否可行(尝试了所有寄存器:))。
所以总而言之有两个问题:
- 内核是否真的调用了 EAX,因为我在调试时看不到那个调用
- 是否可以使用相同的方法更改寄存器以在 x64 中获取 运行 的新入口点,或者我是否需要依赖例如创建远程线程?
P.S.: 我是一名安全研究员:)
在 x64 中 RCX
寄存器用作应用程序定义的线程入口点。在 x86 中 - 使用 EAX
寄存器。而不是内核调用这个地址。但是 kernel32.dll