ASM的一个例子(动态字节码生成) (Java高级编程(J2SE综合)) - [Matrix - 与 Java 共舞]

来源:互联网 发布:淘宝店铺怎么提升销量 编辑:程序博客网 时间:2024/05/22 22:49

导读:
用ASM写的Hello World。在网上搜索ASM有关的文章,最后居然又找回Matrix。。汗

ASM2.0字节码框架介绍
http://www.matrix.org.cn/resource/article/2006-02-20/ASM+Bytecode+Framework_44220.html


借助ASM写了一个Aqua Data Studio 6.0的破解:

做法很简单:
1、找到判断license的方法,修改代码使总返回true
2、将1个license线程kill掉。

将jar拷到安装目录,修改datastudio.bat文件的最后一行为:
java -javaagent:ads.crack.jar -cp "./lib/ads.jar;%ADS_PATH%" com.aquafold.datastudio.DataStudio

由于论坛不支持jar文件上传,将文件扩展名改为ads.crack.jar即可。

ads.crack.jar.zip


有时候,如果想要得到程序中某个Class的所有实例,也可以用asm修改代码得到:



问题:如果原始类有、或者没有静态初始化块,处理方法就是不同的。
想了一下,也许可以在visitMethod方法中设置标志,再在visitEnd方法中进行补充处理(针对没有的情况)。
另外,如果有多个构造函数,怎样保证插入的代码不会重复执行呢?
甚至,想要在原代码中插入语句,插入位置的寻找也比较费尽,(需要找到不同的RETURN语句的字节码)

HelloModifyASM.java


本文转自
http://www.matrix.org.cn/thread.shtml?topicId=edd2d10c-a79a-11db-8440-755941c7293d&forumId=1

 

 

原创粉丝点击