据我所知,每个程序都由处理器指令包和一些特定的数据变量(float,int,char ...)组成,以在处理器寄存器上工作。
所以,我想到的第一件事(很久以前)是,如果您知道ASCII值%¨#$¨#
(只是一个随机示例)可以解释为x86 的堆栈指针寄存器的地址(仅作为示例)处理器。如果是这样,那么每次在读取二进制文件的内容时发现此“不可读”值时,都可以解释为堆栈指针寄存器正在用于管理某些数据变量。
不幸的是,这不会发生。下面是ping.exe
打开Windows 的程序内容的示例notepad.exe
:
它是一个二进制文件,它的数据对于我们人类来说是无法理解的(对于机器而言,是难以理解的。)即使对于任何人,即使他们知道汇编代码(最低级别的机器语言),也没有任何意义。
因此,如果我正确理解了所有内容,那么有人可以解释一下吗
- 为什么二进制代码不能返回到汇编代码的最深处呢?
- 如果可以理解汇编代码,为什么从此代码生成的编译二进制文件不再“可读”?