spiegesq 发表于 2019-3-25 16:09:07

Android反编译(逆向)教程

在网上搜索Android反编译教程,搜出来的文章要么是抄袭的,要么是太过与简单,经过自己的实践和摸索,我在这里记录下如下反编译一个Apk并修改一些资源文件,比如App名字、启动界面等,然后重新打包成apk,你可以参照这个教程修改游戏里的金币(估计没这么简单)。工具还是常用的三个工具:Apktool、dex2jar、jd-guiApktool下载地址:ApktoolLinux下安装教程:
[*]下载Linux wrapper script (鼠标右键另存为apktool)
[*]从这里下载最新版的apktool
[*]把下载的Jar文件重命名为apktool.jar
[*]把两个文件(apktool.jar & apktool)移动到/usr/local/bin (需要root权限),使用chmod +x添加执行权限
[*]现在可以通过命令行来运行apktool了
使用方法使用方式:
1.反编译

1
apktool d test.apk


反编译后在home目录下生成了一个文件夹,内容如下:https://wx3.sinaimg.cn/large/0060lm7Tly1g1f3r6yur2j30ib077aa7.jpg各个文件简单介绍如下:
apktool.yml: apk属性.
AndroidManifest.xml: 清单文件, 非二进制.
original: 原始数据, 应用的二进制清单和签名.
res: 资源文件.
smali: dex解析的代码.smali是dex虚拟机的解析格式,在 dex2jar中,也包含smali格式的转换.打开AndroidManifest文件,内容如下:https://wx3.sinaimg.cn/large/0060lm7Tly1g1f3s3px04j30j709v43l.jpg可以看到app_name和app的图标:

1
android:icon="@drawable/icon_meetyou" android:label="@string/app_name"


接下来我们修改res/values/strings.xml下app_name的内容,并替换app图标
2.重新打包成apk

1
apktool b test


打包后在dist文件夹下生成新的apk文件。dex2jardex2jar是dex转换为jar的工具,很多人不会看smali文件,还是看java类文件比较舒服,这个时候可以借助这个工具来转成java代码。
下载地址:dex2jar使用从Apk中解压出class.dex,使用dex2jar进行源码解析,在当前目录生成classes.dex.dex2jar.jar。
转换过程中, 如果发生内存不够, 修改 d2j_invoke.sh 的虚拟机配置.
1
java -Xms512m -Xmx1024m -classpath "${_classpath}" "$@"

接下来使用JD-GUI打开jar包,下载地址:jd-gui
界面如下所示:https://wx1.sinaimg.cn/large/0060lm7Tly1g1f3srcvi7j311w0jstc0.jpgandroid killer集成了上面几个工具,并添加了一些功能
下载地址:androidkillerClassyShark下载地址:githubClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。使用方法1.打开apk文件java -jar ClassyShark.jar -open
2.将生成的所有数据导出到文本文件里java -jar ClassyShark.jar -dump
3.将指定类生成的文件导出到文本文件里java -jar ClassyShark.jar -dump
4.打开ClassyShark,在GUI界面展示某特定的类
5.java -jar ClassyShark.jar -open
6.检测APKjava -jar ClassyShark.jar -inspect
7.导出所有的字符串 java -jar ClassyShark.jar -stringdump和其他的工具不同,ClassyShark通过分析App的项目结构和引用库的信息,我们大致掌握了该项目的架构,一些开发中的经验和不足,拓宽下开发视野,发现一些好用的开源库,增强我们的武器,这些都是我们在开发中可以借鉴的东西。比如我们查看美团App的结构,看它使用了哪些开源库,界面如下所示:https://wx4.sinaimg.cn/large/0060lm7Tly1g1f3tnqrw1j31360u045z.jpg

baolinguo 发表于 2019-3-26 10:25:20

努力学习中。谢谢楼主!!!
页: [1]
查看完整版本: Android反编译(逆向)教程