BTrace系列之四:破解案例
破解思路:使用BTrace可以轻松的对Java软件达到破解的目的。
1.捕捉某些征兆:大家都知道共享软件在未授权的情况下使用,软件开发者未了使得更多的客户购买使用,会强制使用一些手段包括对软件功能进行限制,对软件使用失效进行限制,对软件进行不友好的标注,那么这些就是我们要捕捉的征兆,可是凡是有利就有弊,软件开发者对用种种限制或提示,以此来提醒或者逼迫使用者进行购买使用,确实在某种程度上可以增加软件的销售量,但是也正是因为这些征兆使用软件破解成为一种可能。这些征兆也成为一些不法分子的破解共享软件的入口。
2.使用BTrace进行跟踪:捕捉好征兆后就可以使用BTrace利器对于这些征兆进行捕捉了,主要是通过BTrace将这些征兆的判断逻辑捕获到。
3.修改判断逻辑进行破解:相对来说这一步骤较为简单了,通过步骤2找到了判断逻辑位置,通过对相应的位置进行反编译,然后进行修改即可。或者是使用ASM进行字节码修改。
使用反编译的情况是,字节码没有进过严重混淆,有些共享软件开发者会使用一些工具对字节码进行混淆,不同的工具混淆程度也不一样,同样字典也不一样,但是可以确定的一件事就是反编译的难度加大了,同样导致修改判断逻辑难度加大。
下面就根据上述的思路进行某共享软件的破解。
某软件在未购买软件的情况下使用,会有2小时后自动退出的问题,导致严重影响了客户体验。而且或有不友好的提示。对于我们来说2小时的自动退出就是一个不错的征兆,那么退出自然是通过System.exit(0)来实现的,并且在退出前还有一些提示,那么这样就可以在跟踪到多处System.exit(0)之后,在根据提示信息来进行区分,到底哪些才是我们真正想要的征兆。
使用BTrace脚本:
/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class TracingScript {
/* put your code here */
@OnMethod(clazz="+java.lang.Object", method="/.*/", location=@Location(value=Kind.CALL, clazz="java.lang.System", method="exit"))
public static void trace(@ProbeClassName String className, @ProbeMethodName String methodName)
{
println("*****************************************");
print(className);
println(Strings.strcat(".", methodName));
}
输出:
XXX.XXX.A.G.B
反编译该class
static void B(String paramString)
{
if (N)
return;
N = true;
SwingUtilities.invokeLater(new Runnable(paramString)
{
public void run()
{
JOptionPane.showMessageDialog(null, C.this
+ ", System will exit.");
System.exit(0);
}
});
}
发现是这个方法调用的System.exit(0),接下来就很简单了,只要将该class修改后替换原来的class文件即可。
分享到:
相关推荐
BTrace测试,参考:http://learnworld.iteye.com/blog/1402763
NULL 博文链接:https://sswh.iteye.com/blog/1820391
Btrace:java性能调优及问题追踪工具 Btrace:java性能调优及问题追踪工具
btrace btrace btrace btrace
1.btrace扩展是在btrace已由功能上进行的扩展,原有功能和使用方式依然没变。目前版本扩展了两个功能:接口时间监控和接口时间调用树监控。扩展之后的btrace功能使用时都不需要写btrace脚本。 2.使用接口时间监控...
btrace-demo 示范项目
btrace1.3.9 jdk1.8 maven 编译构建 http://github.com/btraceio/btrace
btrace1.3.9最新版本转过来
btrace-bin直接解压缩配置环境变量后即可运行使用。 java监控调试工具虚拟机监控程序,利用BTrace可以在线监控java程序状态。 BTrace是一种安全,动态的Java跟踪工具。BTrace通过动态(字节码)检测正在运行的Java...
java 在线检测插件Btrace, 无需重启服务,即可在线定位问题
自己做的BTrace监控,Linux服务器上的tomcat工程,压缩包包含BTrace开发所需的jar包 BTrace简单示例代码 jvisualvm.exe如果远程服务器监控JVM虚拟机信息
btrace api 1.2 文档,从网上扒下来自己做的,其他地方貌似都没有chm,提供给大家使用 btrace是一个跟踪、监控java程序的小工具,能够在不改变源代码的情况下监控很多东西,比如:方法运行时间、输入输出参数、抛出...
btrace安装包,linux和windows通用,1.3.9版本。可以直接解压缩配置环境变量后运行使用
Btrace用来做项目检测,访问过的类方法统计,无侵略性,JDK1.6
btrace workbench 插件jar包打包下载,jvisualvm的插件
Btrace Java 发布版本,Java 虚拟机监控程序
jvisualvm-btrace离线安装包。 jvisualvm btrace插件离线安装包1.2.85版本,目前官网不支持国内在线下载。 含相关依赖包:jsyntaxpane-lib.nbm、net-java-btrace-api.nbm、net-java-btrace-visualvm.nbm、...
jvisualvm btrace插件离线安装,如果jvisualvm不能安装btrace,则可进行离线安装。 这里收集了安装btrace所需要的依赖包,直接添加 即可安装