吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 34356|回复: 125
收起左侧

[Android 原创] 入门篇-学习Android安全和逆向开发的路线总结

    [复制链接]
yugu88 发表于 2019-11-29 15:45
本帖最后由 yugu88 于 2019-12-13 01:04 编辑

此篇整理了最完整的--Android逆向学习线路知识体系。希望给迷糊的入门者指出一个明确的方向。

真心建议:先正向开发几年再搞逆向吧……正向都不会破解的是啥?不看代码只会脱壳?只会xposed ?远远不够,hook只是很小一部分技术,xposed是hook功能众多框架中的一个而已。相对于任何程序的开发来说,逆向知识点很少很少了,关键是基础知识,基础就是正向开发经验。

学习Android逆向之前,必备条件。【必备,出去面试正经公司的安全岗位都会问的基础问题】
  • 从事3-5年真实的Android开发工作,熟练使用C/C++,Java,kotlin,dart等Android开发常用语言;
  • 熟悉Android NDK开发和JNI技术,熟悉Log原理。最好有几年FrameWork开发经验;
  • 熟悉Android虚拟机机制,打包原理,系统启动流程,App启动流程;
  • 了解ARM、Smali汇编语言,熟悉IPC原理,能够熟练搭建IPC框架;
  • 熟练使用Fiddler和Charles抓包工具进行抓包;
  • 最好熟悉Python基础语法,并能写简单的脚本和爬虫。

第一阶段:
Android 基础知识回顾:
  • 回顾Android 开发编程,深入理解Android系统原理和层次结构,深入分析Handler源码和原理;
  • 回顾Java,C/C++,Kotlin、dart 在Android开发中必用的语言,熟悉一下几种语言混淆后的特性;
  • 回顾Android IPC和JNI的底层原理和热更新技术回顾Native开发要点,使用C++结合NDK完成Android Native开发;
  • 回顾Android开发中常用的 AMS、PMS、WMS原理和App启动中服务加载的流程;
  • 回顾Android开发中必用的 Google的MVVM框架:DataBinding+LiveData+ViewModel;
  • 回顾Android开发中必用的 Google的MVP框架:Dagger2;
  • 回顾Android开发必用的网络架构:Okhttp3+RxJava2+Retrofit2+Rxdownload4+Rxcache+Glide;

Android 逆向基础知识:
  • 熟悉Android逆向工具的使用,如apktool,IDA,dex2jar,JEB,AndroidKiller,Androguard等;
  • 深入分析APK中包含的各文件格式,分析Android系统源码中解析APK的相关代码;学习和熟悉smali语言(重点);
  • 仿微信写一个APP,并利用工具逆向出apk内的代码,并对比源码分析。


入门知识总结和实战(逆向入门):

  • 知识梳理,常用工具安装,adb命令与Linux常用命令,常见登录逻辑分析;
  • 分析ELF可执行程序,调式ELF可执行程序;ARM汇编与寄存器,ARM反汇编速成,ARM指令机器码,常用ARM指令集;
  • 反编译ELF文件与ObjDump,ELF文件解析与readelf,ELF文件解析与010Editor,深入分析ELF文件结构;IDA静态分析,IDA动态调式;
  • 简易计算器实现及分析(练习);
  • 字符串加密与解密,冒泡排序算法分析;
  • 关键android_server文件检测,IDA调试端口检测;
  • ELF可执行程序加载so库,DEX解析与dexDump,DEX解析与010Editor;
  • 实现自己的Dex解析工具与GDA(练习);
  • Androidkiller动态调试smali代码插件,AS+smalidea调式smali代码;
  • Log注入实现免注册,如何定位关键代码,去除java层签名验证,去除广告和弹窗(实战);
  • 推荐阅读《AndroidXXXXXX……》随便找本系统源码讲解的书看看吧;

Android 基础算法和安全协议:
  • 密码学,对称加密算法,非对称加密算法,散列函数;
  • 数字签名,数字证书,SSL证书检测,协议与安全协议;
  • 了解服务器端与客户端通信协议分析;
  • 使用Charles抓登录封包和验证码,协议构造与Java层MD5算法,动态调式smali代码与sign字段;
  • 协议构造类与SO层DESCBC算法,协议关键字段SIGN与SO层MD5算法,动态调试协议字段,动态调式协议关键字段SIGN;
  • 协议关键字段pwad和sign,动态调式协议字段拼接与MD5加密,分析so层OpenSSLSHA1算法;
  • 封包加密与反编译失败,使用方法跟踪分析加密;java层逆向分析,分析so层TEA算法;
  • 练习:抓取验证码和登录封包,分析协议关键字段与RSA算法,证书与RSA原理及源码分析;
  • 对称加密AES、PBE与CRC算法,数字签名RSA、DSA算法;


第二阶段:

Android 逆向进阶学习:
  • Android 系统结构深入分析,自定义 ClassLoader,自定义注解和元注解原理分析;
  • 了解AndroidNDK,静态注册,动态注册,SO加载分析,
  • App保护策略去除霸哥磁力搜素APK签名验证,一键去除签名验证,静态代{过}{滤}理,动态代{过}{滤}理Hook Activity启动函数,
  • Hook签名验证函数介绍xposed框架:Xposed框架:
  • 绕过验证码注册Xposed框架:
  • 登陆劫持Xposed框架:
  • 篡改IMEI信息介绍CydiaSubstrate框架:
  • Java层Hook:
  • 篡改系统文字颜色Java层Hook:
  • 修改方法返回值绕过登录Java层Hook:
  • 篡改游戏金币Java层Hook:
  • 篡改主机名和端口号
  • Native层Hook:
  • ADBI框架:ELFARMHOOK框架内存抠取Dex文件过反调试技巧C++游戏
  • 逆向练习:动态调试2048纯算法游戏,Zygote+Hook使2048游戏秒过关;

Android NDK与JNI全面剖析:
  • so动态库的介绍
  • JNI动态注册和静态注册
  • NDK Build 工具介绍
  • Cmake工具介绍
  • JNI.h介绍
  • Android 源码工具和技巧
  • ijkplayer 源码分析及原理讲解
  • AndFix 源码分析及原理讲解
  • Java调用so库的动态流程解析
  • NDK实现增量更新
  • 案例:NDK实现换脸等工业级图像识别
  • 案例:NDK文件实现拆分和加密处理

Android 加固防护和脱壳简介:
  • DEX文件、ODEX文件与OAT文件;
  • XML文件与ARSC文件;
  • 分析App加固的产生及背景,最初加固方式,加固技术的发展;
  • HOOK制作脱壳机,定制自己的脱壳系统;
  • DexClassLoader动态加载分析,DEX自解析重构技术;
  • 三代梆梆加固原理分析;爱加密加固原理分析;
  • 360加固与脱壳机,360加固VM与置换表;
  • 辅助脱壳机,IDA动态调式脱爱加密壳;
  • IDA动态调式脱360壳,IDA动态调式脱SO壳;
  • 脱360壳-dex2oat,脱360壳-drizzleDumper;
  • 百度加固DD大法,百度加固VM与置换表;
  • 阿里加固与脱壳机,腾讯乐固;
  • ARSC资源保护与注解;
  • 脱壳神器ZjDroid:
  • 捕鱼达3加固技术总结;

Android 脱壳与反脱壳分析:
  • Android脱壳中的思路,技巧elf结构详解:
  • 动态运行库so文件的文件组成结构elf结构详解:
  • 加载so文件的流程elf文件变形与保护,elf文件修复分析,so加壳文件修复常用调试检测方法与过检测方法
  • Android源码定制添加反反调试机制Android dvm 脱壳,Dalvik dex处理分析IDA脱壳脚本编写,Odex修复方法,
  • IDAOdex修复脚本编写

进阶知识总结和企业级实战(逆向进阶):
  • 病毒分析与脱壳学习,用Ransomware类和木马类进行学习;
  • 手动脱壳《王者X耀》练习;
  • 从0开始打造自己的破解代码库;

第三阶段:
Android 漏洞分析和挖掘:
  • 学习常见的漏洞类型和原理。例如堆溢出,栈溢出,UAF等,可以参考漏洞分析相关书籍;
  • 关注Android Security Bulletin,根据提供的diff分析漏洞成因;
  • 学习并调试以前的经典漏洞;
  • 学习漏洞挖掘fuzzing思路,参考书籍推荐《Android安全XXXX》;
  • 病毒分析与病毒脱壳实战;

Android 虚拟机技术、系统源码分析、刷机机制介绍、制作ROM刷机包:
  • ASP代码注入式写法;
  • Android 免root进行hook;
  • Android虚拟机原理,Android多开原理讲解;
  • 在apk内部写一个虚拟机,在apk内安装apk;
  • 虚拟机适配Android 10和64位系统;
  • 从0开始开发自己的虚拟机库;
  • 最完善的刷机工具 :魔趣 ROM;
  • 最完善的刷机工具 :Devices - TWRP;

大型企业级项目练手(五个项目):
  • 略……

免费评分

参与人数 46威望 +2 吾爱币 +48 热心值 +40 收起 理由
mengxinpan02 + 1 + 1 我很赞同!
tomatobobot + 1 + 1 我很赞同!
kenthin + 1 + 1 谢谢@Thanks!
linken2020 + 1 + 1 我很赞同!
pangzhixing + 1 我很赞同!
yangxiao1988 + 1 我很赞同!
deTian + 1 + 1 用心讨论,共获提升!
37927 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
Jeraxx + 1 我很赞同!
skye231 + 1 + 1 用心讨论,共获提升!
hh-design + 1 用心讨论,共获提升!
快乐heni + 1 我很赞同!
承影弟弟12 + 1 + 1 我很赞同!
7lsu + 1 + 1 我很赞同!
dvorah + 1 谢谢@Thanks!
SpongeB0B + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
miner123 + 1 我很赞同!
破碎时间 + 1 + 1 我很赞同!
smallsmallcat + 1 + 1 谢谢@Thanks!
hexio + 1 + 1 谢谢@Thanks!
snoppy + 1 + 1 我很赞同!
骚气的御风 + 1 + 1 热心回复!
indulge9095 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
rainCat42 + 1 我很赞同!
小白想学技术 + 1 + 1 谢谢@Thanks!
Deuez + 1 + 1 谢谢@Thanks!
wu88792088 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
dimx + 1 + 1 部分赞同,有安卓开发基础,足矣
purwind + 1 + 1 我放弃。。。
bfbee + 1 + 1 谢谢@Thanks!
SMUwyh97 + 1 + 1 热心回复!
shiyier + 1 + 1 谢谢@Thanks!
qtfreet00 + 2 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
莫流云 + 1 + 1 用心讨论,共获提升!
阴月有缺 + 1 + 1 谢谢@Thanks!
rig + 1 + 1 谢谢@Thanks!
nbbdqt + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ll52wj1pjo + 1 + 1 谢谢@Thanks!
月社琉璃 + 1 + 1 我很赞同!
A1pine + 1 + 1 用心讨论,共获提升!
smile5 + 1 膜拜
kamtang6688 + 1 + 1 膜拜大佬,能请教下APP防抓包破解思路么?
LanYun + 1 用心讨论,共获提升!
孤僻木鱼 + 1 + 1 谢谢@Thanks!
风绕柳絮轻敲雪 + 2 + 1 我很赞同!
windy_ll + 1 + 1 强啊

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| yugu88 发表于 2019-11-29 15:59
本帖最后由 yugu88 于 2019-12-6 23:27 编辑

今天看了楼下一些野路子出身的评论,我想纠正一下,安全和逆向并不是你只会用xposed,你无论怎么改xposed源码我随便写个App都能识别到你在hook,真正的安全方向的招聘也不会玩这么low的技术,即便是在虚拟机里或者改ROM,xposed存在的原理是无法改变的,玩逆向知道Android系统的启动流程吗?知不知道App的启动流程,在这个过程中为什么会hook??假如你现在是个小白,我告诉你随便改一下钉钉的自动打卡,算是一个需求,你说从哪学?从哪入手?学xposed ?太low……hook只是安全和逆向开发中很小的一部分内容,即便是hook第一任务是什么?必须拿到上下文,application的上下文还是activity的上下文??上下文的最终父类是谁,上下文是怎么来的?从按下电源键开机到点击App图标启动App,这个过程中在哪一步最容易拿到数据??我见过一些安全培训学校出来面试逆向的,连Android工程都不会创建,给他们源码都看不懂,逆向绝大多数的应用场景是分析应用,分析我们想分析的App的实现逻辑和算法,开源的virtualApp源码有几个Android开发能真正看得懂,又改的出来??实际大公司的Android项目比这个要复杂的多,源码如果都看不懂,拿着逆向出来的abc去分析更看不出来……我知道很多人根本就不看代码,其实就是找工具脱个壳,会个xposed嘛,这样能干什么?如果逆向只是要学会这些,新手俩小时就够了…… 我们提出的是企业中的真正需求和能力,三脚猫的小公司就不必说了,顶多就是褥个羊毛,倒卖个号,大点的公司都有安全部门,甚至安全实验室,我提到了再怎么改xposed都能被我检测到,有这种能力的人太多太多了,真正的逆向和安全开发也许道路很长,但是必须走到正道上来,没有人是靠xposed分析漏洞的……野路子走不长久,新手更要把基础打扎实,买几本Android安全相关的书看看。
愚无尽 发表于 2019-11-29 16:16
yugu88 发表于 2019-11-29 15:59
随便整理了一下,老铁们觉得还有什么内容遗漏可以留言……

厉害,逆向10年的老鸟。
你上当了 发表于 2019-11-29 17:18
强大强大强大强大强大

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yugu88 + 1 + 1 用心讨论,共获提升!

查看全部评分

siphre 发表于 2019-11-29 17:45
大佬太强了,膜拜,现在您处于哪个阶段
dizzy_peanut 发表于 2019-11-29 18:23
膜拜大佬
Aloneranger 发表于 2019-11-29 21:13
感谢!!!
残鹤 发表于 2019-11-30 08:58
可以的,大佬。思路清晰,可惜我不会
richens 发表于 2019-11-30 10:29
路还很长!
xiaozaiziwyt 发表于 2019-11-30 10:51
谢谢,收藏了!
Jamsay 发表于 2019-11-30 11:30
分析的很有道理
ll52wj1pjo 发表于 2019-11-30 15:54
有点难, 但是顶了
 楼主| yugu88 发表于 2019-12-6 22:57
今天看了一些野路子出身的评论,我想纠正一下,安全和逆向并不是你会用xposed,你无论怎么改xposed源码我随便写个App都能识别到你在hook,真正的安全方向的招聘也不会玩这么low的技术,即便是在虚拟机里或者改ROM,xposed存在的原理是无法改变的,玩逆向知道Android系统的启动流程吗?知不知道App的启动流程,在这个过程中为什么会hook??假如你现在是个小白,我告诉你随便改一下钉钉的自动打卡,算是一个需求,你说从哪学?从哪入手?学xposed ?太low……hook只是安全和逆向开发中很小的一部分内容,即便是hook第一任务是什么?必须拿到上下文,application的上下文还是activity的上下文??上下文的最终父类是谁,上下文是怎么来的?从按下电源键开机到点击App图标启动App,这个过程中在哪一步最容易拿到数据??我见过一些安全培训学校出来面试逆向的,连Android工程都不会创建,给他们源码都看不懂,逆向绝大多数的应用场景是分析应用,分析我们想分析的App的实现逻辑和算法,开源的virtualApp源码有几个Android开发能真正看得懂,又改的出来??实际大公司的Android项目比这个要复杂的多,源码如果都看不懂,拿着逆向出来的abc去分析更看不出来……我知道很多人根本就不看代码,其实就是找工具脱个壳,会个xposed嘛,这样能干什么?如果逆向只是要学会这些,新手俩小时就够了…… 我们提出的是企业中的真正需求和能力,三脚猫的小公司就不必说了,顶多就是褥个羊毛,倒卖个号,大点的公司都有安全部门,甚至安全实验室,我提到了再怎么改xposed都能被我检测到,有这种能力的人太多太多了,真正的逆向和安全开发也许道路很长,但是必须走到正道上来,没有人是靠xposed分析漏洞的……野路子走不长久,新手更要把基础打扎实,买几本Android安全相关的书看看。
 楼主| yugu88 发表于 2019-12-13 00:36
DS_FLY100 发表于 2019-12-12 13:45
一上来就啥都看得懂?什么逻辑,了解一个东西, 又不用一上来就了解原理。

真是对牛弹琴,你一点Android都不懂怎么看源码??逆向不看代码??纯靠猜吗?脱壳工具也花钱买的? 我不跟你们这些野路子较真,走不长久。Android不够精通都走不长远,更何况野路子,一点Android不懂能干出什么来呢?

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
Eaysuild.xean + 2 + 1 我很赞同!

查看全部评分

linurm 发表于 2019-12-26 13:18
写得很好,站在更高的地方才能看见更多的东西
ruleihui 发表于 2019-12-28 22:01
本帖最后由 ruleihui 于 2019-12-28 22:06 编辑

     浪费了两天时间在这里终结.之前看到某大佬逆向某企业app实现自身的调用接口,看着结果真是看的心潮澎湃.
之后一直就看大佬的一些日记和学习记录发现超多不懂的名词,自身也依据大佬笔记尝试通过百度和一些工具实现逆向过程
结果完成几个阶段后就直接卡死了,完全进行不下去,本身的学习计划也被打断了(自己意志不坚定).....一直
追踪最后到了这里.....又看到版主的零基础教学,结果说是零基础,但是预习资料都看不懂.....好像很多是汇编或者c方面的东西
我本人是学Java的.....自认有了一定的编程能力,但也是看的一头雾水,直到看到这里算是彻底打醒了....还是老老实实先学好准备
工作的东西,再将这当做兴趣慢慢学习吧....收藏了
小小123 发表于 2019-12-30 00:15
我觉得逆向应该 安卓逆向应该学java基础  王爽的汇编(看得懂基本语法) 然后到程序员的自我修养(看2遍不然什么叫静态链接 动态链接都看不懂 所谓的hook就是把底层的nop改为jmp实现的)顺便学点简单的算法冒泡啊  链表啊 然后看第一行代码 做出项目 过一遍流程 最后到Android应用安全防护和逆向分析 然后基本可以自己动手了
LoLik 发表于 2020-1-10 09:49
安全活很杂,今天碰到个安卓,明天还有js和pc的内容.
以需求目标作为选择投入吧,不能用有限的时间,挑战无限的知识.
淡漠清香A 发表于 2020-1-19 10:59
感谢指引学习方向
azreal5286 发表于 2020-2-14 11:30
感谢大佬!非常有用
sam喵喵 发表于 2020-5-5 20:29
条例清晰,逻辑严密,言语恳切,知识面更是周全!
楼主,我们合伙出本书如何?
bc001 发表于 2020-5-9 08:27
大佬说的确实有道理。希望大佬能推荐些各阶段配套的书籍。
承影弟弟12 发表于 2020-5-12 09:41
大佬讲的很对,高屋建瓴的讲出来,但是先手没有基础,就搞简单的,从兴趣来玩玩野路子,有了兴趣自然就会发现自己的不足,然后就得进阶,然后可以参考大佬给的路线看看
yangxiao1988 发表于 2020-7-31 14:37
醍醐灌顶,膜拜大佬
lyc0 发表于 2022-4-23 22:21
看评论后我觉得分情况,如果以此为饭碗的话,肯定要从基础开始,如果只是兴趣爱好的话就像学书法一样,以临摹开始,有点小成果得到想要的,基本就到头了。
DS_FLY100 发表于 2019-12-4 17:14
我是0基础,大学毕业就搞逆向的,我学的还是硬件,更没学过Android开发。我目前搞了三年逆向,java层hook,native层hook,手动脱壳现在也都能搞,小白也可以直接从逆向入手。我刚开始啥也不会,从第一个crackme开始的我的逆向之旅,破解了第一个crackme,喜悦之情溢于言表。我感觉学习逆向,还是要有这种成就感。上来就研究原理,看底层机制,估计很多人坚持不了几天就放弃了。

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
itherone + 1 + 1 我很赞同!
乘子的橙子 + 1 我很赞同!

查看全部评分

JFF 发表于 2019-11-30 23:23
不是很赞同楼主观点,部分赞同
逆向是需要正向作为部分基础,但是并不需要楼主所说的3-5年开发
很多人逆向是从兴趣开始的,此时并不需要太多基础
但是当你稍微到了稍微深入一点的层次时,你就会感觉有必要掌握一些安卓基础信息
当你再进入更高层次,想更深入了解,或许就会感到掌握开发这些很重要


类比一下 楼主的观点就像是 孩子连拼音都不会,学什么认字,看了不会读(额有些偏激了 见谅)

免费评分

参与人数 4吾爱币 +2 热心值 +3 收起 理由
乘子的橙子 + 1 我很赞同!
耳食之辈 + 1 我很赞同!
zhu0574 + 1 + 1 我很赞同!
masterzht + 1 我很赞同!

查看全部评分

梦游症晚期 发表于 2019-11-30 11:55
真扯淡,照你这样说要学到死才能学会!
鹿慕 发表于 2019-11-30 20:17
第一条必备条件已经打死了一批新人了
头像被屏蔽
xiaoshan2016 发表于 2019-12-29 01:13
提示: 作者被禁止或删除 内容自动屏蔽
jackmachel 发表于 2022-8-1 11:13
怎么感觉这不是入门级的
nuonichi 发表于 2022-7-31 06:46
感谢感谢
shan0404 发表于 2022-7-30 11:09
路有了,接下来就是要一直往前有下去!
Xue1203 发表于 2022-7-27 14:56
大佬说的这些,感觉要学一辈子啊,恐怖虽然知道大佬说的都是对的,但是对于不是学之类专业出生的又有几人可以做到上述说的那些,好多人都是出于兴趣在学习,遇到什么难点就去学什么,然后战胜它,特满足,我觉得这样就够了。
了覅君 发表于 2022-7-27 14:00
承影弟弟12 发表于 2020-5-12 09:41
大佬讲的很对,高屋建瓴的讲出来,但是先手没有基础,就搞简单的,从兴趣来玩玩野路子,有了兴趣自然就会发 ...

赞同👍🏻
wu767877218 发表于 2022-4-23 17:25
看到最后,兴趣使然,玩到哪步是哪步
ruhe 发表于 2022-4-23 14:17
lz太偏激了,很多人只是凭着兴趣,并不一定是这个专业的,破得了就破,破不了走人,而已!
Lion_52 发表于 2022-3-30 15:24
感谢楼主
tigrexz 发表于 2022-3-29 11:56
成功劝退了呀喂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表