【发布时间】:2021-10-26 15:41:51
【问题描述】:
我在 youtube 上观看了一些视频,其中 CPP 或 c# 代码的字节被硬编码为 unsigned char*,然后被注入内存并执行。
如何使用我的源代码做到这一点?我只找到了一种从 exe 注入字节的方法,方法有点复杂,这在执行时给我带来了一些问题。
我还发现这个页面,他们使用某种渗透测试工具生成可执行代码(字节),可以简单地注入内存。
https://www.ired.team/offensive-security/code-execution/using-msbuild-to-execute-shellcode-in-c
【问题讨论】:
-
char * code=...; goto code。但是你必须告诉你的操作系统包含code的页面可以执行里面的指令。 -
您通常以正常方式获取可执行代码;你编译它。或者,编写汇编代码并手动翻译成 1950 年代的机器代码。
-
@Quimby --
code不是标签;它不能是goto语句的目标。 -
我知道如何将字节注入内存,但是您不能只从编译的 exe 中运行代码,您需要添加标头等。但在链接中的示例中,他们只是注入字节并且它工作得很好。
-
@Quimby -- 嗯,是的,但是内联汇编不是可移植的 C++;
asm关键字没有语义。所以无论你尝试什么,你都会进入编译器特定的东西。
标签: c++ memory portable-executable