之前曾发表在 csdn(blog.csdn.net/seavers) 上, 不过, csdn的代码乱掉了, 今天重新整理了一下
反编译所使用的工具是jad.exe,笔者的测试版本是1.5.8e,压缩与解压缩使用的是WinRAR
jad.exe 可反编译一个class文件为java文件,笔者的BAT可通过此工具将一个jar包反编译成一个完整的源码jar包,同时生成的目录也可以在eclipse中使用
jad.exe 官方网站 : http://www.kpdus.com/jad.html (已失效, 从
这里或者附件下载)
BAT脚本见后
安装方法如下:
复制粘贴后面的文本为一个BAT,然后与jad.exe放在同一个目录即可(WinRAR需正确安装)
使用方法如下: (有3种使用方法, 使用其中任意一种均可,结果是相同的)
1. 双击BAT,提示输入需反编译的jar包,请输入完整的jar路径
2. 直接将 jar 包拖放在bat上
3.右键点击jar包,选择打开方式,然后选择使用该BAT来执行
运行后的结果如下:
在jar包的同一目录下, 将会生成一个目录,一个jar,目录下有两个子目录,一个目录存放解压缩后的所有class,一个目录存放反编译后的java文件,jar包是用源码压缩生成的
几点说明:
1. 工具中使用的WinRAR是自动识别安装路径的,请正确安装WinRAR
2. 工具使用的jad.exe,须与BAT放在同一目录,或者放在PATH可搜索到的位置
3. jar包中非class文件,也会完整拷贝在源码目录下,方便生成源码工程
4. 生成的目录名与原 jar 包同名, 生成的源码 jar 包的文件名是在原名称中加入-src而生成, 如原 jar 包为 jdbc.jar, 则生成的目录名为 jdbc, 而生成的源码jar 包名则为 jdbc-src.jar
5. eclipse使用方法1, 将BAT生成的目录放在workspace中,然后创建同名工程
6. eclipse使用方法2,在 eclipse 中创建同名工程,使用src为源文件目录,bin为class文件目录,然后将BAT生成的目录拷贝在eclipse的workspace中
该BAT为 blog.csdn.net/seavers 原创, BAT源码仅供个人学习,使用,研究,未经本人同意,不可用于商业用途
---------------------------------------------------------------------------
我通常的使用方式是: 将 bat 与 jad.exe 解压在windows根目录, .jar右键用bat打开发后, 第二次及以后使用就方便多了
BAT更新了一下
BAT源码如下: (请直接拷贝在BAT文件中)
::功能: 利用bat反编译jar包生成源码jar包
::作者: seavers
::博客: http://seavers.iteye.com/
::版本: 1.7
::打开/关闭命令行显示
REM @echo OFF
::::::::::::::::::::::::::::解析并设置变量::::::::::::::::::
::查找jad文件的路径, 这里取的jad.exe, 表示从PATH中查找,如果想手工指定,需在这里修改
set JAD_PATH=jad.exe
::设置解压出的class文件存放的位置(相对路径)
set CLASS_PATH=bin
::设置反编译后的java文件存放的位置(相对路径)
set JAVA_PATH=src
::检查JAD文件是否存在bat所在目录下,
if exist "%~dp0jad.exe" set JAD_PATH=%~dp0jad.exe
::判断参数个数,如果没有文件参数,则报错,这里也可以使用%~f1,也可以用%1,没有关系,之后要去掉引号
if ""%1""=="""" (set /P JAR_PATH=请输入要反编译的JAR包的路径...) else (set JAR_PATH=%~f1)
if '%JAR_PATH:~0,1%%JAR_PATH:~0,1%'=='""' set JAR_PATH=%JAR_PATH:~1,-1%
::获取源代码存放的路径,这里取JAR包所在路径,然后去掉".jar"作为文件夹路径, 这里的LOCATION不能带引号,因为下面还要追加字符)
if ""%2""=="""" (set LOCATION=%JAR_PATH:~0,-4%) else (set LOCATION=%~f2)
::::::::::::::::::::开始执行程序:::::::::::::::::::::::::::::::
::获取WinRAR.exe的路径,设置在临时变量rarpath中
for /f "usebackq delims=" %%i in (`ftype WinRAR`) do set RARPATH=%%i
::对rarpath进行解析,去掉前面7个节符,去掉后面5个字符,得到WinRAR执行路径
::路径大致是这样的形式 Winrar="C:\Program Files\WinRAR\WinRAR.exe" "%1"
set RAREXE=%RARPATH:~7,-5%
::调用WinRAR命令,解压文件到指定目录的bin目录下
%RAREXE% x "%JAR_PATH%" "%LOCATION%\%CLASS_PATH%\"
::遍历整个bin目录,取所有class文件,调用jad.exe反编译出源码,非class的拷贝到src目录下
::打开变量延迟功能
setlocal EnableDelayedExpansion
for /r "%LOCATION%\bin" %%i in (*.*) do if '%%~xi'=='.class' ("%JAD_PATH%" -o -r -sjava -ff -b -nonlb -space -t -8 -d"%LOCATION%\%JAVA_PATH%" "%%~si") else (set TEMP_PATH=%%i & echo f|xcopy "%%i" "!TEMP_PATH:%LOCATION%\bin=%LOCATION%\src!")
endlocal EnableDelayedExpansion
::将产生的java文件压缩成源码文件
%RAREXE% a -ep1 -r "%LOCATION%-src.zip" "%LOCATION%\%JAVA_PATH%\*.*"
::::::::::::::::::程序结束, 显示运行结果::::::::::::::::::::::
echo *********************************************
echo 程序运行结束
echo 解析的JAR包的路径为 %JAR_PATH%
echo 解压缩工具WinRAR.exe的路径为 %RAREXE%
echo 反编译工具JAD.exe的路径为 %JAD_PATH%
echo 解析后的文件的根路径为 %LOCATION%
echo 解析后的class文件存放在 %LOCATION%\%CLASS_PATH%
echo 解析后的java文件存放在 %LOCATION%\%JAVA_PATH%
echo 压缩后的java文件存放在 %LOCATION%-src.zip
echo *********************************************
pause
分享到:
相关推荐
Android反编译apk到java源码的方法 ...Android反编译apk到java源码的方法可以使用apktool、dex2jar和JD-GUI工具实现。这些工具可以帮助开发者快速地反编译apk文件,获取java源代码和其他资源文件。
本压缩包提供的是一套完整的反编译工具,包括"apktool.jar"、"apktool.bat"、"jd_gui.exe"和"dex2jar"文件夹,这些工具对于Android开发者、安全研究人员以及想要深入理解APK结构的人来说是必不可少的。 1. **...
标题提到的"反编译jar文件,导出java源码 jd-gui 0.3.5 and dex2jar 0.0.9.15 and jar2dex.zip"就是一个这样的场景,它涉及到两个主要的反编译工具:JD-GUI和dex2jar。 **JD-GUI** 是一个直观的图形用户界面工具,...
下载反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。 dex2jar:apk反编译工具 ,是将apk中的classes.dex转化成jar文件 jdgui:源码查看工具,是一个反...
下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。 apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件 源码查看工具jdgui,是一个反...
下载反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。 dex2jar:apk反编译工具 ,是将apk中的classes.dex转化成jar文件 jdgui:源码查看工具,是一个反...
总的来说,Android反编译是一个复杂且有一定挑战性的过程,涉及到工具如dex2jar和JD-GUI的使用。虽然可以让我们洞察APK应用的工作方式,但也要意识到可能遇到的困难和潜在的法律风险。在学习和研究的过程中,我们...
1. 下载成功后解压 2. 将apk文件放到onekey-decompile-apk目录下 3. 将apk文件拖拽到_onekey-decompile-apk.bat上 ... 会在onekey-decompile-apk目录下生成和apk同名的jar文件(dex2jar反编译出来的class)
这个"apk反编译工具包apktool集合"就是为了满足这样的需求而提供的。该压缩包包含了三个核心工具,分别是apktool.bat、apktool.jar以及dex2jar工具包。 首先,我们要了解什么是APK。APK是Android应用程序的包文件...
下面,我们将详细探讨如何使用dex2jar来反编译APK以及相关的知识点。 首先,我们需要了解dex2jar的工作原理。DEX文件是Android运行时环境Dalvik虚拟机执行的代码格式,而JAR文件则包含Java类文件,可以被Java虚拟机...
例如,使用`apktool`解压并反编译资源文件,然后用`dex2jar`和`jad`或`JD-GUI`反编译.dex文件得到Java源码。 请注意,反编译APK可能涉及到版权和法律问题,仅应在合法和道德允许的情况下进行。在进行反编译之前,...
总结起来,apktool是Android开发中不可或缺的工具,它通过bat文件和jar包的配合,为开发者提供了查看和修改APK的途径,大大提升了对Android应用的理解和定制能力。在实际操作中,正确理解和熟练运用apktool,能够极...
虽然反编译的代码可能无法完全恢复到原始的Java源码,但大多数逻辑和函数结构应该是可以理解的。 然而,需要注意的是,由于Java字节码的特性,反编译后的代码可能会存在一些问题,比如变量名和方法名被转换为数字,...
生成classes_dex2jar.jar然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码 2、apk反编译生成程序的源代码和...
5. **查看源码**:生成的.jar文件可以用Java反编译工具,如JD-GUI或JAD来查看。这些工具能将字节码转换成更接近人类可读的Java源代码形式。需要注意的是,由于反编译过程的复杂性,源码可能不完全与原始Java代码一致...
这里提到的"apk反编译三件套"包括了apktool.bat、apktool_2.5.0.jar、dex2jar.zip和jd-gui-windows-1.6.6.zip,它们是反编译过程中的关键工具。 首先,让我们逐一了解这些工具的作用: 1. **apktool.bat**:这是...
APK反编译成Java源码是一个常见的技术实践,尤其对于开发者来说,它能帮助我们理解应用程序的工作原理、查看代码实现或进行逆向工程。以下将详细介绍如何将APK文件转换为Java源代码。 首先,我们需要准备三个关键...