简单地来说,安卓逆向是对已经打包好的APP进行反编译、源码分析了解APP实现逻辑的一门技术。我们可以把安卓安装时用到的APK文件看作一个加密后的压缩包,逆向就是要最大程序地还原出APK打包之前的源码。

逆向需要用到解密、反编译、解压缩等技术,想要100%还原APK的源码几乎是不可能的,所以在实际进行逆向分析的时候,一般都是根据想实现的目的,分析出APK的部分源码和实现逻辑,然后对这一部分源码进行修改后与原始的APK打包在一起,这样就获得了一个实现自己特定目的的APP。

安卓逆向到底能做什么?


APP自动化执行程序脚本

比如有这么一个场景:某APP在某天某一时刻将推广一个领代金券的活动,只要登录账号,进入领取页面即可领取一张面额100元的无门槛代金券。很显然,这是一个可以撸羊毛的活动,如果我收集了100个账号,在那天利用某些手段确保每个账号抢到一张代金券,那我就能抢到100*100=10000元的代金券,再利用网络把这些券打7折卖出去,就能赚个7000块,是不是很爽?!通过安卓逆向分析,我就能把登录、领券的动作做成一个自动化执行的插件,我先把所有账号和密码保存起来备用,到了领券的开放时间,立即自动登录、领券,一个账号领券完,自动切换登录另一个账号,一气呵成就把所有账号的券都领到手。这就是安卓逆向的用途之一,可以自动化批量执行APP的一系列动作。类似地,如果想实现批量登录账号、点赞、评论,同样也是可以的。

修改APP的功能

不知道大家有没有遇到过,有些APP经常提示要更新,有些必须强制更新才能使用,可我就是不想更新,这时候也可以用逆向技术来实现修改APP的某些功能。通过逆向分析,找到触发更新的代码,然后把它屏蔽掉,这样打开APP后就再也不会提示更新了。

安卓逆向学习路线


以下是笔者自学笔记,以破解某目标apk的方式进行学习,中间辅以原理性知识,方便面试需求。

Android逆向入门流程

  • 获取目标apk

  • 确定逆向目标

  • 拖动目标文件到集成工具

  • 加固

  • 集成工具分析

  • 减少混淆干扰

  • 定位目标

  • 分析业务逻辑

  • 确定逆向方法

  • 使用apktool进行反编译

  • 得到.smali

  • 源码调试

  • 回编译app

  • 签名

Android逆向工程必备工具

  • SMALI/BAKSMALI

  • ANDBUG

  • ANDROGUARD

  • APKTOOL

  • AFE

  • BYPASS SIGNATURE AND PERMISSION CHECKS FORIPCS

  • ANDROID OPENDEBUG

  • DARE

  • DEX2JAR

  • ENJARIFY

  • DEDEXER

  • FINO

  • INDROID

  • INTENT SNIFFER

  • INTROSPY

  • JAD

  • JD-GUI

  • CFR

  • KRAKATAU

  • PROCYON

  • FERNFLOWER

  • REDEXER

  • SIMPLIFY安卓反混淆工具

  • BYTECODE VIEWER

Android 加固和多渠道打包自动化实践

  • 背景

  • 前期技术调研

结语

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。
目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。

大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。

外链图片转存中…(img-NfKoKGti-1643889138266)]

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战相关推荐

  1. Android音视频学习系列(九) — Android端实现rtmp推流

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  2. 通过安卓逆向来学习安卓开发

    记一次逆向学习的过程 起因:最近在做bilibili缓存视频合并工具,适配Android 11时需要获取Android/data目录的读取权限,根据APP"清浊"开发者的帖子: 如 ...

  3. 【android】从零开始学习安卓录制回放程序制作需要多少天?

    文章目录 序 功能需求 总结 编写目标程序 测试程序编写 测试程序界面代码 Xposed学习 夜神模拟器下载安装 测试程序Hook思路 hook EditText hook click listene ...

  4. android复位机器人图片,安卓(Android)新图标!小绿机器人换脸啦

    作为知名的谷歌开源系统,安卓(Android)占据了手机操作系统的半壁江山.而随着新版本Android 10的发布,一个新的Logo设计方案也随之上线. 新的设计方案不仅重新设计了字体和小机器人图标, ...

  5. android版本分布报告,安卓网Android用户地域分布报告:广东占比20%

    2011年间,Android全球市场份额超越iPhone,易观2011Q4数据显示,国内Android手机销量份额已从Q2的46.8%上升至68.69%,安卓网行业数据分析处,就安卓市场的用户使用数据 ...

  6. android 地图雷达,深入学习百度地图Android SDK v4.0.0【第七关】周边雷达

    本来想学习一下Andriod Wear的开发,但是买不起Wear啊!直接跳过,开始学习周边雷达地图部分!这个功能非常有用,能知道你周围和你使用相同软件的人,牛郎织女一人安装一个,再也不用去鹊桥相会了, ...

  7. android recovery 模式吗,安卓(Android)手机Recovery模式各项中英文对照详细说明

    Recovery是安卓系统的一个特殊工作模式.使用它可以在未开机的状态下实现系统更新.还原出厂设置.清除手机缓存等.通过一些第三方工具,还可以实现系统的备份.还原.安装主题等. Recovery的界面 ...

  8. 学 android需要什么基础,学习安卓开发需要什么基础?

    学习程序开发一般都需要懂一些一定的C语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程.当然学习安卓程序开发除了懂C语言之外,还需要掌握一定的Java基础知识.Linux基础知识 ...

  9. Android音视频学习系列(五) — 掌握音频基础知识并使用AudioTrack、OpenSL ES渲染PCM数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

最新文章

  1. python计算学习_跟老齐学Python之用Python计算
  2. 对于知识的可连接性的理解
  3. 大龄程序员怎样渡过中年危机?(转)
  4. centos svn服务器端口配置文件,centos下配置svn服务器
  5. 王俊和尹玉新团队合作开发代谢组联合人工智能肺癌早期检测新方法
  6. java面试-JVM调优和参数配置
  7. 数据库的varchar长度的限制以及对性能是否有影响
  8. linux c socket 完全端口,浅谈 Linux C语言 socket 网络编程
  9. manjaro i3wm 的一些配置
  10. 20000本当当豆瓣畅销书电子书免费领取,免费送
  11. python docx首行缩进两字符的设定方法
  12. MyBatis一对多查询collection三表三层查询
  13. 2018 新年快乐 万事如意
  14. 华为手机8.0.0怎么找到云相册_华为手机里的相册照片删除了怎么找回?
  15. 20145212 罗天晨 网络欺诈技术防范
  16. Python学习记录-项目案例实现:爬虫篇 02
  17. IP广播无法登陆服务器系统,IP广播服务器软件(加密狗)SPR-03WJ
  18. java 变量不初始化_Java之哪些情况下变量不会初始化
  19. C++11 强类型枚举和普通枚举
  20. 谷歌浏览器——默认搜索为百度

热门文章

  1. MDK5 nRF BLE(蓝牙低功耗)
  2. 北工大2014c语言真题及答案新课标,北京工业大学2006--2007学年《面向对象程序设计》期末考试题及答案...
  3. 快递查询单号查询,怎么查物流到哪了
  4. Coursera吴恩达机器学习week4笔记
  5. 策略迭代与值迭代的区别
  6. 上海交大 计算机科学家,世界顶尖科学家论坛丨上海交大计算机系教授俞凯:科研经费支持应少些“风险意识”...
  7. Word2019单个页面显示多个文件
  8. MySQL攻略(2)
  9. 爱奇艺动态化框架 Qigsaw 正式开源!
  10. 二进制十进制十六进制转换_二进制数制到十进制数制的转换