c# - 为什么在 exe 中看到源代码,因为它应该是二进制的?
问题描述
最近,我通过将扩展名重命名为 .txt,对我的一个 c# .NET 编译的 exe 进行了实验。在记事本中查看时,我能够看到我所有的英文源代码,这让我在查看 .cs 文件还是 .exe 文件时感到困惑。
在此事件之后,我意识到拥有此 exe 的任何人都可以复制所有代码,然后将它们重新编译成带有一些隐藏的附加代码(或恶意软件)的克隆,这可能会损害我在用户中的声誉。
但是我对可以将所有方法和属性重命名为非人类可读格式的混淆知之甚少,但我仍然想在这里问一下,exe程序不应该(仅)采用计算机可读的二进制格式(如我在学校学过)?为什么还需要混淆?这个问题是否仅限于具有 CLR 标头的 exe?如果我想让反编译变得困难,我是否应该考虑在 C 等其他语言上创建应用程序?请回答...
编辑:- 大多数代码都可以在这个区域看到,我不知道它包含什么部分的源代码。
Edt:- 同样,当我对使用 Visual Foxpro 编译的 exe 执行相同操作时(在项目属性中检查了 Encrypted),除了一些程序集信息外,甚至看不到一个可读的文本。它使用了什么加密技术,我们可以在 dotnet(免费或付费)中使用它(或类似的)吗?
解决方案
推荐阅读
- php - 使用 JSON 的 Symfony 4 身份验证
- node.js - Node.js 从 pm2 获取 SIGINT
- python-3.x - 上传到 S3,得到 boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request
- node.js - 如何为 angular 5/nodejs 启用 Access-Control-Allow-Origin?
- excel - 如何打开现有的 Excel 文件?
- python - 需要帮助将 sed 脚本转换为 python 脚本
- javascript - 带有 Babel 和 Webpack 的 IE11 中的“对象不支持属性或方法‘find’”
- postgresql - psql:致命:用户“postgres”的密码验证失败
- java - Spring Boot:@TestConfiguration 在集成测试期间不覆盖 Bean
- .htaccess - htaccess 使用 SSL 和文件扩展名重写非 www