什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战-程序员宅基地

技术标签: 安卓  Android逆向  反编译  进阶学习  android  移动开发  程序人生  

前言

“安卓逆向”不是一个新名词,它伴随着安卓开发而生,但是一直以来,仅限于技术圈内流行,对于非技术圈人士,往往把“APP破解”和“安卓逆向”划等号。这是写给非技术圈人士看的,在于普及安卓逆向的概念及其应用场景。

安卓逆向是什么?

目前百度知道都没有收录安卓逆向这个词条,大部分能搜索到的资料都是技术人员写的偏技术类的文章,往往充斥着代码和各类工具集合,非技术人员一看就比较懵逼。

简单地来说,安卓逆向是对已经打包好的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 加固和多渠道打包自动化实践

  • 背景
  • 前期技术调研
  • 我们实际需求
  • 加固打包流程图
  • 完整的代码实现
  • 一些坑
  • 集成VasDolly
  • VasDolly的原理介绍:
  • 最后vasdolly完整代码

只需配置360账号的加固+渠道的gradle插件

  • Android-pack-plugin
  • 使用步骤(可参考sample)
  • TODO

手把手教你逆向分析Android程序

  • 反编译
  • Android 的签名保护机制到底是什么?
  • Android系统如何获取签名
  • 关于如何注入?

资料领取

文中所有的学习资料都是免费分享给大家的,扫一扫下方CSDN官方认证二维码免费获取↓↓↓

最后

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!!!!!!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/datian1234/article/details/119736515

智能推荐

DC电源模块的 PCB设计和布局指南_dc电源连接器pcb-程序员宅基地

文章浏览阅读349次,点赞3次,收藏7次。4. 信号和电源之间的隔离:为了避免信号和电源之间的互相干扰,应该合理布局信号和电源线路。1. 选择合适的PCB尺寸和层数:根据电源模块的尺寸和功能需求,选择合适的PCB尺寸和层数。DC电源模块的PCB设计和布局是一个关键的步骤,它直接影响到电源的性能和稳定性。9. PCB堆叠和布线规则:遵循PCB堆叠和布线的规则,如避免交叉布线、减小导线长度、保持信号和地线平行等,以减少干扰和串扰。7. 输入和输出保护:为了保护电源模块和外部设备,可以在输入和输出端添加适当的保护电路,如过压保护、过流保护、短路保护等。_dc电源连接器pcb

题解_翻转字符串中各单词的字母顺序_翻转字符串中每个单词的字符顺序-程序员宅基地

文章浏览阅读434次。文章目录一、题目描述二、解决思路三、主要方法四、源代码五、运行结果一、题目描述编写一个方法,将一段文本中的各个单词的字母顺序翻转样例输入:“I like writing code best”样例输出:“I ekil gnitirw edoc tseb”二、解决思路1 将空格作为分隔符分割字符串,得到字符串数组2 倒序遍历字符串数组,将每个字符串加入StringBuilder字符串中3 翻转StringBuilder字符串三、主要方法public String[] split​(Str_翻转字符串中每个单词的字符顺序

探索 ProcInfo:强大的MacOS进程信息工具-程序员宅基地

文章浏览阅读217次,点赞3次,收藏4次。探索 ProcInfo:强大的MacOS进程信息工具项目地址:https://gitcode.com/objective-see/ProcInfo在软件开发和系统管理员的世界中,了解系统的运行状态至关重要。对于 macOS 用户,我们有了一个名为 ProcInfo 的强大工具,它提供了一种直观且全面的方式来查看和监控你的操作系统中的进程信息。项目简介ProcInfo 是一个免费、开源的应...

探索React Native:Wix Incubator的Crash Course项目深度解析-程序员宅基地

文章浏览阅读670次,点赞8次,收藏11次。探索React Native:Wix Incubator的Crash Course项目深度解析项目地址:https://gitcode.com/wix-incubator/react-native-crash-course在现代移动应用开发中,React Native是一个备受开发者喜爱的技术框架。它允许您使用JavaScript和React库构建原生iOS和Android应用。为了帮助新手...

基于Java学生成绩管理系统设计与实现(源码+部署文档+报告)_基于java的学生成绩管理系统的设计与实现-程序员宅基地

文章浏览阅读1k次,点赞20次,收藏22次。采用servlet+jsp+jdbc+mysql的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的学生成绩管理系统,前端采用jquery+javascript+jstl进行数据传输以及处理,bootstrap写界面。_基于java的学生成绩管理系统的设计与实现

linux加载虚拟sriov网卡,网卡直通SR-IOV技术-程序员宅基地

文章浏览阅读1.5k次。相关技术IO虚拟化简介全虚拟化通过VMM来模拟IO设备实现,VMM截获GuestOS的IO请求,通过软件模拟真实的硬件。VMM必须处理所有虚机的IO请求,然后将所有的IO情况序列化为可以被底层硬件处理的单一IO流。好处是GuestOS不需要考虑硬件设备的情况。问题是效率相对较低。例如 qemu。一个完整的数据包从虚拟机到物理机的路径是:虚拟机--QEMU虚拟网卡--虚拟化层--内核网桥--物理网卡..._qemu sr-iov

随便推点

PostgreSQL JDBC 源码分析之fetchSize-程序员宅基地

文章浏览阅读6.5k次,点赞5次,收藏16次。JDBC的statement对象,有一个setFetchSize方法,参数是一个int值,其作用是,执行查询时,一次从服务器端拿多少行的数据到本地jdbc客户端这里来还有一个方法:setMaxRows,这个方法,作用是JDBC最多返回多少行数据给调用者。举个例子:一个表,有100行数据,sql语句为select * from table,fetchsize设置为20,maxrows设置为5

四种方法给Vmware虚拟机清理瘦身_hypver-v 清理磁盘大小-程序员宅基地

文章浏览阅读5w次,点赞23次,收藏89次。随着VMware虚拟机使用时间的增长,其所占用的空间也越来越大,本文来说说怎么给VMware虚拟机占用的空间进行瘦身。方法一:VMware自带的清理磁盘这个方法是VMware自带,具有普适性,对快照等文件不造成影响。步骤如下:1、将要清理的虚拟机关机。2、右键该虚拟机——>管理——>清理磁盘,VMware会自动提示可清理的磁盘大小,点击确定等待清理完毕即可。方法二:VMwa..._hypver-v 清理磁盘大小

spark的应用场景和基本原理_spark在生活中的应用场景及工作原理-程序员宅基地

文章浏览阅读7.1k次。摘要:spark的优势:(1)图计算,迭代计算(训练机器学习算法模型做广告推荐,点击预测,同时基于spark的预测模型能做到分钟级)(2)交互式查询计算(实时)spark的主要应用场景:(1)推荐系统,实时推荐 (2)交互式实时查询spark特点:(1)分布式并行计算框架(2)内存计算,不仅数据加载到内存,中间结果也存储内存(中间结果不需要落地到hdfs)还有一个特点:Spark在_spark在生活中的应用场景及工作原理

python 三次根号_开3次方根(多次方根)的代码:二分法,python-程序员宅基地

文章浏览阅读6.5k次,点赞3次,收藏8次。基本问题:给出n值,求其对应的三次方根的值(该问题可以扩展到多次方根的值) 解决思路:该问题的解决思路可以有两个:1)类比于在一堆数列里找某一个符合条件的值x,条件为:,可想而知,最常用的搜索方法为二分法。 其基本思路为:假设n=7step1: 7/2=3.5;=42.875>7; step2: 3.5/2= 1.75;=5.359<7; step3: (1.75+3.5)/2=2.6..._用不同迭代格式求的根,并研究不同迭代格式根号三python,

Linux sysctl命令查看内核参数_sysctl 查看配置-程序员宅基地

文章浏览阅读553次。sysctl命令_sysctl 查看配置

python刷题+leetcode(第一部分)_python leetcode第一行-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏6次。一,题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution: def find(self,number,matrix): rows=len(matrix)#行数 cols=len(matrix[0]..._python leetcode第一行

推荐文章

热门文章

相关标签