本文目录
- 什么是Java混淆编译器
- java反编译器是什么,干什么用的;混淆器是什么,有什么用
- 有人使用过 Zelix KlassMaster进行混淆吗
- 有没有好的 python 混淆器 推荐一个
- proguard 混淆器怎么用,请教
- java混淆器是做什么的
- asp.net有什么好的加密混淆工具
什么是Java混淆编译器
由于Java程序运行时是动态连接的,因此编译成的目标文件中包含有符号表, 使得Java程序很轻易被反编译,混淆器可以打乱class文件中的符号信息,使反向工程变得非常困难。
java反编译器是什么,干什么用的;混淆器是什么,有什么用
反编译器就是将.class文件变回原来的java源程序文件
不会冲突
混淆器可以打乱class文件中的符号信息,使反向工程变得非常困难。
有人使用过 Zelix KlassMaster进行混淆吗
你要的功能其实是Java代码混淆,如果要了解Java编译成exe,可以看“参考资料”。下面一段文字摘自《Java手机/PDA程序设计入门》一书,可以做为混淆器性能的大致观点:笔者没用过DashO,所以无法对其作出个人评价。所以现在仅说明笔者曾用过的产品。以笔者的个人观点,如果就混淆的程度来说,ZKM最好,JAX中等,RetroGuard和ProGuard最差,一分钱一分货,这是千古不变的道理。如果就功能性而言,ZKM和JAX都不错,不过,JAX是IBM所开发的产品,因此也继承了大部分IBM产品的最大特色,就是“功能超强,可是不易使用”,可能光是要看完JAX的设定文件就是一个很大的问题。下面分别介绍几种具有代表性的混淆器,对它们的产品性能进行对比。我们使用不同混淆器对同一段java代码进行混淆,分别列出混淆后代码反编译的结果,并给出使用的一些直接体会。原始java代码:publicclassSimpleBeanimplementsSerializable{privateStringname={“name0“,“name1“,“name2“,“name3“};privateListmyList=null;publicvoidSimpleBean(){myList=newArrayList(4);}publicvoidinit_public(){myList.add(“name“);for(inti=1;i;JVMINSTRdup;JVMINSTRswap;4;ArrayList();_$1;}publicvoidinit_public(){_$1.add(“name“);for(inti=1;i《4;i++)_$1(i);}privatevoid_$1(inti){_$1.add(_$2[i]);}privatevoidwriteObject(ObjectOutputStreamobjectoutputstream)throwsIOException{}privateString_$2;privateList_$1;}优点:1、除符号混淆外增加了数据混淆(字符数组初始化);2、有一些语句反编译只能得到字节码指令;3、在SunJDK中提供的Java编译器(javac)的基础上完成,编译和混淆一体完成,不需要先生成class文件再混淆;4、提供了Eclipse的插件,能够直接在Eclipse中使用Jocky。缺点:1、混淆选项粒度较粗,使用中可能要在具体代码中添加@preserve指令来实现,工作量大;2、没有控制流混淆。三、Allatori3.1_demoAllatori属于第二代混淆器,具有全方位保护你的知识产权的能力。Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串编码,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。2.1版本支持war和ear文件格式,并且允许对需要混淆代码的应用程序添加有效日期。Jad反编译混淆后class得到的代码:publicclassSimpleBeanimplementsSerializable{publicvoidinit_public(){d.add(c.k(“{u{0“));inti=1;goto_L1_L3:H(i);++i;_L1:4;JVMINSTRicmplt21;goto_L2_L3_L2:}publicvoidSimpleBean(){d=newArrayList(4);}privatevoidH(inta){d.add(c[a]);}publicSimpleBean(){d=null;}privatevoidH(ObjectOutputStreamobjectoutputstream)throwsIOException{}privateStringc={c.k(“\177q\177te“),c.k(“\177q\177td“),c.k(“\177q\177tg“),c.k(“\177q\177tf“)};privateListd;}注:c.k是为进行字符串加密额外生成的类c的静态方法。优点:1、设计考虑了库文件混淆的使用场景;2、使用文档详尽,混淆选项配置文件的编写示例多;3、除符号混淆外,还使用了两种高级的混淆手段:控制混淆(改写了for循环)和字符串加密(String数组初始化);4、混淆选项粒度较细,支持本地方法的保护等;5、支持水印技术,允许对需要混淆的代码添加有效日期;6、支持j2me;缺点:1、商业软件(价格附后),对教育和非商业用途免费(网站链接是
-混淆器
有没有好的 python 混淆器 推荐一个
代码混淆,其实很简单。原理就是查找、替换而已。市面上有很多混淆工具,最好是在混淆工具的基础上,自己再写一下,二次混淆。算法也不难。如果需要全局混淆,以及自动混淆,那么就复杂一些了,需要再加上词法分析和语法分析。-编译器
如何使用:
1,首先得安装Python。
2,把这个下面这个 confuse.py 文件,复制目标文件夹。
3,更改 raw_name_list 列表里的字符串。改成你想混淆的变量名或者类名方法名。
4,运行python confuse.py 即可混淆该文件夹下的.cs文件。
这段代码其实还是很简单的,只是为大家说明一下混淆思想。如果想更方便的使用,需要再加入一些词法分析、语法分析的算法。
代码如下:
#! /usr/bin/env python
#coding=utf-8
import hashlib
import random
import os
###############################
# Describe : 混淆Unity脚本文件
# D&P Author By: 常成功
# Create Date: 2014-11-25
# Modify Date: 2014-11-25
###############################
#想混淆的变量/方法名
raw_name_list = [“function_1“, “function_2“, “var_1“, “var_2“,]
#混淆后的变量/方法名
new_name_list =
#随机可选的字母表
alphabet = [“a“, “b“, “c“, “d“, “e“, “f“, “g“,
“h“, “i“, “j“, “k“, “l“, “m“, “n“, “o“, “p“, “q“,
“r“, “s“, “t“, “u“, “v“, “w“, “x“, “y“, “z“,
]
#生成新的变量名
def create_new_name() :
m = hashlib.md5()
#生成随机变量名
for raw_name in raw_name_list:
m.update(raw_name)
#生成一个16位的字串
temp_name = m.hexdigest()[0:16]
#合法名称校验
#强制以字母作为变量/方法名的开头
if temp_name.isdigit():
initial = random.choice(alphabet)
temp_name = initial + temp_name
temp_name = temp_name[0:16]
#不能重名
while(1):
if temp_name in new_name_list :
initial = random.choice(alphabet)
temp_name = initial + temp_name
temp_name = temp_name[0:16]
else:
new_name_list.append(temp_name)
break
#混淆文件
def confuse_file(path_filename):
file_content = ““
#读文件内容
f = file(path_filename)
# if no mode is specified, ’r’ead mode is assumed by default
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
break
#混淆
name_index = 0
for raw_name in raw_name_list:
the_new_name = new_name_list[name_index]
line = line.replace(raw_name, the_new_name)
name_index += 1
file_content += line
f.close()
#重写文件
f = file(path_filename, ’w’)
f.write(file_content)
f.close()
#遍历当前目录下的所有.cs文件
def confuse_all():
#获取当前目录
dir = os.getcwd()
for root, dirs, filename in os.walk(dir):
for file in filename:
path_filename = os.path.join(root, file)
if path_filename.endswith(’.cs’):
confuse_file(path_filename)
print “Confuse File: “, path_filename
if __name__==“__main__“:
create_new_name()
confuse_all()
#打印一下混淆的情况.
#如果用文本保存起来, 那么以后可以反混淆, 还原文件
print “Start Confuse ....“
for j in range(0, len(raw_name_list)) :
print raw_name_list[j] , “ --》 “ , new_name_list[j]
print “Confuse Complete !“
proguard 混淆器怎么用,请教
(1)、从网上download proguard工具,proguard工具主要包含是几个jar文件和一些example,
(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.**
-混淆器
java混淆器是做什么的
楼上只说了其一,没说其二: 混淆器的还有一个作用那就是对代码进行压缩,比如一个j2me程序打完包是400KB,使用混淆器混淆后就被压缩成100KB的文件,这对于手机这种内存空间比较宝贵的设备来说显得尤为必须。
-编译器
asp.net有什么好的加密混淆工具
.net软件加密锁,可试试德国的威步,威步(WIBU)信息系统的软件加密狗,还能申请免费试用版。
加密锁:威步(WIBU)的CodeMeter,AxProtector(for.net)两款软件加密锁性能非常不错
混淆的问题,与传统的代码混淆工具(Obfuscator)不同,AxProtector可以完全阻止对.NET 程序集(由 C#, VB.NET, Delphi.NET, ASP.Net… 等语言编写)的反编译。通俗的讲,AxProtector在破解者和您的 .NET 代码之间构建了强大的防破解保护屏障,生成一个基于 Windows 的而不是基于 MSIL 的兼容格式文件。原始的 .NET 代码完整的被加密后封装在本地代码内,无论何时都不会释放到硬盘,对于破解者是不可见的。
与单纯的.net加密软件不同,AxProtector与CodeMeter硬件加密狗配套餐使用,采用了更为严密的密钥管理,及最先进的AES、RSA、ECC等加密算法存储或传输密钥,保证通讯安全。
.Net代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的.class 文件可以非常轻易地被反编译。一般软件开发商会采用一种叫做混淆器的工具。混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。由于混淆器只是混淆了方法名称或流程,而不能防止源代码被反编译,因此混淆器的作用只是增加了反编译的难度,最终的结果也是治标不治本。对于一些掌握工具的人来说几乎还是透明的。AxProtector是一款真正意义的加密源代码、防止反编译的.net软件加密软件。
AxProtector加密了.net原代码,任何时候原代码都不可能被还原到硬盘当中。采用AxProtector加密后的.net代码只有在程序调用或执行某一段函数的时候,才能通过AxProtectorClass在内存中解密后返回到程序中执行,运行之后迅速立即加密。这种随机加密、按需解密原代码的功能,能很好的防止.Net程序的反编译,同时能够很好地防止API加密点被摘除。有效地保证了源代码的执行效率和安全性。
-混淆器