据我所知,Windows尚未被任何人反编译。显然它很复杂,但在某种程度上它应该已经完成了吗?
我的想法是,如果最终用户可以访问该软件,并且计算机能够运行它,那么即使是它的混淆版也必须可以获得吗?
我显然错过了什么,我只是不确定是什么。
答案 0 :(得分:1)
没有什么能阻止Windows被反编译(当然,除了EULA和类似的法律绑定之外)。如您所述,代码必须在某个时间在CPU上运行,并且CPU必须从内存中读取代码,您也可以从内存中读取代码。系统的某些部分可能有点棘手,因为要运行操作系统,您需要为操作系统提供一些独有的权限(这是大多数现代受保护的操作系统的工作方式),但它无法解决。在任何情况下,防止Windows反编译都没有太多的努力 - 这几乎没有任何好处,同时使调试,错误报告和类似的更难。到目前为止,微软甚至还提供了一个特别适合软件开发的Windows调试版本。
重点是没有理由反编译Windows。这么大的努力会有什么实际用处?如果您是一家需要访问Windows源代码的公司(例如,在开发嵌入式解决方案时),您就可以获得它们。仅仅因为Windows不是开源并不意味着源不可用。
如果您不是需要自己的Windows版本的人(在Windows CE时代很常见),那么反编译Windows的理由就更少了。无论如何,您需要坚持使用已定义的公共API - 无论软件是否为开源软件,这都是一种很好的做法。 API是合同 - 您通过反编译获得的实现细节不是。他们可能会使用下一个安全修补程序等进行更改。考虑到Windows的兼容性,这一点尤为重要 - 更新(甚至是新的主要版本)很难破坏与旧软件的兼容性。
因此,如果您想要反编译Windows,那么没有任何技术可以阻止您这样做。但是你正在寻找由非常聪明的编译器编译的数千万行源代码,其中包含一些手写的优化组件,大量的兼容性解决方法可能是彻头彻尾的混淆(记住,你没有得到) comments - 只是实际编译的代码)。你愿意花几十万小时来满足你的好奇心吗? :P