zoukankan      html  css  js  c++  java
  • Java反编译Jar包和Android APK(类似.NET Reflector)

    JD-GUI

    这个JD-GUI可以反编译jar包,用法就是打开jar包直接浏览。

    JD-Eclipse

    JD-Eclipse是个Eclipse插件,安装方法是打开Eclipse,菜单 Help – > Install new software… 输入 http://java.decompiler.free.fr/jd-eclipse/update,然后一路安装即可。然后行会乱掉,需要安装另外一个插件:Realignment for JD-Eclipse, 下载了以后复制到Eclipse的plugin目录下,重启。然后配置默认打开方式:Eclipse,菜单 Window – > Preference – General – Editors – File Association – *.class,设置Realignment for JD Class File Editor为Default。保存即可。

    在Eclipse新建一个项目,新加一个目录叫lib,然后从机器上拷贝所有需要反编译的jar包,点那个目录右键:粘贴。设置项目的compile path把那些jar加到libraries里面,这样就可以打开每个jar包了。还能跳转。

    JAD Command

    首先下载Jad.exe,这个是个批处理命令行工具,没有界面的,而且只能处理.class文件。你可以把所有的jar包用winrar或者7z先解压到一个目录叫classes,然后写个bat批处理文件内容如下:

    jad.exe -r -ff -d src -s java classes/**/*.class

    这样就会反编译为*.java文件了。当然,坏处就是目录没了。

    如果是对大量的jar包(假设在jars目录下面)进行批量处理可以这样:

    1. 全选jars目录下面所有jar包,然后右键选择7z解压:解压到*\
    2. 这样就可以把所有jar包解压到以jar包文件同名的目录里面
    3. 然后在系统环境变量注册path:把当前jad路径注册进去
    4. 然后cmd运行脚本:jad -r -sjava jars/**/*.class
       运行之前chdir /d 到 jars目录平级目录
    5. 这样就可以全部批量反编译为*.java并原有目录结构不会破坏。
    6. 这样可以在Notepad++里面可以用文件查找对文件进行搜索

     

    Android APK的反编译

    第一步是把apk重命名为zip并解压,然后用dex2jar处理其中的classes.dex。方法是将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录,运行dex2jar.bat    classes.dex,生成classes.dex.dex2jar.jar,运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了。如果要处理里面的资源文件、配置文件、图片等,可以用apktool这个工具。

    反编译以后的编译

    即使你得到了所有的*.java文件,可能还是不能正常编译,因为不清楚各个项目之间的依赖关系,而且还有资源文件、配置文件等。总之,越大的项目,越混淆的项目,越难搞定。

  • 相关阅读:
    双指针
    二维数组 查找常用字符
    将数组分为相等的三部分
    交换 排序
    买股票
    双指针 回文数
    双指针
    测试SM图床
    cnpm,vue等命令不识别的问题废人解决方案
    typeof面试题解答
  • 原文地址:https://www.cnblogs.com/Mainz/p/2446419.html
Copyright © 2011-2022 走看看