【2020年】Android开发学习思考及规划

为什么要学Android开发

缘起:从xxx话查看器说起

在2016年,一款名为《悄悄话查看器》的App 出名了,感兴趣的可以移步:

如何看待QQ悄悄话查看器引起的风波? - 知乎

被舍友耍了之后,我很好奇它怎么办到的,当时是我是个只会编写 Java基础的程序小菜鸡。

大神爆出apk的源码,可以移步:

「QQ悄悄话查看器」(病毒应用)是如何工作的? - 知乎

我很惊讶:别人写好的Android程序,竟然可以 反编译出来!!!

照着网上的一些教程,下载了 Android Killer 等逆向工具,看到了 易语言 写的代码。

凭借着 微弱的Java语言基础,大致看懂了 悄悄话的

Android逆向初探

用工具打开apk,过一会就可以看到完整的项目工程结构,就是这么简单吗?

如果事情就这么简单,开发Android App的程序员干嘛不直接开源!!

带着兴趣,我尝试了几款 热门的App,如QQ, Alipay,当我看到了“反编译失败”,意识到,这样的工具并不是万能的~~

这一阶段我对安全没什么概念,也没有继续深入下去。

Android逆向入门

由于学习需要,需要对某App的 一部分 通信协议进行分析,具体过程略,这一过程接触到了基本的工具:apktools, jd-gui, apk-ide,最初的 Android-Killder 由于好久没更新,没有这些工具好用。

通过掉某App的逆向经历,我建立起如下概念(很浅显的认知,欢迎大神来纠正):

  • 为什么Java可以写Android程序?
    • 首先Java程序运行需要JVM,但 JVM 体量庞大,Android 为此定制了 一套 Java 虚拟机
      • Android 4.4.4及之前是 Dalvik
      • 从 5.0开始 为 ART机制
    • 有了 类似JVM的虚拟机,当然可以运行 Java代码
    • 其次,Android 系统封装了 很多API,可以供 开发者选择,类似于用 Windows API 开发win32程序
    • 最后,通过官方构建工具,将代码编译、打包成 apk,安装后即可运行
  • 逆向的原理是什么?
    • 机器运行需要机器码,转化为人类较容易理解的语言就是 汇编语言
    • 在 Java 程序中体现为,Java编译成字节码文件,交给JVM运行,而 dex 是专门为 Android 设计的一种字节码格式
    • apk本质上就是个压缩文件,可用解压缩工具打开,可以看到1个或更多的 dex 文件
    • 逆向就是根据dex文件还原出 Java代码
    • 一般流程:dex文件通过 apktools 转化为 smali 文件,用 jd-gui 可以查看对应的 Java代码

即使没有Android开发经验,看一些关键代码还是没问题的。

Android逆向遇到的问题

最大的问题 没有正向开发经验,如 shared_prefs 的使用,sqlite 数据库、okhttp,rxjava、各种设计模式,反射(reflect)等。

代码整体给我的感觉是:结构很清晰完整,但由于不懂相关代码开发原理,即使拿到了代码,也不清楚从哪里下手,在混乱中摸索会抓不住重点。

另外在 分析过程中,查阅的很多资料,大多源自 Android开发技术贴。

这种状态下,急需正向开发经验……

学到什么程度

看代码能看懂

  • 掌握基本的开发逻辑
  • 界面方面能看就行
  • 重点关注 IO、数据传递 等功能相关的 API 如何调用
  • 了解最基本的开发模式

可以开发一些小工具

  • base64,各类对称加密 等小工具,在 Android平台 可对数据进行 初步处理
  • 进阶:自己开发 抓包工具,并进行 解析
  • xposed 开发

如何学习

书籍:第一行代码

在本科阶段,就听说了这本神书

今年四月份,郭霖大神 这本书的 第三版 正式发布。

这本《第三行代码》,让大家久等了!

但这本书用 Kotlin 语言进行重写,Kotlin也是基于JVM的语言,兼容Java,Google在大会上将它视为官方语言。

经过实际测试,用Kotlin开发的 helloworld 反编译后也是 Java代码,暂且理解为:Kotlin 简化了 Java开发吧。但最后可以转为 Java 逻辑。

那么问题来了:有没有可以显示 Kotlin 代码的 apk逆向工具?目前我没找到,或许以后有。

我的目的是为了更好的从事 Android逆向,因此打算 从 第二版 读起,边学习边逆向,体会实际代码 跟 逆向代码的区别

第二版是基于 Android 7.0 设备,不算很老,等掌握后,再来学习 Android 8,9,10的新特性

有了一些逆向经验,学起来也不费劲吧……

视频

暂不考虑,

行动

计划永远是计划,行动起来才是主要的!!!

模式:一边学,同时在 csdn 做笔记

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值