2010-01-05 81 views
0

从我所了解的情况来看,模糊java web应用程序只会让读取应用程序变得困难一些,但逆向工程仍然是可能的。模糊java web应用程序

我的目标就是使它非常难读,而不是有能力反编译和运行(不知道如果可能的话,我想它仍然只是丑陋的变量名??运行)

所以变量名称如:

String username =“asdfsadf”;

将变得

字符串aw34Asdf234jkasdjl_asdf2343 = “asdfsdaf”;

这是正确的:

  1. 公共类和变量保持不变
  2. 唯一的民营串/类/方法可以改名
  3. 串encrytion可以用于像加密密钥一些敏感字符串数据等

真的,我的目标是让别人不能只是反编译和释放代码。

+0

这是什么问题? – 2010-01-05 03:56:19

+0

你是否害怕向世界展示你的代码? :P – shylent 2010-01-05 08:36:41

回答

2

这里的问题是,编译代码时需要使用正确的java语法。因此,无论您使用什么模糊处理,只要能够访问字节码,我都可以找出重构源代码的方法。

http://www.program-transformation.org/Transform/JavaDecompilers#Java_Bytecode_Decompilers

什么,你需要做的就是保持软件的专有部分,使得你的海盗将无法看到它的地方。据我所知,这是避免劫持你的软件的唯一方法。

3

有很多好的Java混淆器可以完成你所说的,等等。下面是一些来自谷歌:

虽然这使它更难以阅读反编译的代码(和一些反编译器将拒绝甚至尝试) ,请记住它是总是如果他们有二进制代码,并且知识丰富且足够耐心,那么有可能对代码进行反向工程。

+0

只是为了重申,反向工程源仍然会被混淆。 – 2010-01-05 04:05:46

+0

反编译的代码会被混淆; *反向工程*通常指的是“手工反编译”的代码,这对于混淆字节码来说很难做到。 – 2010-01-05 04:19:08

1

您无法禁止反编译和运行Java代码。即使被混淆了,尽管存在混淆,但仍然有人能够弄清楚你的代码在做什么。 您发布的所有内容都可以进行反向设计。

在其他语言中,为了防止反编译和调试,例如磁盘拷贝保护解决方案,甚至他们经常被反向工程化和被黑客入侵,其存在更多的努力。

如果你不想让人们对你的代码进行逆向工程,只让它运行在服务器端,不要发布它并尽可能地强化服务器。

+0

“您发布的所有内容都可以进行反向设计” - 正确。关键是反向工程的成本是多少。 – 2010-07-02 20:27:53

5

Web应用程序运行服务器端。客户不会看到代码,除非你搞砸了。

0

没有任何模糊处理可以保护您免遭“反编译&再次编译”(无需试图了解代码的作用)。反编译器不关心不可读的变量名,也不关心编译器。

顺便说一句,如果有人有权访问您的代码,他们不需要反编译使用它。

所以问题是:你想达到什么目的?当你知道这一点时,你可以去下一个问题:它需要多少钱,我可以赚多少钱?

通常,这个等式是:你不能从混淆中保存/赚取任何钱,但这样做会花费你的时间和金钱(好的混淆器不是免费的)。所以这是一个负面的投资回报率。

相反,尝试这种方法:创建一个优秀的产品(让人们觉得它是合理的付费),快速修复错误( - >盗贼必须一次又一次地盗取你的工作以保持连续),添加新功能。这样,诚实的消费者有理由向你购买。

如果你打算从盗贼和罪犯那里得到钱,那么忘了吧。无论如何,他们都不想付钱给你。你可以让自己的生活变得更艰难,但需要付出代价。