Augusto 发表于 2020-8-5 08:45:00

如何处理 .NET 中的逆向工程?

大家好
我在这篇文章中没有什么要说的,因为标题说明了一切
用C#或VB.net编写的程序很容易反编译,这似乎有点令人沮丧
您对这个问题有何看法?您如何试图阻止这种行为<你能告诉我你的经历吗<干杯,奥古斯托
**** Hidden Message *****

JohnK 发表于 2020-8-5 09:14:11

我想您指的是您销售的程序。
我不写。但我的立场是,如果一个人愿意为应用程序付费,那么如果他们需要修复它,他们可能不会真的想要或者关心反编译;他们会发电子邮件来代替。当然,你可以让竞争对手购买并反编译你的程序,但我认为你必须抓住机会。
如果您谈论的是不出售的计划。
在代码托管站点上发布源代码并获得协作者。

zero.half 发表于 2020-8-5 10:46:25

你可以尝试混淆,这可能会使逆向工程不值得付出努力。

JohnK 发表于 2020-8-5 11:36:50

而且无法维护。

Keith™ 发表于 2020-8-5 12:21:44

我不担心。即使是用直接C++编写的程序也能够进行逆向工程。
我有过一个可疑的任务,即对许多软件进行逆向工程,底线是,如果计算机能够理解它应该做什么,那么人类就可以将其重组为可理解的代码。
我使用.NET是因为易于开发(可以说C++或任何其他语言都可以对它们有同样的看法)
反编译器不会在编写代码时重新构建代码,而是在执行代码时重新构建代码。这意味着您的“开关”可能会被重构为一系列“如果”,反之亦然,具体取决于编译器和反编译器如何解释机器代码。这只是一个例子,但我认为你明白了。
使用模糊处理,代码仍然是可读的,但你必须真正弄清楚每个东西是什么和做什么。对于一个经验丰富的程序员来说,这并不是非常困难。
对于编译的二进制文件,逆向工程通常通常有两种形式。一种是他们对代码进行反向工程以出于任何原因对程序进行更改,另一种是它们仅识别单点故障,通常是注册架构,其中应用程序返回注册状态为真或假。后者很容易完成,不容易预防。第一个需要熟悉汇编程序的人,并且可以很容易地将其转换为高级语言或软件来做到这一点。这些人和软件是存在的。除此之外,再也无法超越这一点了。
底线,如果您担心有人窃取您的程序,那么您可能会担心有人窃取您的程序。如果你担心你的潜在客户对它进行逆向工程并使用它,你可能没有向他们收取足够的钱。毕竟,软件上的钱不是你在开发和生产成本上所拥有的,而是产品给最终用户带来的价值。
这就是为什么我现在以每个座位900美元的价格出售AutoCAD插件产品的原因,当时拥有它的最初公司以每个座位30美元的价格出售它。他们没有看到其中的价值,客户也没有看到它的价值。这一切都是用.NET编写的。

huiz 发表于 2020-8-5 15:10:49

如果那些偷窃的程序员能够用混淆的代码创建一个正在运行的程序,那么他们也足以从头开始重建你的想法,并使其变得更好。
最好的方法是成为第一个有好主意的人,并创造一个庞大的用户群。即使别人抄袭你的想法,你仍然是市场领导者。
一点点混淆将有助于平静你的情绪。

Keith™ 发表于 2020-8-5 15:51:34

这都是真的,但有时时间更重要。一家公司与我联系,该公司有一个内部开发的综合应用程序。我要花几个月的时间从头开始重写,并使其正常工作。他们的开发人员死了,不管出于什么原因,他们只能访问部分代码。开发人员也混淆了这一点
我在几个小时内用C#重新构建了代码,手动消除了代码的混淆,将其移植到新的VS项目中,记录了所有内容,进行了必要的更改,并向他们提供了更新的二进制文件和完整的源代码,他们可以在几周内继续进行内部更新<我的服务报酬很高。我本来可以重写它,可能会向他们收取更少的钱,但他们没有时间浪费。当你有数百万美元的合同时,你会做必要的事情<我仍然时不时地为他们做临时项目<说到这里。我即将完成一个我在solo工作了近4年的项目。是的,一个项目,开发了4年。将近2百万行代码。完成测试版测试,现在开始部署。我希望这是我的大发薪日!

Atook 发表于 2020-8-5 22:24:10


太好了,恭喜基思!

Keith™ 发表于 2020-8-6 16:03:50


太好了,恭喜基思

谢谢
我目前正在等待网站完成,然后将开始游戏
凭借2%的美国市场份额(我有那么多预订单),我可能可以花更多时间做我想做的事情。无论如何,这不会是一个愚蠢的改变。

JohnK 发表于 2020-8-6 16:04:56

当您招聘时,请告诉我。
页: [1] 2
查看完整版本: 如何处理 .NET 中的逆向工程?