首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

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

2012-08-21 
[小工具]apk反编译工具整合(修复)//--------------------------- 2011.09.17部分朋友反映ApkDecompiler.ex

[小工具]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,本身这个小工具就是练练手,同时也希望能对大家学习研究有帮助。[小工具]apk反编译工具调整(修复)


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

?

?

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

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


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

@echo offcd /d %~dp0set curDir=%cd%set apkFilePath=%1set apkFileName=%~n1rem edit this params before use.set outputFilePath=%cd%\apk_crackedset dex2jarPath=%cd%\dex2jar\dex2jar.batset jd_guiPath=%cd%\jd-gui\jd-gui.exeset apktoolPath=%cd%\apktool\apktool.batset utilsPath=%cd%\utils.jarset outputTempDir=%outputFilePath%\tempset 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-guicall %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反编译工具调整(修复)

?

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

,我也就胡乱搞的。有空交流交流!



vvvpig 写道为啥我无论用命令行还是直接拖都会有以下错误
java.lang.UnsatisfiedLinkError: C:\Documents and Settings\root\Local Settings\Te
mp\GetCurrentFilePath4723232611269939432.dll: Can't find dependent libraries
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at Utils.<clinit>(Utils.java:31)
        at ApkDecompiler.main(ApkDecompiler.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
        at com.exe4j.runtime.WinLauncher.main(Unknown Source)
java.lang.UnsatisfiedLinkError: Utils.getCurrentFilePath()Ljava/lang/String;
        at Utils.getCurrentFilePath(Native Method)
        at ApkDecompiler.main(ApkDecompiler.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
        at com.exe4j.runtime.WinLauncher.main(Unknown Source)
操作系统:XP Sp3
JAVA:1.6_23
需要exe4j的啥DLL吗


改成了绝对路径还是报这个错误哦 8 楼 lufam 2011-05-09   运行出错与vvvpig一样 9 楼 奋发图强 2011-05-24   和楼上的一样,也是报错 10 楼 michaelyn 2011-05-25   最新版本可以用了,十分感激楼主 11 楼 xiaofeishouxiao 2011-05-26   seanyzhou 写道反编译出来的代码在elcipse不能用啊
到处是
int xxx=null;
boolean xxx=0;
....
之类语法错误的东西
12 楼 GDGZWQZ 2011-11-02   能否开发一个支持中文的批量更换APK文件名的软件!下载的APK文件名太乱啦!!! 13 楼 univasity 2011-11-04   GDGZWQZ 写道能否开发一个支持中文的批量更换APK文件名的软件!下载的APK文件名太乱啦!!!

批量重命名?一般每个APK都是不同主题内容的吧?文档或图片批量重名比较多见,一般文件管理软件也有这样的功能。APK等应用的话,还是手动逐个添加有意义的名称为好。不知有无理解错你的意思。 14 楼 earth123 2011-12-15   反编译自己写的小程序试了下,效果真好,基本上可以读了
比单独使用一个工具的效果好多了(不过耗时也增加了不少)
而且使用起来很方便
感谢BZ的工作~
15 楼 earth123 2011-12-15   发现res/values里的xml会有缺失,单独使用apktool反编译的话没有问题 16 楼 GDGZWQZ 2012-01-05   我说的批量更换APK文件名的意思是指,能自动识别APK文件中的中文说明和版本(apk文件内部已经包含这些信息,只要反编译并解析即可获得。),并依此重新命名,如原文件“sdfg2345265.apk”(这个很难理解呀!),能通过批量重命名软件自动更换文件名为“GPS智慧搜星 Ulysee Gizmos v1.6.2 .apk ”(这样多么直观呀!),之所以要批量,是因为APK文件软件一般都是一二百个,逐个命名太麻烦啦!(一般的软件无批量功能)不知道我说清楚了没有!

网上曾有“白鸽男孩”发布一个,ApkBatchRename软件,非常可惜的是,由于它利用的是linux的组件,因此,不支持中文,可惜至极!!!

而利用反编译技术,却可以解决这一问题,故而,有此需求! 17 楼 univasity 2012-01-13   这个主意不错!
GDGZWQZ 写道我说的批量更换APK文件名的意思是指,能自动识别APK文件中的中文说明和版本(apk文件内部已经包含这些信息,只要反编译并解析即可获得。),并依此重新命名,如原文件“sdfg2345265.apk”(这个很难理解呀!),能通过批量重命名软件自动更换文件名为“GPS智慧搜星 Ulysee Gizmos v1.6.2 .apk ”(这样多么直观呀!),之所以要批量,是因为APK文件软件一般都是一二百个,逐个命名太麻烦啦!(一般的软件无批量功能)不知道我说清楚了没有!

网上曾有“白鸽男孩”发布一个,ApkBatchRename软件,非常可惜的是,由于它利用的是linux的组件,因此,不支持中文,可惜至极!!!

而利用反编译技术,却可以解决这一问题,故而,有此需求!

热点排行