【发布时间】:2012-04-03 10:34:01
【问题描述】:
在 C 语言中。我需要一种在程序运行时直接执行计算机指令的方法。我知道如何以二进制形式制作计算机指令的唯一方法是通过十六进制编辑器,然后将文件作为应用程序运行。我将如何使用程序编写二进制文件,然后从它们执行它,而无需创建新的执行进程。似乎他们应该是一种简单的方法来做到这一点,但无论我在哪里都找不到它。
我能想到的唯一其他方法是通过内联汇编,但在我当前的项目中,这将是一个缺点,直接使用二进制执行是最好的方法。 (这可能需要windows上的驱动程序吗?如何在linux上做?换句话说,跨平台的方法会很好)
谢谢。
【问题讨论】:
-
inlince 程序集与您的预期相比没有任何开销(这在 AFAIK 中不太可能),因为内联程序集被编译为二进制文件。
-
所有指令在执行时都是“二进制”。你能解释一下你想要完成什么吗?
-
故意破坏堆栈。
-
感谢 -2 人,因为你不明白这个问题。
-
你想做的是大多数黑客的操作方式。他们找到了一种将数据输入程序的方法,然后说服程序执行它。 E.g. a buffer overflow attack 做好准备,您的病毒扫描程序可能会将您的程序检测为病毒,或者您的硬件会阻止您执行代码 (DEP)