反编译就是逆向工程(Reverse Engineering), 通过解析Apk的内容, 可以验证特性和替换资源. 在批量生成应用时, 使用服务器脚本批量修改Apk, 可以节约人力和时间.
本文介绍逆向工程的常用工具和使用方法. 最新的工具是ClassyShark.
apk
apk表示Application PacKage
, 是zip文件, 修改后缀名.apk
为.zip
, 解压获得apk信息.
应用信息:
AndroidManifest.xml: 二进制清单文件. classes.dex: Dex格式编译文件. resources.arsc: 二进制预编译资源文件. res: 不需编译的资源文件, 一般都是系统的资源文件. assets: AssetManager检索应用特性. META-INF: Jar包元数据, 也包含应用签名.
安装应用
adb install -r ~/Desktop/Pedometer.apk
-r
表示强制安装, 会覆盖当前版本.
查看手机中的所有应用信息
adb shell pm list packages -f
导出手机中的apk
adb pull -p /data/app/me.chunyu.Pedometer-1/base.apk ~/Desktop/base.apk
aar类型和apk相似, 在aar中, AndroidManifest是可显示的XML文件, 资源都在res文件夹中, 作为项目的库使用.
aapt
aapt表示Android Assets Packaging Tool
, 即Android属性打包工具, 导入命令行.
在Android SDK的build-tools
文件夹中, 如
ANDROID_SDK_HOME/build-tools/23.0.2
Android项目的Gradle中, 通过
buildToolsVersion
设置版本, 参考, 主要负责apk的编译.
获取apk信息
aapt list base.apk // 内容
aapt dump badging base.apk // 属性
aapt dump permissions base.apk // 权限
aapt dump resources base.apk // 资源
获取二进制xml信息
aapt dump xmltree base.apk AndroidManifest.xml
dex2jar
dex2jar是dex转换jar的工具, 导入命令行, 还需要使用Java包解析工具JD-GUI. 可以分析Apk的崩溃信息.
配置
d2j-dex2jar.sh
命令行:
改变d2j-dex2jar.sh
和d2j_invoke.sh
的权限, 即chmod 777 xx.sh
.
软链接:ln -s /.../Installations/dex2jar-2.0/d2j-dex2jar.sh d2j-dex2jar.sh
.
转换apk为jar包
d2j-dex2jar.sh -f -o classes.jar base.apk
转换过程中, 如果发生内存不够, 修改
d2j_invoke.sh
的虚拟机配置.java -Xms512m -Xmx1024m -classpath "${_classpath}" "$@"
使用JD-GUI打开jar包, 资源都被替换为数字.
转换jar包为dex
d2j-jar2dex.sh -f -o classes.dex classes.jar
压缩dex为apk
zip -r my.apk classes.dex
注意现在的apk是无法安装入手机的, 因为没有签名.
即使签名也会报错. 通过apktool替代打包.
apktool
解析apk的第三方工具, 安装方式参考.
Mac OS X:
1. Download Mac wrapper script (Right click, Save Link As apktool)
2. Download apktool-2 (find newest here)
3. Rename downloaded jar to apktool.jar
4. Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
5. Make sure both files are executable (chmod +x)
6. Try running apktool via cli
配置成功
解析apk
apktool d rgb_tool.apk
在rgb_tool
文件夹, 内容:
apktool.yml: apk属性.
AndroidManifest.xml: 清单文件, 非二进制.
original: 原始数据, 应用的二进制清单和签名.
res: 资源文件.
smali: dex解析的代码.
smali是dex虚拟机的解析格式, 参考. 在
dex2jar
中, 也包含smali格式的转换.
构建apk. 在rgb_tool/rgb_tool/dist
中生成apk文件.
apktool b rgb_tool
安装时, 会显示未签名.
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
添加apk签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -signedjar rgb_tool.apk rgb_tool.apk androiddebugkey
zipalign -v -f 4 rgb_tool.apk rgb_tool_align.apk
使用系统默认签名, 或者添加自己的签名,
zipalign
用于对齐应用, 建议使用. 参考.
颜色
接着, 我们来解析包, 修改一些颜色, 再生成包.
找到系统颜色, 修改rgb_tool/res/values/colors.xml
, 主题粉色.
<color name="primary">#ffff1493color>
图标
替换应用图标, AndroidAssetStudio创建图标. 替换mipmap
中ic_launcher.png
.
图片
替换资源, 把背景图片换了. 替换drawable-xxxhdpi-v4
中的robot.png
.
资源
替换字符串, 在strings.xml
创建新的字符串,
<string name="action_common_skip_wcl">CLWangstring>
在res/values/public.xml
中替换action_common_skip
为action_common_skip_wcl
.
<public type="string" name="action_common_skip_wcl" id="0x7f070017" />
public.xml
是资源映射,smali
文件使用, 类似R.java
.
apktool
是非常强大的逆向工程工具, 一定要熟练掌握.
androguard
这个是一个命令行处理库, 开发时间很早了, 就不做深入讲解了.
逆向工程的基本工具, aaptdex2jarapktoolandroguard都已经介绍了, 根据需求选择好用的工具吧.
OK, that’s all. Enjoy it!
http://www.techug.com/android-apk-decompiler-tools
相关推荐
APK反编译工具是Android应用开发者和安全研究人员常用的软件,用于查看和分析APK文件的内部结构。这些工具能够将APK中的二进制XML和.dex(Dalvik执行)文件转换成人类可读的形式,便于理解应用的工作原理、提取资源...
本资源包提供的是一套完整的APK反编译工具集合,包括apktool、auto-sign、dex2jar以及jd-gui,这些工具都是APK逆向工程中的常用组件。 首先,我们要介绍的是apktool。apktool是由IzzySoft开发的一款开源工具,主要...
**常用的APK反编译工具** 在描述中提到的“小米人APK改之理”是一款便捷的APK修改工具,它可以帮助用户进行APK的修改工作,但可能不包括完整的反编译功能。而"ApkIDE"则是一个集成开发环境,支持对APK的反编译和分析...
总结起来,安卓apk反编译涉及到多种工具和技术,包括dex2jar、Apktool、JD-GUI、Smali、Baksmali等,以及动态分析和安全评估的方法。这个合集可能是为了帮助用户了解和实践这些反编译步骤,从而更好地理解和修改...
Apktool是一款开源的Android APK反编译工具,由IzzySoft开发。它能够解包APK文件,将二进制的.dex字节码文件转换为人类可读的Smali代码,并且可以重新打包和签名APK。Apktool的主要功能包括资源解析、框架重建以及...
APK反编译工具是Android应用开发者和安全研究人员常用的工具,用于查看、分析甚至修改APK文件的内容。APK文件是Android系统中的应用程序打包格式,它包含了应用的代码、资源、图片、XML配置等所有组成部分。通过反...
APK反编译工具是Android开发者在学习和分析应用程序时常用的一种工具,它可以帮助我们查看APK包中的源代码、资源文件以及各种元数据。在这个java版的反编译工具中,开发者使用Java Swing库创建了一个图形用户界面,...
本文将详细介绍两款常用的Android反编译工具——dex2jar和apk2java,以及如何利用它们获取APK中的Java源代码和资源文件。 一、dex2jar dex2jar是一款将Dalvik字节码(.dex)转换为Java字节码(.jar)的工具。...
"Android APK反编译工具"正是为这个目的而存在的,其中最常用的一款工具就是`apktool`。 `Apktool`是一款由IzzySoft开发的开源工具,主要用于反编译APK文件。它能够解码APK中的资源文件(如XML布局、图片、字符串表...
这里提到的“Android反编译工具集”包含了一组常用的工具,可以帮助开发者实现这些目标。以下是这些工具的详细介绍: 1. **Androidfby**: Androidfby(又名ApkRepack)是一款用于APK打包、反编译和重新打包的工具...
APK反编译及编译工具是Android应用开发领域中常用的一种技术,它允许开发者对已有的APK文件进行解包、修改和重新打包。在本文中,我们将深入探讨APK反编译的过程,理解其背后的原理,并了解如何使用如ApkTool这样的...
在Android应用开发的世界里,有时候我们需要对已...总的来说,"Apk反编译工具"集合是Android应用开发和安全研究领域不可或缺的资源,通过合理使用这些工具,我们可以更有效地进行APK的逆向分析,提升我们的理解和技能。
"apk反编译工具.rar"这个压缩包集合了常用的几个APK反编译工具,包括apktool、Auto-Sign、dex2jar以及jd-gui,这些工具是安卓逆向工程的基础。 首先,apktool是用于解包和重新打包APK文件的开源工具。它能够将APK的...
安卓系统apk反编译工具是开发者和逆向工程师常用的一种技术手段,用于探索APK应用的内部结构,修改代码或资源,以实现特定的需求。在本文中,我们将深入探讨apk反编译的基本概念、工具使用以及相关的技术要点。 ...
本资源"APK反编译工具.zip"提供了一套常用的APK反编译工具,包括apktool.jar、apktool.bat、dex2jar-2.0以及jd-gui-windows-1.4.0,这些工具对于安卓开发者和安全研究人员来说是非常实用的。 首先,让我们详细了解...
3. **Apktool**: Apktool是一个强大的Android APK反编译工具,可以解压APK,反编译资源文件(如XML布局),并将它们重新打包回APK。它不直接反编译Java代码,但可以与dex2jar和JD-GUI等工具结合使用。 4. **...
- `Android逆向助手.exe`:这可能是一款中文图形化界面的APK反编译工具,它简化了对APK文件的操作,提供友好的用户界面,便于非技术背景的用户使用。 - 其他常用反编译工具:如Apktool、dex2jar、JD-GUI等,它们...