问题标签 [obfuscation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
3261 浏览

obfuscation - 小型供应商的软件保护

这是我们都必须在某个时候考虑的问题。

经过多年和许多方法之后,我倾向于总体上同意这样的说法:“对于任何数百人使用的受保护软件,您都可以找到破解版。到目前为止,每个保护方案都可以被篡改。” 您的雇主是否强制使用反盗版软件?

此外,每次我发布有关此主题的信息时,都会有人提醒我;“首先,无论你采用什么样的保护措施,一个真正敬业的饼干最终都会通过所有的保护屏障。” 对于单个开发人员来说,什么是最物有所值的 c# 代码保护

因此,尽管有这两个广泛正确的免责声明,让我们谈谈“保护”!

我仍然觉得对于不太可能吸引熟练破解者的时间和注意力的小型应用程序,保护是一项值得的练习。

很明显,无论您做什么,如果破解者可以通过修补应用程序来切换 IF 语句 (jmp) 的结果,那么世界上所有的密码和加密狗都无济于事。

所以我的方法是使用以下产品通过虚拟化混淆代码: http ://www.oreans.com/codevirtualizer.php 我对这个产品非常满意。据我所知,它从未被击败过。我什至可以用 PEcompact 压缩可执行文件还有其他人有这方面的经验吗?

除了 EXEcryptor 的问题之外什么都没有 http://www.strongbit.com/news.asp 即使该网站使用起来也很头疼。编译的应用程序在执行任何 WMI 调用时都会崩溃。

这种方法允许您使用混淆来包围较小的代码部分,从而保护安全检查等。

我使用在线授权方法,因为应用程序需要定期从服务器获取数据,因此用户长时间离线使用它是没有意义的。根据定义,该应用程序在这一点上毫无价值,即使它已被破解。

所以一个简单的加密握手就足够了。我只是偶尔在混淆保护中检查它。如果用户在另一台机器上安装应用程序,则在启动时会上传新 ID,服务器会禁用旧 ID 并返回新授权。

我还使用已编译应用程序的哈希值,并在启动时检查它是否有任何更改,然后从应用程序内将应用程序作为文件(带有读取锁)打开,以防止任何人在启动后更改它。

由于所有静态字符串在 .exe 文件中都清晰可见,因此我尝试使用通用的错误消息等。您不会在任何地方找到字符串“授权失败”。

为了防止内存转储,我使用了一种简单的文本混淆技术(例如 XOR 每个字符)这使得内存中的纯文本数据更难与变量等区分开来。

当然,对于任何真正敏感的数据都有 AES。我喜欢文本的计数器模式,因为这不会导致重复序列显示底层数据(如一系列空白)。

但是使用所有这些技术,如果可以从内存中转储密钥或初始化向量,或者绕过 IF 语句,那么一切都被浪费了。

我倾向于使用 switch 语句而不是条件语句。然后我创建了第二个函数,它基本上是一个死胡同,而不是实际执行所需任务的函数。

另一个想法是编写添加了变量的指针。变量是授权的结果(通常为零)。这将不可避免地在某个时候导致 GPF。我只在一些较低级别的授权失败后才将其用作最后的手段,否则真正的用户可能会遇到它。然后,您的软件的声誉就会降低。

你使用什么技术?

(这不是一个讨论实现某事的优点的线程。它是为那些决定做某事的人设计的)

0 投票
4 回答
3164 浏览

asp.net - 混淆 .NET Web 应用程序

是否可以混淆 .NET Web 应用程序?我尝试使用 Visual Studio 2005 附带的 Dotofuscator 工具,并且能够混淆预编译网站的 dll,但是当我将灵魂部署到 IIS 服务器时,我无法处理应用程序的页面。

所以问题是:你们中的任何人都能够混淆一个完整的 .NET Web 应用程序吗?

感谢您的回答

编辑:我混淆了 bin 文件夹中的所有 dll。该站点是在不允许更新 aspx 文件的情况下构建的。之后,当我转到http://serveradress/main.aspx时,我收到一条错误消息,指出 main.aspx 不存在

PD:我需要混淆代码,因为应用程序会执行一些许可证检查,并且我想让删除许可证检查代码变得更加困难

0 投票
2 回答
7483 浏览

.net - 混淆混合 .NET DLL 的最佳产品

我有一个 .NET DLL 和应用程序。DLL 是用 C++/CLI 编写的,它是“混合的”,即部分托管代码和部分本地代码。

我有两个目标:
1. 混淆所有托管代码,使其无法被反汇编
2. 混淆混合 DLL 的公共方法/类,以便没有人可以在自己的应用程序中使用 DLL,即打乱公共名称。

是的,我知道混淆并不完美,人们仍然可以弄清楚并等等。这两个目标是管理要求。我发现的唯一可以处理这个问题的应用似乎是 Dotfuscator Professional Edition。不幸的是,它是那些非常烦人的应用程序之一,您必须乞求推销员告诉您价格。有谁知道另一种解决方案,或者知道购买便宜的合法副本的好地方吗?

不要告诉我用托管代码重写 DLL,这需要一个月的工作,而且我永远不会得到批准。:-)

请注意,我对混淆的效果并不特别偏执。任何打乱应用程序中所有方法和类的名称的东西都可能足够好。

以下是我尝试过的其他混淆器:

  • Dotfuscator 社区版随 Visual Studio 2008 提供,但不支持混合程序集。

  • Eazfuscator .NET 简单且免费,但不支持混合程序集。

  • {smartassembly} 的单个许可证为 500 美元。它有一些有趣的特性,但不支持混合程序集。

  • 蝾螈是800美元。声称完全支持混合程序集,但每当我尝试使用混淆的 dll 时,应用程序就会崩溃

  • .NET Reactor 的单个开发人员许可证价格为 180 美元。它支持混合 DLL 的“部分”混淆。不幸的是,如果你混淆了DLL 上的公共类型,它就不起作用,.exe 找不到类。它具有将 DLL 合并/打包到 .exe 中的能力,但是当您使用混合 DLL 执行此操作时,它不起作用(exe 找不到 DLL 的程序集,即使它是 .exe 的一部分)

  • Skater 是 300 美元的单张执照。我在他们的网站上没有看到任何声称它支持混合程序集的东西,而且我厌倦了尝试应用程序却只是感到失望,所以我假设它不支持。

我还尝试过 Microsoft 的 ILMerge,看看我是否可以将 DLL 与 .exe 合并,然后进行混淆,但似乎混合 DLL 也会窒息。

对于 Dotfuscator 的替代品或购买合法副本的好地方有什么建议吗?我发现几个无名网站声称卖得便宜,但我认为那些是俄罗斯盗版版本。

0 投票
0 回答
4811 浏览

asp.net - 保护 ASP.NET 源代码

我目前正在研究如何最好地保护我的源代码,以便没有外部各方可以查看和使用我的代码。

通过浏览网页,我想到了一些想法,即

1) 将网站发布到 DLL 中

2) 代码混淆器

3) 第三方

但是我发现没有一个得到很好的解释或详细说明如何实现这一点。这里的任何人都可以对这个话题有所了解吗?

提前致谢

0 投票
7 回答
2215 浏览

c# - 方法名称会编译到 EXE 中吗?

将 Windows 应用程序项目编译为 EXE 后,类、方法和变量名称是否包含在 MSIL 中?

  • 对于混淆- 更少的名称,更难逆向工程。
  • 并且为了性能- 更短的名称,更快的访问。

例如,如果方法是通过名称调用的:

  • 保持名称简短,命名查找的性能更好。
  • 保持名称神秘,更难反编译。
0 投票
8 回答
13816 浏览

c# - 源代码级别的混淆比混淆器更有效?

从我的最后一个问题中学习,大多数成员名称似乎都包含在项目输出中。

看看一些反编译器,如9raysSalamanderJungle,许多混淆技术似乎已经被打败了,有一个特别可怕的说法:

自动删除混淆器注入的字符串加密 ~ Salamander

那么手动的源代码级别的混淆是否比众所周知的(容易被击败的??)混淆程序进行的编译后/中间编译起泡的“表面”混淆更有效?

0 投票
7 回答
4230 浏览

.net - 向您的 .Net Web 应用程序添加许可证

我目前正在考虑添加一些许可类型的软件来保护我的 .net Web 应用程序源代码。想知道你们是否有这方面的经验,并且可能知道提供此类实用程序的任何公司或来源?

所以我的主要目标是保护实际文件

即 Default.aspx Default.aspx.cs .... 将来会被复制,而我无法阻止他们使用它。

谢谢

编辑:通过阅读回复,我似乎认为混淆器似乎是要走的路。混淆器程序仅适用于 exe 或 dll 还是也适用于单个页面?

0 投票
10 回答
9343 浏览

sql - 如何混淆 SQL Sprocs?

有没有办法隐藏/保护/混淆 MS SQL 存储过程?

0 投票
7 回答
4781 浏览

javascript - 您将如何对此进行逆向工程?

我有一些代码位于 javascript 中的 php 文件的底部。它经历了许多奇怪的扭曲,比如将十六进制转换为 ascii,然后进行正则表达式替换,执行代码等等......

有没有办法在它实际执行之前找出它正在执行的内容?

代码在这里:

http://pastebin.ca/1303597

0 投票
3 回答
1058 浏览

.net - dotfuscator 减慢执行速度?

我刚刚发现我的程序在通过 dotfuscator 社区版时执行速度降低了 5%。

这正常吗?dotfuscator 的替代品(免费)是什么?