大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
(待验证)
方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。
那么无效的代码又怎么能正确运行呢?
答案就是,你要保证你的代码永远不会执行到那一步。
我作一个简单的例子说明:
我们建立一个项目:
package com.TestJar;
public class Main {
public static void main(String[] args){
System.out.println(Info.getMessage());
}
}
package com.TestJar;
public class Info {
public static String getMessage(){
return "Hello World!";
}
private class Invalid{
}
}
很简单,运行结果是 Hello World!
然后我们将Info类输出Jar
现在项目改成这样:
运行结果仍然是 Hello World!
我们用jd-gui反编译看看:
反编译看得清清楚楚。
我们的私有内部类Invalid在程序中是没有用。
现在,我们向Invalid类注入无效代码。
注入方法很简单,用WinRar之类的解压软件打开,修改,然后保存就行了
打开这个Invalid内部类
我们将图中所选择的字符’d’删除
然后保存
刷新一下,程序仍然运行:Hello World!
再用jd-gui打开Info.jar
它反编译到那里就出错了。
注意不能将这个方法运行用Android项目上,Android有另一套规则,它需要把Jar转换成dex的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230865.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...