//--------------------------------------------------------------- 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>]
*涉及的所有资源来源于网络,仅作学习交流。