java怎么重写拦截修改jar_教大家简单修改class,防止Jar包被反编译

方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。

那么无效的代码又怎么能正确运行呢?

答案就是,你要保证你的代码永远不会执行到那一步。

我作一个简单的例子说明:

我们建立一个项目:

e162f708a0026a3639041638cf41f319.png

packagecom.TestJar;

publicclassMain {

publicstaticvoidmain(String[] args){

System.out.println(Info.getMessage());

}

}

packagecom.TestJar;

publicclassInfo {

publicstaticString getMessage(){

return"Hello World!";

}

privateclassInvalid{

}

}

很简单,运行结果是 Hello World!

然后我们将Info类输出Jar

9a549fb6d7c98ed84865b413bd026d5e.png

现在项目改成这样:

6b671f6bbe5e208698d43883021f40c8.png

运行结果仍然是 Hello World!

我们用jd-gui反编译看看:

9d8b9847307a6a50089e2f095ae106c3.png

反编译看得清清楚楚。

我们的私有内部类Invalid在程序中是没有用。

现在,我们向Invalid类注入无效代码。

注入方法很简单,用WinRar之类的解压软件打开,修改,然后保存就行了

打开这个Invalid内部类

3545c13f08ce56e6a595b477d42e8609.png

我们将图中所选择的字符'd'删除

f5c132b2aac1d4323d5df6c48ca4bebf.png

然后保存

8586f01e350e2d610a4b987d0b075593.png

刷新一下,程序仍然运行:Hello World!

5aa206282428f2f937d58b4385d71159.png

再用jd-gui打开Info.jar

c8d20db1dc411589a8567f71198a963e.png

它反编译到那里就出错了。

注意不能将这个方法运行用Android项目上,Android有另一套规则,它需要把Jar转换成dex的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值