jar包如何防止反编译_jar包可以反编译成源码吗

jar包如何防止反编译_jar包可以反编译成源码吗方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。那么无效的代码又怎么能正确运行呢?答案就是,你要保证你的代码永远不会执行到那一步。我作一个简单的例子说明:我们建立一个项目:packagecom.TestJar;publicclassMain{ publicstaticvoidmain(String[]args){ System.out.println(Info.g…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

(待验证)

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

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

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

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

我们建立一个项目:

jar包如何防止反编译_jar包可以反编译成源码吗

package com.TestJar;
 
public class Main { 
   
 
	public static void main(String[] args){ 
   
		System.out.println(Info.getMessage());
	}
}

Jetbrains全家桶1年46,售后保障稳定

package com.TestJar;
 
public class Info { 
   
 
	public static String getMessage(){ 
   
		return "Hello World!";
	}
	
	private class Invalid{ 
   
		
	}
}

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

然后我们将Info类输出Jar

jar包如何防止反编译_jar包可以反编译成源码吗

现在项目改成这样:

jar包如何防止反编译_jar包可以反编译成源码吗

运行结果仍然是 Hello World!

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

jar包如何防止反编译_jar包可以反编译成源码吗

反编译看得清清楚楚。

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

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

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

打开这个Invalid内部类

jar包如何防止反编译_jar包可以反编译成源码吗

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

jar包如何防止反编译_jar包可以反编译成源码吗

然后保存

jar包如何防止反编译_jar包可以反编译成源码吗

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

jar包如何防止反编译_jar包可以反编译成源码吗

再用jd-gui打开Info.jar

jar包如何防止反编译_jar包可以反编译成源码吗

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230865.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 递归和迭代的对比

    递归和迭代的对比递归和迭代的对比递归迭代特点递归程序调用自身的编程技巧称为递归(recursion)。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小递…

  • java监听设计模式(java观察者设计模式)

    java监听设计模式(java观察者设计模式)

  • 【python】urllib库之四大模块

    【python】urllib库之四大模块文章目录urllib库一urllib库四大模块1:urlopen()2:data参数3:timeout参数二:request.Request方法1:一般用法2:高级用法1:验证2:代理3:Cookies三:异常处理1:URLError2:HTTPError四:解析链接1:urlparse()2:urlunparse()3:urlsplit()4:urlunsplit()5:urljoin()6:…

  • Python的pywifi模块

    Python的pywifi模块想蹭❤️小姐姐的热点❤️被拒后,我用❤️Python来暴力激活成功教程了WiFi的密码❤️文章目录想蹭❤️小姐姐的热点❤️被拒后,我用❤️Python来暴力激活成功教程了WiFi的密码❤️一、起因背景二、需求分析三、代码实现1、生成密码本2、利用密码本进行自动化的测试3、结果展示四、后续总结一、起因背景这天博主和曾经的一个小姐姐同学凑巧同时坐在了同一辆长途客车上,恰谈之后才了解到原来这位小姐姐家里挺富裕的,居然,开通了无限的流量使用权限,博主心想,既然是老同学了,借用一下这个无限的流量应该是没什么问题吧,反正是

  • python读取excel单元格内容_python如何读取txt文件

    python读取excel单元格内容_python如何读取txt文件今天,跟大家谈一下用python计算Excel中的数据我们先学习读取Excel中的数据首先我们要安装xlrd库,在命令提示符(快捷键win+r)中输入:pipinstallxlrd下载完成xlrd库。首先呢,当然要先有一个Excel啦,如下:我们先仔细观察这个Excel,里面有2018、2017、2016的月收入来来来,跟着小哥哥一起月入3w!1、利用python读取Excel内容xrld库中的open_workbook函数可以打开Excel文件,并且返回一个代表打开Excel文

  • 我的世界如何TP坐标_我的世界设置坐标

    我的世界如何TP坐标_我的世界设置坐标我的世界游戏中,/tp玩家id,开启了作弊模式与朋友联机时可以使用,作用是传送到该玩家身边。/tp玩家id将该玩家传送到x,y,z这个坐标处,需要有作弊模式权限。单机的tp指令有:/tp玩家id(开启了作弊模式与朋友联机时可以使用,作用是传送到该玩家身边)。/tp玩家id(将该玩家传送到x,y,z这个坐标处,需要有作弊模式权限)。也可以利用命令方块:/give玩家idminecr…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号