Skip to main content

第15章课后作业

因为这一章节练习量较大,因此按照各个小节分组。

Windows 架构、API与编程调用

练习

1:分析 OpenProcess 的调用链

2:使用 C++ 调用 CreateProcess API,运行 calc.exe 程序

3:使用 P/Invoke 通过序数调用 OpenProcess,运行 calc.exe 程序

4:使用 D/Invoke 调用 OpenProcess,运行 calc.exe 程序

5:D/Invoke 还有其他方式获得对模块以及 API 的句柄,例如通过方法 GetPebLdrModuleEntry 来获得对 DLL 的句柄。请查看 D/Invoke 的仓库 README 文档并分别进行尝试

6:查阅资料,分别在 VBA 以及 PowerShell 中调用 OpenProcess,运行 calc.exe 程序

7:在 .NET 中,执行 Shellcode 的经典方式为使用 VirtualAlloc 分配内存空间、使用 Marshal.Copy 写入 Shellcode,使用 CreateThread 创建线程,以及使用 WaitForSingleObject 来等待线程的结束。根据描述以及 API 的文档写出 C# 代码,分别使用 P/Invoke 以及 D/Invoke。