美文网首页Android开发Android技术知识Android技术进阶
从Android apk开发角度分析反编译“羊了个羊”

从Android apk开发角度分析反编译“羊了个羊”

作者: 谁动了我的代码 | 来源:发表于2022-09-16 17:36 被阅读0次

    前言

    最近突然百度热搜上面出现了一个小程序游戏;想必大家已经感受到了。朋友圈各种微信朋友群;都是铺天盖地的小程序链接。

    许多人纷纷都跟上风潮,玩第一关诶,这不是很简单吗?

    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等。

    使用方法

    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的项目结构和引用库的信息,我们大致掌握了该项目的架构,一些开发中的经验和不足,拓宽下开发视野,发现一些好用的开源库,增强我们的武器,这些都是我们在开发中可以借鉴的东西。

    以上就是借住工具进行反编译操作,Android反编译就是逆向行为。更多Android开发技术学习可以参考->《Android核心技术手册》

    Android安全性优化之防反编译

    再回到《羊了个羊》,现在网上就出现了许多破解版。所以就是因为很多人用到了反编译。


    那么大家开发好的apk很多人都不想被反编译吧,那么如何防止反编译呢?这就得往《Android性能优化》里的安全性优化说了。 我们对程序进行加密、加壳等安全措施以防范软件被破解。 反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。

    关于Android的逆向过程,我专门找了一个视频讲解。B站: 华为资深专家深度教学;AndroidIO加密文件改造全过程;dex文件加密、解密;apk打包、解包、加壳、脱壳!

    相关文章

      网友评论

        本文标题:从Android apk开发角度分析反编译“羊了个羊”

        本文链接:https://www.haomeiwen.com/subject/ziwjortx.html