UTF.COM.CN

浅谈JAVA程序破解

作者:佚名 | 来源:网络 | 添加时间:2006-02-22 11:57:47 | 人气:2214

浅谈JAVA程序破解(2)

modifyMethod方法用来在类的指定方法中插入一行或多行代码,参数为a时表示插在方法现有代码的最后面,为b时表示插在方法现有代码的最前面,为i时表时插在代码的指定行的前面,这个行和原代码中的行没有关系,插入位置要插入一次才能确定,为i时返回的值代表实际插入位置,由这个实际插入位置你可以计算i的值。在实际破解中发现,用该方法插入一些代码后,会使原来反编译的不可读的代码变的容易读懂,当然,也有可能使本来可读性很强的代码,因为你插入了一些语句而变得不可读。我常常在关键方法的代码中插入一些 System.out.println();这样的代码来跟踪程序,还有一点限制,你不能直接用打印输出的方法来输出方法体内的局部变量,但你可以对全局变量进行引用操作。 

    如果要操作局部变量,目前我所知的方法只能在该类里重建该方法,如果那位有其它的好办法,也请指点我一下。

    addMethod方法在是类中增加一个新的方法,增加的方式有两种,这里就不做具体介绍。

    其它方法也就不一一解释了,有兴趣的朋友可以研究一下javassist,相信你会写出功能更强大的修改class文件的类库。

    四、class的修改

    在破解过程中经常会看到rsa非对称加密算法,公钥往往以十六进制存放在class文件中,(当然,也有对公钥加密后存放在配置文件中的程序)以便解密已经加密过的信息。前不久破解的一个J2EE的开发平台就是这样的,license用RSA加密,在搞懂了它的算法后,自己构件license明文,自己再生成一对rsa的公私密钥,用自己的私钥对license文明进行RSA加密,再用十六进制编辑器替换程序中所有的公钥,(当然是用你的公钥替换他的公钥,不然也没法解密)一切就搞定。当然,我所说的只是一个方面,有时暴破时可能还得用到一些JVM的指命,比如你想让一个 return false 的方法 return ture
那你就得把相应位置的03 AC改为04 AC,位置怎么确定就不用我说了吧!

    五、读JVM指令

    没有什么可以多说的,如果要从jvm指令看懂成程,必须像熟汇编一样熟悉jvm指令集,还得有一个工具把class翻译成jvm指令代码,总不能用十六进制编辑器读代码吗?如果真是,那你就太牛了。我这里介绍 bcel 这个工具,它可以把class解释为jvm指令集并存为html文件,结果就像下面:

    0  getstatic            System.out Ljava/io/PrintStream;

    3  ldc                  "is one"

    5  invokevirtual        java.io.PrintStream.println (Ljava/lang/String;)V(String):void

    8  getstatic             System.out Ljava/io/PrintStream;

    11  ldc                  "is two"

    13  invokevirtual        java.io.PrintStream.println (Ljava/lang/String;)V(String):void

    16  getstatic             System.out Ljava/io/PrintStream;

    19  ldc                  "is three"

    21  invokevirtual        java.io.PrintStream.println (Ljava/lang/String;)V(String):void

    24  getstatic             System.out Ljava/io/PrintStream;

    27  ldc                  "is four"

    29  invokevirtual        java.io.PrintStream.println (Ljava/lang/String;)V(String):void

    32  return

    这是一个方法的全部指令,熟悉jvm指令集的话就已经能读懂它在做什么了

    发现有关JAVA程序破解的文章不是很多,所以本人粗浅的谈论了一下JAVA程序破解时所用到的一些方法,当然,还有很多

    凭经验才能找到的灵感,无法一一列举,本文质在抛砖引玉,望高手能写一些技术含量更高的文章供我们这些菜鸟学习。

责任编辑:冬天来了
【字号: 】【去论坛讨论】【发表评论】【打印本文】【告诉好友】【关闭窗口
网友评论(评论内容只代表网友观点,与本站立场无关!)

姓名:

验证码: 点击刷新