Alo*_*kin 14 binary executable instructions
我知道可执行文件包含指令,但这些指令究竟是什么?如果我想调用MessageBoxAPI函数,例如,指令是什么样的?
谢谢.
And*_*ith 11
可执行文件是操作系统可以理解的二进制文件.可执行文件将包含其中包含数据的部分.Windows使用PE格式.PE格式有一个包含机器指令的部分.这些指令只是按顺序排序并由CPU理解的数字.
对MessageBox()的函数调用将是一系列指令
1)具有DLL中的函数的地址.该地址由编译器输入
2)将参数"推"到堆栈上的指令
3)实际的函数调用
4)某种清理(取决于调用约定).
重要的是要记住EXE文件只是特殊格式的文件.我没有为您拆卸,但您可以尝试编译代码,然后在Visual Studio中打开EXE以查看反汇编.
如果我见过一个,那是一个臃肿的问题。但是,我会尽力提供一个概述。在二进制可执行文件中有这些东西称为“字节码”,字节码只是指令的十六进制表示。通常,您可以“查找”字节代码并将它们转换为汇编指令。例如: 指令:
mov ax, 2h
Run Code Online (Sandbox Code Playgroud)
具有字节码表示:
B8 02 00
Run Code Online (Sandbox Code Playgroud)
字节码被加载到 RAM 中并由处理器执行,因为这是它的“语言”。没有人知道我知道字节码中的程序,这太复杂了。组装是......足够有趣。每当您用更高级别的语言编译程序时,它必须将您的代码转换为汇编指令,您可以想象一下,您的代码在编译后会显得多么混乱。不要误会我的意思,编译器很棒,但是使用 IDA Pro 免费软件反汇编 C++ 程序,您就会明白我在说什么。简而言之,这就是可执行文件,当然有关于这个主题的书籍。我不是 Windows API 专家,但其他人可以向您展示调用 Windows API“MessageBox”的指令是什么样的。它应该只有几行Assembly。