为什么要学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 做笔记

【2020年】Android开发学习思考及规划相关推荐

  1. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

  2. Android开发学习之以CameraAPI方式实现相机功能(一)——快速实现相机

    今天无意当中发现在<Android开发学习之基于ZBar实现微信扫一扫>中的一部分代码可以用来以硬件方式实现一个照相机的功能,在<Android开发学习之调用系统相机完成拍照的实现& ...

  3. android培训内容明细,记录Android开发学习

    记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...

  4. android开发学习之路——连连看之游戏逻辑(五)

    GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...

  5. Android开发学习---使用Intelij idea 13.1 进行android 开发

    Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...

  6. 《Java和Android开发学习指南(第2版)》—— 1.5 本章小结

    本节书摘来异步社区<Java和Android开发学习指南(第2版)>一书中的第1章,第1.5节,作者:[加]Budi Kurniawan,更多章节内容可以访问云栖社区"异步社区& ...

  7. 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结

    本节书摘来自异步社区<Java和Android开发学习指南(第2版)>一书中的第2章,第2.10节本章小结,作者 [加]Budi Kurniawan,更多章节内容可以访问云栖社区" ...

  8. Android开发学习总结(四)——Eclipse在线安装ADT插件

    Android开发学习总结(四)--Eclipse在线安装ADT插件 要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件 ...

  9. android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...

    对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...

  10. Android 开发学习记录(4)---- httpclient使用(三)

    之前在Android 开发学习记录(3)---- httpclient使用(二)中介绍了如何使用httpclient访问需要账户登录的网址,当然首先是要有一个合法的登录账户. 但是现在好多网站在登录时 ...

最新文章

  1. ABAP git客户端
  2. MySQL主从服务器配置工作原理
  3. 5.22青海云南同震
  4. mysql之分页查询
  5. 函数自执行-一元运算符
  6. C++数据范围及字节对照表
  7. myeclipse与mysql连接_myeclipse 与 mysql 的连接
  8. 分数化简通分:最大公约数与最小公倍数
  9. 基于javaweb+jsp的学生档案管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)
  10. P3717 [AHOI2017初中组]cover
  11. css3+html仿小米官网商城项目。
  12. 计算机丢失dll文件怎么弄,电脑缺少DLL文件该怎么办? 这个办法轻松解决!
  13. 投稿经验分享之五:申请专利
  14. 动态规划:8行代码搞定最大子数组和问题
  15. 手把手教你 Tableau 绘制堆积柱状图(二)
  16. 做玫瑰花的方法 用纸_史上最简单的纸玫瑰花的折法教程教你用纸编法做玫瑰花...
  17. 英科医疗冲刺港交所上市失败:6个月市值腰斩,刘方毅拟大幅减持
  18. pr 是什么——可以做什么
  19. 四川省信创联盟2023年第一次理事会顺利召开,MIAOYUN荣获“信创企业优秀奖”!
  20. 激动的10秒钟==艰辛的1095天

热门文章

  1. 免费好用的内网穿透 端口映射工具 实现一键远程 外网访问内网
  2. 智能客服搭建(4) - 语音流的分贝计算
  3. WPF剪切板问题-OpenClipboard HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN))
  4. 基于CameraLink的串行口通讯
  5. 抛开理论公式,用符合直觉的方式理解四旋翼无人机控制
  6. 时间管理PPT课件该怎么做?
  7. [06]项目实战-移动端流体布局
  8. 成都11区+4县+5市高分辨率边界kml
  9. 怎样用计算机粉碎文件夹,电脑粉碎文件用什么软件好,怎么彻底粉碎电脑文件...
  10. Sonix SN9P701 OCR点读笔二维码识别源码