我们做java开发的一般都会遇到如何保护我们开发的代码问题。java语言由于是基于jvm上面,所以反编译class文件很很容易。假如我们做了一个web程序,并把这个web程序发布给客户。实际上,客户是很容易反编译出我们的源代码出来,包括所有的src文件和jsp文件等等。
那么,如何保护我们的源代码,实际上,应该有几种方法可以使用:1、使用代码混淆器 2、重载应用服务器的classloader
对于第一种方法来说,现在外面有很多开源工具可以使用,个人认为最好用的当属proguard莫属。proguard主要是易用易学。而且提供的功能也挺多。下面是个人一点使用心得
(2)、将里面的几个jar文件添加到类路径下面。当然,也可以不添加,但是下面在做混淆的时候,必须指定classpath,使在做混淆的过程中,能否访问该类
(3)、编写一个配置文件,主要是混淆器的一些参数。比如,下面是一个例子
-injars platform.jar
-outjars platform_out.jar
-libraryjars <java.home>/lib/rt.jar
-libraryjars ibatis-common-2.jar
-libraryjars ibatis-dao-2.jar
-libraryjars ibatis-sqlmap-2.jar
-libraryjars junit-3.8.1.jar
-libraryjars d:/j2ee.jar
-libraryjars struts.jar
-libraryjars commons-lang.jar
-libraryjars D:/0working/coreproject/byislib/jasperreports-0.6.1.jar
-libraryjars commons-beanutils.jar
-printmapping proguard.map
-overloadaggressively
-defaultpackage ''
-allowaccessmodification
-dontoptimize
-keep public class *
{
public protected *;
}
-keep public class org.**
-keep public class it.**
各个参数的含义参考proguard文档,该文档非常详细,上手很容易
OK,到此就完成了代码混淆,打开产生的jar包可以看到,多了好多a、b、c之类的类文件。说明混淆结果已经成功。将原jar删除、运行产生的混淆jar包,一切正常!
常见问题:使用过程中个人遇到了几个问题,开始也是找了很久才解决
a. 内存溢出异常: 主要是proguard在做混淆的时候,吃了很多内存,因此,在运行混淆器的时候,可以增加内存,比如 java -mx512m .....
b.栈溢出异常: 主要是proguard在做混淆的时候,会对一些代码进行优化,若遇到一些相对复杂的方法时,可能会抛出此异常。对付的办法是增加配置参数-dontoptimize,如上面的配置例子所示
对于第二种方法,重载服务器的classloader的原理是这样。 首先我们通过一定算法把class文件加密; 然后写我们自己的classloader,替换服务器的classloader。 这样,我们可以读取class文件,通过我们自己的算法反加密成正确的class,然后再次进行load。
分享到:
相关推荐
9. **源代码保护**:在将代码公开分享时,可以考虑使用代码转换器的混淆或去注释功能,以保护知识产权。 10. **版本控制集成**:部分高级工具还能与Git等版本控制系统集成,方便从代码仓库中直接获取并转换最新版本...
在互联网上,URL(统一资源定位符)是用于定位网络资源的唯一标识,但URL中可能包含各种特殊字符,如空格、逗号、引号等,这些字符在传输过程中可能会引起解析错误或混淆。因此,为了确保数据的正确传输,我们需要对...
9. **代码混淆与反混淆**:考虑到逆向工程的需要,工具集可能包含ProGuard或R8的配置和反混淆工具,帮助理解混淆过的代码。 10. **多设备支持**:由于是整合版,AndroidKiller很可能支持同时连接和管理多个Android...
- `www.pudn.com.txt`:这可能是一个说明文件或者链接,指向更多关于AES算法的信息源,如PUDN论坛的相关讨论。 - `aes_main.c`:这是AES算法的主程序实现文件,通常会包含调用加密和解密函数的示例代码,以及可能的...
3. 代码混淆与保护:学习如何使用混淆器来增加反编译的难度,以及反混淆的技术。 4. 法律与道德:理解软件反编译的法律界限,尊重知识产权,避免非法活动。 5. 黑客技术基础:对于黑客爱好者而言,了解反编译是提高...
8. IDA的高级特性:探讨高级话题,如IDAPython、IDB数据库、颜色标记、调试器集成、IDAPro的网络分析模块(如Hex-Rays Decompiler)以及如何处理加密和混淆的代码。 9. 实战应用:通过实例学习如何利用IDA解决实际...
10. **社区与文档**:查阅易语言相关的论坛、教程和文档,了解常见的隐藏代码技巧和反制策略,也是学习和实践的重要途径。 掌握以上这些知识点,并结合实际案例进行实践,就能够逐步提升在易语言环境中搜索和解析...
在Android开发中,为了增强应用的安全性,开发者经常会使用混淆技术来保护代码,防止恶意攻击者逆向工程分析。"AndroidLibrary,android库混淆字符串.zip" 提供的是一个名为 "StringCare" 的Android库,专门用于处理...
1. **代码分享**:程序员在论坛上分享代码片段时,可以将二进制编译后的程序转换为文本,方便他人复制和研究。 2. **数据交换**:在处理非标准格式的数据文件时,通过"Bin2Asc.exe"将文件转换为文本,可以跨越不同...
4. **理解反编译结果**:反编译出来的代码可能包含混淆和优化,阅读起来会比较困难。你可以使用.NET反混淆工具(如ConfuserEx或dotPeek)来尝试还原代码逻辑。对于.assets资源,理解Unity的资源管理系统和资产流程也...
用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件...
6. **安全措施**:为了防止应用被反编译,开发者可以使用ProGuard或R8进行代码混淆,添加权限控制,以及采用安全的编码实践。 7. **学习资源**:要深入了解APK反编译,可以参考在线教程、论坛讨论(如XDA ...
在保护知识产权方面,混淆代码可以使得代码难以被他人轻易理解或篡改,这对于公开发布的代码尤其重要。通过一系列的算法,它将源代码转换为看似随机的字符序列,降低了代码被反编译或逆向工程的风险。 此外,JS ...
- 使用ProGuard或R8进行代码混淆,提高应用安全性。 - 图片压缩和懒加载策略,减少内存占用,提高应用性能。 通过研究这个开源项目,开发者不仅可以了解Android应用的基本架构,还能掌握如何处理网络通信、数据...
Zend编码是PHP的Zend引擎提供的一种源代码混淆和保护机制。它通过将PHP源代码转换为字节码,然后再进行特定的编码,使得原始代码难以阅读,从而达到保护商业秘密的目的。然而,这种编码并不阻止有经验的开发者或...
此外,有些软件会采用反反编译策略,如使用混淆器使代码难以理解。 7. **道德与法律界限**:在使用反编译工具时,必须遵守软件许可协议。大多数开源软件许可证允许反编译作为学习和改进的一部分,但商业软件的反...
8. **安全性与保护**:为了防止自己的代码被反编译,开发者可以使用混淆工具(如ProGuard或Zelix KlassMaster),它们将源代码转换为难以阅读的形式,增加逆向工程的难度。 9. **社区和资源**:在使用反编译工具时...
它也支持自动化构建流程,如 watch 模式、代码混淆和优化。此外,还有像`pulp`这样的构建工具,提供更友好的工作流和依赖管理。 **社区和资源** Purescript有一个活跃的社区,提供了丰富的库和工具,如控制流库、...
8. **混淆与逆混淆**:许多开发者会在发布应用前进行代码混淆,以增加逆向工程的难度。逆混淆是尝试还原混淆后的代码,这通常需要更复杂的工具和技巧。 9. **安全注意事项**:反编译行为可能涉及法律问题,尤其是在...
然而,由于编译过程涉及到优化和代码混淆,反编译的结果可能并不完全与原始源代码相同,尤其是在处理复杂的控制流程和加密代码时。 使用VBReFormer 2007 Professional需要注意以下几点: 1. 法律问题:反编译他人...