反编译
方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。
那么无效的代码又怎么能正确运行呢?
答案就是,你要保证你的代码永远不会执行到那一步。
我作一个简单的例子说明:
我们建立一个项目:
- package com.TestJar;
- public class Main {
- public static void main(String[] args){
- System.out.println(Info.getmessage());
- }
- }
[java] view plain copy
- 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的。
相关阅读
有许多网站防止图片外链,比如百度贴吧,QQ空间,新浪博客等。如果在其他地方引用这些网站的图片,或通过RSS阅读器等去阅读,得到的将是类
直接上代码: package com.roots.cloudserver.util; import it.sauronsoftware.jave.AudioAttributes;import it.sauronsoftware.ja
前段时间玩了个手游,中途碰到一个副本迟迟无法攻破,又不没钱氪金,想着弄个破解版的,搜了半天没找到,于是决定自己动手干! 首先要对apk有
使用Eclipse导出向导生成jar包可以用jar命令对java项目(project)进行打包(Java自带的命令行式打包软件jar.exe),也可以使用Eclipse导出
反编译的项目中查找问题是很常见的操作,所以反编译工具也是非常重要的,经典的反编译软件时 jd-gui 但是这个工具目前是有严重的bug