[小工具]apk反编译工具整合(修复)

//--------------------------------------------------------------- 2011.09.17

部分朋友反映ApkDecompiler.exe文件被扫描到病毒,但我是无视的,完全不影响使用。

 

对于不放心的朋友,我这里提供原始文件,你们可以自己下载Quick Batch File Compiler工具将BAT转换为EXE,或者直接使用BAT也是可以的...

 

步骤大概是这样的:

1.启动Quick Batch File Compiler,选择“打开”,找到decompiler.bat文件;

2.切换到“嵌入式文件”TAB,选择好图标,然后在下面添加附件中找到utils.jar文件添加进去;

3.点击上方菜单栏的“构建”,并选择保存路径,保存文件名为ApkDecompiler.exe。

 

生成后,将该exe文件直接替换掉原本RAR压缩包(下面下载)中的对应文件即可。

 

BTW,本身这个小工具就是练练手,同时也希望能对大家学习研究有帮助。


所需的文件在下面files_for_build.rar附件里。也感谢下帮我做图标的之前公司的同事Yen.

 

 

//--------------------------------------------------------------- 2011.05.24

最近很多网友都表示遇到了dll调用报错的问题,本人一下子也未能找到很好的解决办法...


终于能抽出时间,于是用蹩脚的cmd批处理配合java重新实现了一遍:

@echo off

cd /d %~dp0

set curDir=%cd%
set apkFilePath=%1
set apkFileName=%~n1

rem edit this params before use.
set outputFilePath=%cd%\apk_cracked
set dex2jarPath=%cd%\dex2jar\dex2jar.bat
set jd_guiPath=%cd%\jd-gui\jd-gui.exe
set apktoolPath=%cd%\apktool\apktool.bat
set utilsPath=%cd%\utils.jar

set outputTempDir=%outputFilePath%\temp
set saveDir=%outputFilePath%\%apkFileName%

@echo [Params]
echo curPath:%curDir%
echo apkFile:%apkFilePath%
echo outputFilePath:%outputFilePath%
echo dex2jarPath:%dex2jarPath%
echo jd_guiPath:%jd_guiPath%
echo apktoolPath:%apktoolPath%
echo saveDir:%saveDir%

@echo ------------------------
@echo [Step01].clear old files
@echo ------------------------
rem delete temp files.
if exist %outputTempDir% (
	rd /q /s %outputTempDir%
)
rem delete last version.
if exist %saveDir% (
	rd /q /s %saveDir%
)

@echo ------------------------
@echo [Step02].unzip .apk file
@echo ------------------------
rem unzip .apk file.
java -jar %utilsPath% "unzip" "%apkFilePath%" "%outputTempDir%"

@echo ------------------------
@echo [Step03].decompile .dex file
@echo ------------------------
rem decompile .dex file.
call %dex2jarPath% "%outputTempDir%\classes.dex"
rem rename .jar file to .apk filename.
if exist "%outputTempDir%\classes.dex.dex2jar.jar" (
	rename "%outputTempDir%\classes.dex.dex2jar.jar" "%apkFileName%.jar"
)

@echo ------------------------
@echo [Step04].save resources files
@echo ------------------------
rem copy resources files to saveDir.
java -jar %utilsPath% "saveResFiles" "%outputTempDir%" "%saveDir%"

@echo ------------------------
@echo [Step05].decompile .xml files
@echo ------------------------
rem decompile .xml files.
call %apktoolPath% d -f "%apkFilePath%" "%outputTempDir%\apktool"

@echo ------------------------
@echo [Step06].save xml files
@echo ------------------------
rem copy xml files to saveDir.
java -jar %utilsPath% "saveXmlFiles" "%outputTempDir%\apktool" "%saveDir%"

@echo ------------------------
@echo [Step07].remove temp files
@echo ------------------------
rd /q /s %outputTempDir%

@echo ------------------------
@echo [Step08].show decompiled files
@echo ------------------------
rem open saveDir.
call explorer.exe %saveDir%
rem open .jar by jd-gui
call %jd_guiPath% "%saveDir%\%apkFileName%.jar"

rem pause

* 由于使用了Quick Batch File Compiler工具来转成.exe,所以必须将解压的文件放置到名为\ApkDecompiler\的目录下。

 

基本使用是一样的,具体见附件。

 

//---------------------------------------------------------------- 2011.05.06

<!-- 最近发觉很久没搞小东西玩了,手痒...随便搞着玩 -->

 

参照自网上目前比较流行的apk破解组合方案:

dex2jar + apktool + jd-gui

 

我只是简单地将他们组合到一块,方便使用。

 

其中init.cfg 是一些属性的配置:

dex2jarPath=.\dex2jar\dex2jar.bat
jd-guiPath=.\jd-gui\jd-gui.exe
apktoolPath=.\apktool\apktool.bat
savePath=H:\apk_cracked\ <这个是储存的目录,最好单独新建一个目录,以防止导致执行过程中误删了文件>

*如果提示java.lang.UnsatisfiedLinkError: Utils.getCurrentFilePath()Ljava/lang/String;的错误,可以将上面3个应用的地址改成绝对地址。

  这是因为我写了一个获取当前应用路径的DLL,具体问题还有待解决...真是杯具了...

 

其他几个目录就是对应着相关的工具。

 

使用方式:

1.设置好init.cfg中的路径参数;

2.直接将.apk包拖到ApkDecompiler.exe上即可;

   或者,进入cmd,输入:

   ApkDecompiler.exe <apk_file> [<output_file> <dex2jar_file> <jd-gui_file> <apktool_file>]

 

反编译出来后的结构:
[小工具]apk反编译工具整合(修复)_第1张图片

 

*涉及的所有资源来源于网络,仅作学习交流。

你可能感兴趣的:(apk)