JAVA代码混淆

代码混淆技术:一种重要的软件保护方法

技术原理: 对程序P进行保持语义的变换成T 功能等价

作用: 经过混淆后程序更难被静态分析和逆向工程所工具

应用范围: 1.分布式计算和软件保护
2.算法保护和DRM

3.同形加密

外形混淆 主要目的是改变源程序的格式信息 单向变换 如最初格式没有保存则无法恢复 常用
更加变量
类 函数等名和删除程序注释

控制混淆 增加混淆控制分支以及控制流重组等

1.变量分裂与变量合并 2.数据结构变换 3.静态数据动态生成 4.类继承转换

数据混淆 存储与编码转换、次序转换等
1.聚集变换 2.计算变换 3.排序变换

预防混淆 抵抗特定反编译工具的工具
1.针对特定目标的混淆方案 2.内在的混淆方案

技术相关人员 :李永祥 李长青 kelly Chow Ogiso Appel

相关工具:JIRO Proguard

百度文库相关链接:

1.J?a?v?a?软?件?保?护?的?代?码?混?淆?技?术?研?究?与?实?现
http://wenku.baidu.com/view/60d1f8d184254b35eefd34da.html

2.三种
混淆器的介绍

http://wenku.baidu.com/view/8e517bebe009581b6bd9eb12.html

时间: 2024-10-10 23:56:09

JAVA代码混淆的相关文章

5个常用Java代码混淆器 助你保护你的代码

从事Android App开发的都知道,一旦应用被破解,什么源代码.资源文件等都可能泄露,重要点有so文件的支付类.金融类应用等安全更是容易受到威胁!就Java语言编程,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具有jad .dex2jar .jdec .Dedexer 等.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以用一些代码混淆器混淆代码,保护Java的类文件.然后,在混淆的基础上再做一层深层保护——加密.这个方法现在也比较流行,目前,有这方面技术的,有

Android代码混淆技术

Android混淆是Android开发者经常使用的一种用于防止被反编译的常见手法.Android开发基于java语言的,很容易被别人反编译出来,一下就相当于裸奔了,特别是用于商业用途的时候,防止反编译是必要的措施.而Android混淆的确可以保证Android源代码的一定安全. Android混淆技术 Java类名.方法名混淆 Dalvik字节码包含了大量的调试信息,如类名.方法名.字段名.参数名.变量名等,使用反编译工具可以还原这些信息.由于类名.方法名等通常都会遵循一定的命名规范,破解者很容

Android代码混淆防反编译解决方案研究

做Android开发的都知道要做混淆去防apk被反编译.破解,通过proguard进行Java代码混淆.但是,Android代码混淆真的能起到实质性的作用吗?看下面分析 1.Android代码混淆 如上图,对Android 代码进行混淆后混淆器将代码中的所有变量.函数.类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度. 但是混淆的功效只能运作在APP已经被破解后,而且只是增加破解者的难度时间,对其防止破解的作用意义不是很大. 那么,Android代码混淆不能从根本上防

Android 代码混淆 proguard.flags

在我们编译Android系统的user版本的时候,有时候会出现proguard的错误,在解决这个错误之着,我们需要了解一些知识: 1,proguard是用来干什么的? 简单点说,他就是用来做JAVA代码混淆的一个工具. 2,这个东西在哪里实现的? 我们一般会在Android.mk文件中对其进行支持,比如: 1)指定不需要混淆的native方法和变量的proguard.flags文件 LOCAL_PROGUARD_FLAG_FILES := proguard.flags 2)对使用与不使用进行设定

ProGuard代码混淆

简介 ProGuard是一个开源的Java代码混淆器,下载ProGuardGui工具. Maven Spring Boot ProGuard demo演示 <build> <finalName>${artifactId}</finalName> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-

Android的JS调用Java代码或使用了Javascript相关技术改如何混淆

http://www.androidren.com/index.php?qa=282&qa_1=android的js调用java代码或使用了javascript相关技术改如何混淆 Android 4.2开始 JS调用Java代码的时候必须加上@JavascriptInterface才能调用. 加上@JavascriptInterface之后就必须要考虑混淆时候的问题,如果混淆的时候把@JavascriptInterface搞丢了你的程序就无法调用了. 其实很简单,你只需要在混淆里面加上: -ke

关于java加壳和代码混淆

关于java加壳和代码混淆 在C中,进行代码加密,首要经过加壳的方法.所谓加壳,即是先将程序代码加密,然后用特定的程序加载器,将代码解密后加载进内存,这样能够在避免代码的反编译,当然,有加壳东西,也有解壳东西,尽管不能100%避免crack,但仍然给代码增加一层有力的维护. 然而在Java中,维护代码是件很困难的工作,由于class文件十分标准,很容易反编译,且反编译后的代码明晰可读.常见的维护办法是运用代码混淆器,打乱class和function以及变量的姓名,能够搅扰反编译后的代码的可读性.

Jocky混淆JAVA代码(保护你的JAVA项目)

1.1 什么是Jocky? 我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接.这样,编译后的类文件中将包含有符号表,从而使得Java程序很容易被反编译.相信每一个Java开发人员,都曾经用过诸如Jad之类的反编译器,对Java的class 文件进行反编译,从而观察程序的结构与实现细节.如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题.   于是

JAVA之代码混淆proguard

官方网站用法 http://proguard.sourceforge.net/index.html#/manual/examples.html proguard主要三部分功能 缩减代码.优化代码.混淆代码.三部分功能都可以在配置文件里配置不启用此功能. #Shrink Options #不缩减代码 -dontshrink #Optimization Options #优化代码 -dontoptimize #Obfuscate Options #-不混淆输入的类文件 #-dontobfuscate