部署可执行文件和依赖文件后,是否有人可以“观察”您的变量/等在运行时是如何分配的?更具体地说,如果有人拥有您的可执行文件,他们是否可以“观察”您如何管理内部数据?
我不想知道如何做到这一点,我只想知道是否可能。它是否存在将决定我如何构建我的代码。
部署可执行文件和依赖文件后,是否有人可以“观察”您的变量/等在运行时是如何分配的?更具体地说,如果有人拥有您的可执行文件,他们是否可以“观察”您如何管理内部数据?
我不想知道如何做到这一点,我只想知道是否可能。它是否存在将决定我如何构建我的代码。
当然可以,但是难度不同。如果你给他们一个调试版本,他们可以很容易地在调试器中启动你的可执行文件,然后使用他们的调试工具来观察执行(就像程序员在开发时所做的那样)。
如果您给他们一个剥离但未优化的构建,那么他们没有所有调试符号名称,但他们仍然可以将您的程序加载到调试器中并观察它执行,逐条指令并映射正在使用的内存以及如何使用. 这更困难,但仍有可能。
如果你给他们一个剥离的、优化的构建,它会有点困难(因为优化器可以产生一些复杂且难以遵循的汇编)但仍然不是不可能的。
最终总是有可能的。然而,这是否值得某人花费时间和精力是另一回事。
是的,这完全有可能。任何体面的调试器都可以遵循您的代码。
不,这不应该决定您如何构建代码,因为我可以保证无论您做什么都会影响其他人是否可以理解/遵循您的代码。它可能会使不那么聪明的人慢下来,但是那里有一些非常聪明的人,他们的一生都围绕着理解其他人的编译代码。