仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 875|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA教程之Java的破解和反破解之道

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:40:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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,那末你还得注重不要用不成靠的加密算法。我本人写
了一个不成逆且牢靠的算法,正在请求专利中....



大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
不帅 该用户已被删除
沙发
发表于 2015-1-21 12:35:38 | 只看该作者
是一种使用者不需花费很多时间学习的语言
蒙在股里 该用户已被删除
板凳
发表于 2015-1-24 16:17:00 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
只想知道 该用户已被删除
地板
发表于 2015-1-25 15:48:50 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
灵魂腐蚀 该用户已被删除
5#
发表于 2015-1-31 12:18:21 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
爱飞 该用户已被删除
6#
发表于 2015-1-31 19:25:30 来自手机 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
谁可相欹 该用户已被删除
7#
发表于 2015-2-1 13:09:45 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
山那边是海 该用户已被删除
8#
发表于 2015-2-1 23:12:43 | 只看该作者
是一种使用者不需花费很多时间学习的语言
老尸 该用户已被删除
9#
发表于 2015-2-6 01:48:14 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
透明 该用户已被删除
10#
发表于 2015-2-7 10:08:48 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
海妖 该用户已被删除
11#
发表于 2015-2-7 17:51:14 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
莫相离 该用户已被删除
12#
发表于 2015-2-18 12:01:17 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
愤怒的大鸟 该用户已被删除
13#
发表于 2015-2-26 17:49:06 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
简单生活 该用户已被删除
14#
发表于 2015-3-10 12:05:54 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
兰色精灵 该用户已被删除
15#
发表于 2015-3-10 22:46:07 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
16#
发表于 2015-3-19 22:06:34 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
飘飘悠悠 该用户已被删除
17#
发表于 2015-3-22 20:11:36 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
冷月葬花魂 该用户已被删除
18#
发表于 2015-3-25 11:54:24 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
柔情似水 该用户已被删除
19#
发表于 2015-3-26 12:36:03 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表