博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
教大家防止Jar包被反编译
阅读量:6837 次
发布时间:2019-06-26

本文共 734 字,大约阅读时间需要 2 分钟。

hot3.png

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

 

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

 

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

 

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

我们建立一个项目:

 

[java]  

  1. package com.TestJar;  
  2.   
  3. public class Main {  
  4.   
  5.     public static void main(String[] args){  
  6.         System.out.println(Info.getMessage());  
  7.     }  
  8. }  

 

[java]  

  1. package com.TestJar;  
  2.   
  3. public class Info {  
  4.   
  5.     public static String getMessage(){  
  6.         return "Hello World!";  
  7.     }  
  8.       
  9.     private class Invalid{  
  10.           
  11.     }  
  12. }  

 

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

然后我们将Info类输出Jar

 

现在项目改成这样:

 

运行结果仍然是 Hello World!

 

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

 

反编译看得清清楚楚。

 

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

 

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

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

 

打开这个Invalid内部类

 

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

 

然后保存

 

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

 

再用jd-gui打开Info.jar

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

 

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

转载于:https://my.oschina.net/airship/blog/853456

你可能感兴趣的文章
Centos下运行gpg --gen-key生成key时出现卡住解决方案笔记
查看>>
Java时间操作工具类
查看>>
网页简单配置捉取网购信息
查看>>
Go语言int类型绑定方法
查看>>
awk深入应用
查看>>
VMware记录(一)- vCenter Server 服务安装提示无法解析此完全限定域名
查看>>
fedora21 下解决IDEA中文无法输入、显示问题
查看>>
openSuse 13.1 的触摸板,回来了
查看>>
saltstack之远程触发文件备份、回滚
查看>>
Struts2教程2:处理一个form多个submit
查看>>
php文件上传的经验分享
查看>>
MySQL SQL优化
查看>>
代码编辑器——sublime
查看>>
MogileFS高级应用(二)最后有疑问
查看>>
mail spy
查看>>
第19课:Spark高级排序彻底解密
查看>>
深入剖析Android系统
查看>>
网络部署原理加实验步骤
查看>>
Google 公司的 Java 语言编写规范
查看>>
linux系统启动级别
查看>>