精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-05
最后修改:2011-09-18
//--------------------------------------------------------------- 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 *如果提示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>]
反编译出来后的结构:
*涉及的所有资源来源于网络,仅作学习交流。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-05
反编译出来的代码在elcipse不能用啊
到处是 int xxx=null; boolean xxx=0; .... 之类语法错误的东西 |
|
返回顶楼 | |
发表时间:2011-05-05
seanyzhou 写道 反编译出来的代码在elcipse不能用啊
到处是 int xxx=null; boolean xxx=0; .... 之类语法错误的东西 能直接用就神奇了。。。 |
|
返回顶楼 | |
发表时间:2011-05-06
恩。不错,其实这个整合前两天俺也做了。。。只不过xml没有排版。。。
|
|
返回顶楼 | |
发表时间:2011-05-06
kala888 写道 恩。不错,其实这个整合前两天俺也做了。。。只不过xml没有排版。。。
,我也就胡乱搞的。有空交流交流! |
|
返回顶楼 | |
发表时间:2011-05-06
为啥我无论用命令行还是直接拖都会有以下错误
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吗 |
|
返回顶楼 | |
发表时间:2011-05-06
主要是我为了获取当前应用的路径,写了个DLL,这是提示DLL没有关联上(目前是将DLL拷贝到缓存)...
你只要将init.cfg里3个第三方应用的地址改成绝对路径就好了。 这问题我回头想想怎么解决哈。 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吗 |
|
返回顶楼 | |
发表时间:2011-05-09
univasity 写道 主要是我为了获取当前应用的路径,写了个DLL,这是提示DLL没有关联上(目前是将DLL拷贝到缓存)...
你只要将init.cfg里3个第三方应用的地址改成绝对路径就好了。 这问题我回头想想怎么解决哈。 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吗 改成了绝对路径还是报这个错误哦 |
|
返回顶楼 | |
发表时间:2011-05-09
运行出错与vvvpig一样
|
|
返回顶楼 | |
发表时间:2011-05-24
和楼上的一样,也是报错
|
|
返回顶楼 | |