Fra*_*zzo 1218 android decompiling apk android-resources
我的笔记本电脑上的硬盘驱动器崩溃了,我丢失了过去两个月一直在处理的应用程序的所有源代码.我所拥有的是从我发送给朋友时存储在我的电子邮件中的APK文件.
有没有办法从这个APK文件中提取我的源代码?
小智 1520
简单方法:使用在线工具http://www.javadecompilers.com/apk,上传apk并获取源代码.
解码.apk文件的步骤,循序渐进的方法:
创建一个新文件夹并复制要解码的.apk文件.
现在将此.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存.现在你可以访问classes.dex文件等了.在这个阶段你可以看到drawables而不是xml和java文件,所以继续.
现在将此.zip文件解压缩到同一文件夹(或NEW FOLDER)中.
将classes.dex文件移动到dex2jar文件夹中.
现在打开命令提示符并将目录更改为该文件夹(或NEW FOLDER).然后写d2j-dex2jar classes.dex(对于mac终端或ubuntu写./d2j-dex2jar.sh classes.dex)并按Enter键.您现在在同一文件夹中有classes.dex.dex2jar文件.
下载java反编译器,双击jd-gui,单击打开文件,然后打开该文件夹中的classes.dex.dex2jar文件:现在获取类文件.
通过src名称保存所有这些类文件(在jd-gui中,单击文件 - >保存所有源).在这个阶段你得到java源代码,但.xml文件仍然不可读,所以继续.
现在打开另一个新文件夹
放入要解码的.apk文件
下载最新版本的apktool 和 apktool安装窗口(两者都可以从同一个链接下载)并将它们放在同一个文件夹中
打开命令窗口
现在运行命令apktool if framework-res.apk和下一个
apktool d myApp.apk (其中myApp.apk表示要解码的文件名)
现在你在该文件夹中获得了一个文件夹,可以轻松读取apk的xml文件.
这不是任何步骤只是将两个文件夹的内容(在这种情况下都是新文件夹)复制到单个文件夹
并享受源代码......
Tri*_*mon 121
这是另一种描述 - 以防万一有人卡在上面的描述.按照步骤:
apktool.bat(或apktool对于Linux)和apktool_<version>.jar从 http://ibotpeaches.github.io/Apktool/install/ apktool.jar并将两个文件放在同一个文件夹中cmd.exe)并切换到该文件夹; 验证是否已安装Java环境(对于Linux,请检查有关所需库的说明)apktool decode [apk file]
中间结果:资源文件,AndroidManifest.xml
中间结果:classes.dex
dex2jar-0.0.9.15.zip从http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=下载并摘录classes.dex到dex2jar.bat(或输入<path_to>\dex2jar.bat classes.dexDOS框;用于Linux dex2jar.sh)
中间结果:classes_dex2jar.jar
classes_dex2jar.jar(可能是可选的,具体取决于使用的反编译器)结果:源代码
注意:不允许反编译第三方包; 本指南仅用于从APK文件中恢复个人源代码; 最后,生成的代码很可能会被混淆
Rya*_*ler 107
虽然您可能能够反编译您的APK文件,但您可能会遇到一个大问题:
它不会返回你写的代码.相反,它将返回编译器内联的任何内容,变量给定随机名称,以及给定随机名称的函数.尝试将其反编译并恢复到您拥有的代码中可能需要更多的时间,而不是重新开始.
可悲的是,像这样的事情已经扼杀了很多项目.
对于未来,我强烈建议学习版本控制系统,如CVS,SVN和git等.
以及如何备份它.
Mac*_*rse 27
apktool是你可以尝试的最好的东西.我用它保存了一些xml,但说实话,我不知道它将如何与.java代码一起使用.
即使你是唯一的编码器,我也会建议你有一个代码库.我一直在为我自己的项目使用Project Locker.它为您提供免费的svn和git回购.
Tom*_*nen 22
这两篇文章描述了如何结合使用apktool和dex2jar获取APK文件以及创建可以构建和运行它的Eclipse项目.
http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html
http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html
基本上你:
apktool从apk获取资源文件dex2jar获取包含在Eclipse将喜欢的格式类的jar文件.JDGui以查看源代码JDGui,将其粘贴到Eclipse内的类中并进行修改SKK*_*SKK 13
可能很容易看到来源:
在Android studio 2.3中Build -> Analyze APK -> Select the apk that you want to decompile.
你会看到它的源代码.
Linf供参考:https:
//medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
0xc*_*aff 12
有几种方法可以做到这一点:
使用Android Studio 3.0中的"配置文件或调试APK"功能.
它允许您在Android Studio中打开和浏览APK.类被反编译成smali.没有提取资源,诸如"转到定义","查找所有引用"和调试之类的东西没有源代码(android studio 3.0 canary 9)就无法工作.一些额外的smali功能可能适用于smalidea.



使用jadx.
Jadx将给定APK中的代码反编译为java源文件.

使用apktool.
Apktool是一个命令行工具,它为给定的apk提取资源并将代码反编译为smali.你也可以使用apktool重新编译.这是一个实际的例子:
$ apktool d test.apk
I: Using Apktool 2.2.4 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.2.4 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
Run Code Online (Sandbox Code Playgroud)根据您的情况,如果您的 android apk:
\n例如:
\n去:
\n自动从 apk 解码为 java 源代码
\n脚步:
\nuploadapk 文件 + 单击Run+ 等待一段时间 + 单击Download获取 zip + 解压缩 ->
sources/com/{yourCompanyName}/{yourProjectName}
是你期望的java源代码
\n自行使用相关工具反编译/破解:
\njadx/jadx-gui转换apk为java sourcecode下载jadx-0.9.0.zip然后解压到 got bin/jadx,然后:
jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk\nsources后的resources\nsources/com/{yourCompanyName}/{yourProjectName}是你的预期java sourcecodejadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/Windows jadx-gui.bat)\napk文件save all或者save as Gradle project主要方法3 steps:
apk/app to dexdex to jarjar to java src详细解释:
\napk/app to dex使用工具(FDex2/DumpDex)从正在运行的应用程序中转储/挂钩(一个或多个)dex文件
脚步:
\nrootAndroid\nFDex2将/ DumpDex安装到 XPosed 中并启用它\ndex从正在运行的应用程序中转储FDex2然后单击您的 apk 名称以便稍后捕获/挂钩 dex/data/data/com/yourCompanyName/yourProjectName在\n中查找并复制出整个 apk 资源的转储dex文件dex to jar使用工具(dex2jar)将(具体的,包含应用程序逻辑的)dex文件转换为jar文件
下载dex2jar得到dex-tools-2.1-SNAPSHOT.zip,解压得到dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh,然后
sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
例如:
\ndex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex\ndex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar\nRun Code Online (Sandbox Code Playgroud)\njar to java src使用以下工具之一:
\n\n转换jar成java src
从jar到java src转换效果:
\nJadx>> Procyon>>CRFJD-GUI
所以推荐使用:Jadx/jadx-gui
脚步:
\njadx-guidex文件File->save all更详细的解释可以看我的在线电子书中文教程:
\n\n我将向您展示反编译.apk文件的其他方法.
您可以按照" prankul garg " 的前两个步骤进行操作.所以你有另一个机会:
第3步:
下载"JD-GUI",很容易找到这个.在"jd-gui.exe"中打开.jar文件.(文件>打开文件>'找到你的.jar文件').完成此过程后,您可以将所有资源保存在.zip文件中.
所以,
1st - 您必须将.apk文件重命名为.zip
第2 步 - 您必须解码.dex文件(如果需要,将.apk文件解码为dex2jar,这是可能的)
第3 - 您必须使用JD-GUI解码.jar文件
在线以下工具:
http://www.javadecompilers.com/apk
它只需点击一下就可以了:反编译的.java文件+资源+ xml(在一个.zip文件中)和非常好的反编译器(jadx返回地方/函数中的java代码,其他编译器在函数内部返回注释,如"无法反编译"或某些android汇编程序/机器代码)
Apktool逆向工程第 3 方、封闭、二进制 Android 应用程序。
它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。
它使逐步调试 smali 代码成为可能。此外,由于类似项目的文件结构和一些重复性任务(如构建 apk 等)的自动化,它使使用应用程序变得更容易。
http://ibotpeaches.github.io/Apktool/
apktool是要走的路。也存在在线 apktool 服务:http : //www.javadecompilers.com/apktool
显然,由于服务的“在线性质”存在一些限制:您可以提取和研究资产和清单文件,但目前无法重新编译应用程序。
尽管如此,这是“打开”Android 应用程序的一种轻松方式。
| 归档时间: |
|
| 查看次数: |
1023041 次 |
| 最近记录: |