重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
想不被反编译是不可能的。混淆器可以吧所有变量名,函数名,类名(系统类,函数名不变)统统用一两个字母代替,可以缩短代码长度,并且被反编译以后难以理解含义增加阅读难度。
创新互联公司是一家从事企业网站建设、做网站、网站设计、行业门户网站建设、网页设计制作的专业网站建设公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点上1000家。
使用混淆器,如RetroGuard。很多开发工具里都有集成。
对Class文件进行加密 为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。
如果你觉得C能保证安全水平更好,那可以加挂 Java 6 开始支持的 Instrument,它可以支持对 class 文件进行解密。
这个就要用专业的源代码加密软件去加密了。因为源代码涉及到的编译环境会相对复杂的。我目前了解到就是德人合科技的加密防泄密系统。
避免最终应用程序中的死代码(注释内的代码)。如果闯入者去掉了对这样的代码的注释,那么代码可能会影响系统的功能性。
放心,你写的代码不值得高手反编译了看。同样,你写的代码可以给初学者学习了用。让更多的人加入到java的行列中来,才能体现出java的价值,才能体现我们这些java人的价值。java要开源,思想要开源。
首先要明确以下两点:不影响被防范的成员(比如新程序员)工作。让其能正常运行、调试、查看日志等。对核心代码封死,需要保护的部分不可见。
无法防止。.class文件的标准是公开的,无法防止别人反编译你的代码。你顶多可以用代码扰乱工具扰乱你的代码,这样反编译的代码就难以阅读。比如可以试试用proguard来扰乱(“加密”)和反扰乱(“解密”)你的代码。
针对反编译,推荐使用CBS赛博锁,通过把安全容器内嵌到操作系统中,对容器内的应用和数据进行加锁,程序和数据在容器内运行,实现最后一米数据安全,防止核心数据被泄露,防止服务器终端中病毒,防止反编译,反破解。
无法防止。.class文件的标准是公开的,无法防止别人反编译你的代码。你顶多可以用代码扰乱工具扰乱你的代码,这样反编译的代码就难以阅读。比如可以试试用proguard来扰乱(“加密”)和反扰乱(“解密”)你的代码。
java本就是开源的,你加密感觉怪怪的。想防止反编译,最简单的方法就是你可以向Jar注入无效代码。比如建一个类,建一个没有意义的方法private class Invalid{ },然后输出为jar。
从理论上来说,如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。
很久前做过一个项目,用很复杂的算法加密 class文件,然后在虚拟机载入前调用解密程序。用的是 jvmti。这样可以防止class loader被反编译导致加解密算法泄漏,应该算比较好的一种解决方案了。