知识大全 反编译、破解JAVA软件的方法、实例与经验
Posted 知
篇首语:习惯形成性格,性格决定命运。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 反编译、破解JAVA软件的方法、实例与经验相关的知识,希望对你有一定的参考价值。
反编译、破解JAVA软件的方法、实例与经验 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
前几天得到一个用JAVA编写的压缩软件iavaZip 虽然好用可惜是个试用版本 限定的时间一到就不能 用了 能不能把这个软件据为己有呢?本人试图破解它 在不到半个小时的时间里 成功破解了这个JAVA 软件的注册码 下面现把这个破解的方法和过程向大家做个详细的介绍 一 破解工具准备 要破解JAVA软件 必须要反编译用JAVA编写的类文件 由于网上大虾们的支持 许多反编译软件被研制出来 其中 我经常使用的是 cavaj Java Depile Java源代码反编译专家(该软件支持目录编译) JAD 这三个软件各有优缺点 前二个软件是GUI界面 使用起来很方便 尤其是 Java源代码反编译专家 支持 目录编译 用起来很得心应手 第三个软件JAD功能最强 由于是字符界面 但是相对初学者比较难一点 二 破解步骤 首先分析批处理文件 找到第一个调用的CLASS 在分析iavaZIP 软件的iavaZIP bat 我把最重要的一句COPY到下行 sfs app iavazip iavaZIP % % % % % % % % % 可以知道 在\\sfs\\app\\iavazip 的目录下的iavaZIP CLASS就是被调用的第一个CLASS 反编译第一个CLASS 分析MAIN方法 寻找版本控制的代码段 我用 cavaj Java Depile 编译iavaZIP class文件 很快就可以得到该软件的JAVA代码 main方法的全部代码如下 public static void main(String args[]) iavaZIP iavazip = new iavaZIP (args); if(iavazip isExpired()) System out println( iavaZIP trial time has expired Please purchase and enter licence key ); for(_cls _lcls = new _cls (iavazip true); _lcls expirationFrame isShowing();) try Thread sleep( L); catch(InterruptedException _ex) if(_cls isSerialRegcode(((_cls ) (iavazip )) res getProperty( user id ))) iavazip _fld remove(iavazip _fld ); iavazip _fld add( Right iavazip _fld = iavazip _fld = new _cls (iavazip )); iavazip _fld validate(); else iavazip dispose(); System exit( ); iavazip show(); 很明显 iavazip isExpired()就是版本控制的代码 分析版本控制的语句 找到破解的方法 由于isExpired()的方法的代码如下 public boolean isExpired() return !_cls isSerialRegcode(super res getProperty( user id )) && Long parseLong(super res getProperty( magic )) + magicTime < System.currentTimeMillis(); 看了\\sfs\\app\\iavazip20的所有文件,由于该文件夹中的文件都是从1-66之间的整数问文件名,“class”为扩展名的类文件,分析“!_cls66.isSerialRegcode”的方法是破解的关键类应该就是66.class文件 。.wiNgwIT.Com试图用iavaj反编译该文件,居然不能反编译得到。改用JAD命令 “ jad -p 66.class > java 得到部分编译后代码 摘录如下 public class _cls public _cls () public static boolean isSerialRegcode(String s) if(s == null) return false; boolean flag = true; if(s length() != ) flag = false; if(flag) long l = Integer parseInt(s); if(l == L) flag = false; if(flag) flag = false; for(int i = ; (long)i <= 9L; i++) if(_fld0[i * 2] <= l && _fld0[i * 2 + 1] >= l) flag = true; return flag; private static long _fld0[]; private static final long _fld1 = 10L; static _fld0 = new long[20]; _fld0[0] = 0xd3f3471L; _fld0[1] = 0xd3f34d4L; _fld0[2] = 0x1653939L; _fld0[3] = 0x165399cL; _fld0[4] = 0x313abcc9L; _fld0[5] = 0x313abd2cL; _fld0[6] = 0x320aa371L; _fld0[7] = 0x320aa3d4L; _fld0[8] = 0x11761f91L; _fld0[9] = 0x11761ff4L; _fld0[10] = 0xd52b0b9L; _fld0[11] = 0xd52b11cL; _fld0[12] = 0x391d5681L; _fld0[13] = 0x391d56e4L; _fld0[14] = 0x196c9351L; _fld0[15] = 0x196c93b4L; _fld0[16] = 0x185a2d39L; _fld0[17] = 0x185a2d9cL; _fld0[18] = 0xc0053a1L; _fld0[19] = 0xc005404L; 代码if(s.length() != 9),表明sn的长度必须是九位。 代码 long l = Integer.parseInt(s); if(l == -1L) 表明sn必须是数字,而且是九位数字。 代码:for(int i = 0; (long)i <= 9L; i++) if(_fld0[i * 2] <= l && _fld0[i * 2 + 1] >= l) flag = true; 表明,sn必须是小于—fld0[]数组中相邻数组的值,sn共有10组。 我们注意到 _fld0[0] = 0xd3f3471L; _fld0[1] = 0xd3f34d4L; 用计算器计算_fld0[0]和_fld0[1]的十进制,得到 _fld0[0]=22246001 _fld0[1]=22246100 也就是你把SN输入为22246001 - 22246100 中的任何一个数字都是合法的序列号。 4。经验总结 1。要选择不同的工具进行反编译, 2。破解软件的目的是为了学习软件编写的思想和方法以及个人使用,而不是用于达到商业目的。 3。有好的见解和方法可以和我联系 cha138/Article/program/Java/JSP/201311/19278相关参考
Java的破解和反破解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java字节码能够很容易被
谈谈JAVA的反编译 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者因最近分析一些JAVA程
JAVA语言安全行研究--Java的反编译 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Jav
研究Java的反编译性 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
防止JAVA代码被反编译的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们都知道JAVA
如何防止JAVA程序源代码被反编译 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们都知道JA
鉴于任何程序都运行cpu指令并可被反编译成汇编码也就是说理论上程序都是在裸奔所以天下无不可破之程序所以这里讨论的防止只是一定程度上的比如提高破解难度拖延时间让破解者挫折感增加等等 一pb的现状
JAVA虚拟机实例学习笔记一 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编译顺序
知识大全 ildasm破解和用ilasm来重新编译VB.NET程序
ildasm破解和用ilasm来重新编译VB.NET程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
javap是JDK自带的反汇编器可以查看java编译器为我们生成的字节码通过它我们可以对照源代码和字节码从而了解很多编译器内部的工作语法 javap[命令选项]class javap命令用于解