前言
最近突然百度热搜上面出现了一个小程序游戏;想必大家已经感受到了。朋友圈各种微信朋友群;都是铺天盖地的小程序链接。
许多人纷纷都跟上风潮,玩第一关诶,这不是很简单吗?
5分钟后,第二关开启……
于是“疯了”一大批人,各种找攻略。抖音上很多出攻略的、直播通关的。还有我们这种Android开发程序员;直接上手自己做一个。制作同款最简单的方法就是直接进行反编译。那么Android的反编译如何学习呢?本篇文章带你学习Android反编译,跟上车速发车啦!
Android APK反编译
首先反编译别人的APK,主要是学习别人的实现逻辑,给自己一个思路。比较商业的APK也不会给你留下这个漏洞,一些核心的业务处理会在后台进行操作;本地的 APK 也会进行混淆加密等。
反编译的三种方法
工具
- Apktool
- dex2jar
- jd-gui
Apktool
使用方法
使用方式:
1.反编译
1 |
apktool d test.apk |
---|---|
反编译后在home目录下生成了一个文件夹,各个文件简单介绍如下:
apktool.yml: apk属性.
AndroidManifest.xml: 清单文件, 非二进制.
original: 原始数据, 应用的二进制清单和签名.
res: 资源文件.
smali: dex解析的代码.smali是dex虚拟机的解析格式,在 dex2jar中,也包含smali格式的转换.
打开AndroidManifest文件,
可以看到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文件。
dex2jar
dex2jar是dex转换为jar的工具,很多人不会看smali文件,还是看java类文件比较舒服,这个时候可以借助这个工具来转成java代码。
使用方法
从Apk中解压出class.dex,使用dex2jar进行源码解析,在当前目录生成classes.dex.dex2jar.jar。
转换过程中, 如果发生内存不够, 修改 d2j_invoke.sh 的虚拟机配置.
1 |
java -Xms512m -Xmx1024m -classpath "${_classpath}" "$@" |
---|---|
接下来使用JD-GUI打开jar包
android killer
集成了上面几个工具,并添加了一些功能
ClassyShark
ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。
使用方法
- 打开apk文件java -jar ClassyShark.jar -open
- 将生成的所有数据导出到文本文件里java -jar ClassyShark.jar -dump
- 将指定类生成的文件导出到文本文件里java -jar ClassyShark.jar -dump
- 打开ClassyShark,在GUI界面展示某特定的类
- java -jar ClassyShark.jar -open
- 检测APKjava -jar ClassyShark.jar -inspect
- 导出所有的字符串 java -jar ClassyShark.jar -stringdump
和其他的工具不同,ClassyShark通过分析App的项目结构和引用库的信息,我们大致掌握了该项目的架构,一些开发中的经验和不足,拓宽下开发视野,发现一些好用的开源库,增强我们的武器,这些都是我们在开发中可以借鉴的东西。
以上就是借住工具进行反编译操作,Android反编译就是逆向行为。更多Android开发技术学习可以参考->《Android核心技术手册》
Android安全性优化之防反编译
再回到《羊了个羊》,现在网上就出现了许多破解版。所以就是因为很多人用到了反编译。
那么大家开发好的apk很多人都不想被反编译吧,那么如何防止反编译呢?这就得往《Android性能优化》里的安全性优化说了。 我们对程序进行加密、加壳等安全措施以防范软件被破解。 反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。
关于Android的逆向过程,我专门找了一个视频讲解。B站: 华为资深专家深度教学;AndroidIO加密文件改造全过程;dex文件加密、解密;apk打包、解包、加壳、脱壳!
网友评论