Reg*_*ser 23 java decompiling source-code-protection
我知道,这里有很多类似的问题.我不是在问我是否可以保护我编译的Java类 - 因为很明显你会说"不,你不能".我在问什么是保护Java类不被反编译的最着名的方法?如果您知道该领域的任何研究或学术论文,请告诉我.如果您使用过某些方法或软件,请分享您的经验吗?任何类型的信息都非常有用.谢谢.
Syn*_*r0r 16
首先,如果你的目标"只" Windows的市场有一个非常简单的防止"的.class来的.java"编译:使用像怡东喷气一种工具,将改变的.jar中的.exe文件.
这是万无一失的:如果你使用Excelsior Jet,那么就不可能得到.java文件了(所以人们都说"不可能阻止反编译.class文件").当然,攻击者可以启动SoftIce并尝试跟踪你的.exe,但这比使用JAD将.class反编译为.java有点棘手,它肯定不会允许找回.java文件.
现在也许你的目标是OS X和Linux,或者你没有为Excelsior Jet解决问题.
我正在写一个用Java编写的商业软件.如果有互联网连接,该软件才有意义.因此,我们"保护"我们的软件,其中包括在服务器端进行部分计算:我们有几个.class,除非它们是从服务器端生成的,我们将它们发送到线路上不能工作(并且在线上发送的内容总是不同的:我们在服务器端生成唯一的,一次性的.class文件.
这需要互联网连接,但如果用户不喜欢我们的软件如何工作,那么他可以自由购买我们的竞争对手的劣质产品;)
反编译不会有太大的好处:你主动需要破解软件(即重现服务器端发生的事情),否则你将无法使用它.
在使用Proguard 之前,我们使用自己的"字符串混淆" .我们还做了源代码检测(我们也可以完成字节码的检测),我们从代码中删除了很多东西(比如我们注释掉的"断言")并引入一些随机的"代码流混淆"[该软件可以采取不同的路径,但获得相同的结果,这是真正使软件难以追踪的东西]).
然后我们使用Proguard(它是免费的)来展平我们所有的OO层次结构并混淆已经代码流和字符串混淆的代码.
所以我们的流程是:
除此之外,我们发布非常规则(和自动化)更新,总是确保修改我们的客户端/服务器保护方案(因此每次发布时,一个低位的攻击者必须从头开始).
当然,更容易放弃并思考:"我无法做任何事情来让攻击者的生活变得更加艰难,因为JAD无论如何都能找回.java文件"(在这种情况下,这是非常有争议和明显错误的情况)您使用.class到.exe转换器来保护您的.class免于反编译).
| 归档时间: |
|
| 查看次数: |
19526 次 |
| 最近记录: |