|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。破解java字节码可以很简单被反编译人人都知道啦,明天下战书我为了失掉一个心仪已久的j
builderopentools(今天1.0Released,奇怪出炉!但只能用14天,这怎样行~@@#!@#
!#@!@#%%^@,少说也要140天嘛!),因而我不吝放下其他事情,研讨了一把该软件加密
办法的破解和反破解,分离之前的一些履历,作文一篇与人人共飨,并非勉励人人..
.
破解之道:
现在市情上的javaobfuscator良多(能够从google分类中列出)对照出名的有4thpass的
产物(呵呵,胖友们!KBrowser都用过了吧),不要钱的能够用JODE(JODE便是Obfusc
ator也是Decompiler,还供应源程序,保举初用者利用),一样平常来讲代码侵扰器事情原
理有三种,最后级的有好比Jbuilder自带的(缺省情形下该项功效封闭),能把公有变
量和办法的称号用乱码取代;略微初级一点的能把公然变量和办法也能用乱码取代,通
常是输出你要侵扰的jar和一个剧本(用来把持保存部分,不然你的主程序也不克不及实行了
),有些不必乱码取代变量名,而是间接用Java的关头字,读者大概会感应困惑,实在
这类工具是绕过了Java编译器的限定,输出class或jar(不是源程序),侵扰后输入cl
ass或Jar,固然JVM仍是可以实行的!假如用一样平常的办法这些类文件是没法经由反编译后
修正再用javac或jikes编译的,破解之道是先用反编译软件发编译出来(一切不法变量
名加前缀),然后独具匠心用一样的侵扰器天生修正好的类文件以到达目标;再初级
一点就不是用惯例办法了,一些是针对市情上呈现反编译软件做一些圈套,使得这些反
编译软件不克不及事情;另有一种是本人做一个Java编译器(JDK里也有一个java完成的编译
器),在切合JVM标准的条件下乱编译,一样平常用在applet上,使得一样平常的反编译软件基本
就注释不了。今朝我只能弄弄中等侵扰的程序。
最出名的反编译器有JAD1.58e是用C++写的,前台另有一个Delphi的界面。用它能够很快
的编译,我特地写了一个perl小程序,能够批量编译上千个class。
对一些供应license.key(包括受权信息的加密文件)的软件,一样平常这类文件会接纳DES
,RAS和CRC校验并且通常为二进制的(即便偶然输入成BASE64编码),间接修正文件是浪
费工夫的,你能够先反编译经由过程浏览源程序来探求解密历程,假如历程是可逆的,那末
你本人完成一个加密历程,能够很简单的天生你本人想要的licensekey;假如历程不成
逆也不是就弄不定了,有些强度不年夜的加密算法仍是能够用暴力破解法来弄定,另有一
种情形是对数字加密(一样平常指过时工夫)假如你能修正这个过时工夫那末你就能够多用
一会儿了,用数学办法形貌一下:
假定汇合X是明文包括的元素汇合,Y是X经由算法后的映照,包括密文元素,,假如有
存在两个算法A和B,能使得{Y-A->X}={Y-B->X},A算法可逆,但B算法是不
可逆的,临盆方用A的逆算法加密受权信息(X:String)到(Y:byte[]),并在软件顶用B
算法解密,如许你就弄不定了,但假如汇合X的元素是无限的,假定只要0-9(newDat
e().getTime()格局),那末算法B就称为不成逆但不成靠的,由于你经由过程一个样本(一
般城市给你评价版的license啦!),是能够失掉某些Y汇合中元素在X汇合中的逆映照的
,如许你能够间接用这张映照表来修正license了...
反破解之道:
假如是做产物或供应演示程序,加密仍是有优点的,加密的软件能够用下面提到的JODE
,一样平常都是对编译好的class文件举行侵扰,由于并非一切的标记都必要侵扰,假如你
开辟的是一个类库,大概某些类必要静态装载,那些大众API就必需保存标记稳定,如许
他人才干利用你的类库。先编写剧本对那些必要保存的标记称号举行设置,某些侵扰器
可以调剂字节码的按次,使反编译加倍坚苦。假如你用的代码侵扰器能包管他人不克不及通
过反编译来修正或取代你的class,那末你还得注重不要用不成靠的加密算法。我本人写
了一个不成逆且牢靠的算法,正在请求专利中....
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。 |
|