爬虫工程师教你如何入门Android逆向

爬虫工程师教你如何入门Android逆向_第1张图片

文章来源: 爬虫工程师教你如何入门Android逆向_第2张图片 菜鸟学Python编程 

作者 Lilac

背景

这篇文章写给Python爬虫工程师们,互联网行业的处境越来越艰辛,流量越来越涌向移动端,爬虫和反爬的攻防不断升级,这一切的一切,都让我们只能一刻不停的学习新技能,才能保持竞争力和养家糊口(一群单身狗,挣的钱连自己都养不活) 。

App逆向不断出现在爬虫工程师的日程表里,可是到底该怎么入门App逆向?

     1. 指出一些自学的误区

     2.推荐一些入门的学习资料

这篇文章的目标读者是计划学习Android逆向的爬虫er,他们可能有如下特征

  • 几乎没有Java基础

  • 几乎没有Android基础

  • 对Android逆向的思路和工具缺少了解

下文会一一解答这些困惑和焦虑,但适合每个人的学习模式也各有不同,可以选择性的实践。本文对Android逆向老手帮助不大,但如果老手愿意在评论区分享经验和教训,给过来人一些指点,我表示衷心的感谢。

一、自学Android逆向的误区和陷阱

1.1. 不要试图熟练掌握Java编程和Android开发后再开始学习逆向

Java是一门复杂精妙 的语言,但你又不是要当Java开发工程师???

爬虫工程师教你如何入门Android逆向_第3张图片

你可能很想反驳,那我不懂Java,不懂Android怎么可能搞得了逆向,佛系逆向随缘逆向?别别别,我可没说这话,我指的只是入门时不必精通Java和Android。原因有一堆,但我认为最主要的原因在于——开发和逆向的关注点不同。

我们先罗列一下Android面试和实际应用开发中出现的一些技术关键词:

Java虚拟机,Davlik虚拟机,UI布局,四/五大组件及其细节,Intent,Handler,数据持久化,进程线程和异步,	
SharedPreferences,屏幕适配,兼容性,Android消息机制,WebView,bitmap,Java与C++如何相互调用,	
第三方SDK接入,内存泄漏和管理,网络通信和优化,热修复和插件化,Dex分包和优化,Kotlin语言	
RecyclerView,注解框架,音视频的处理,设计模式,应用框架,其他优化……

而我们破解时需要关注什么?尤其是对爬虫的逆向需求来说,简而言之,我们在破解加密字段如何生成,那我们的关键词是这些:

抓包和反抓包,App的混淆,加固,高度混淆	
加解密算法,Jni,放在C中的加密,smali	
Java层动态调试,Jadx,Jeb,ida

开发人员需要开发和实现App的各种功能、关注数十个厂商上百个机型的适配、Apk体积的优化,App性能的优化,更吸引用户的UI,更友好的bug解决机制(热修复),而我们破解,一般来说,只需要关注应用的网络通信、加解密方法、安全防护即可。开发和逆向的目标完全不同,所以你并不需要对开发的那一套了然于胸,才能开始破解。

除此之外,App的安全问题只是Android开发的众多议题之个。一部分Android开发人员,甚至连反编译App的流程和工具都只是听闻过而已,尤其是对于小厂/一般App,安全问题它们能投入的精力十分有限,这个原因十分好理解。

狗仔和偷拍只是明星成名之后才会烦恼的事,而十八线女星正在下雨的横店乞讨着生活,App也是这样,如果你搞的不是大厂App(腾讯系/阿里系/今日头条系等)、超级App(支付宝/微信/抖音/快手等),或者特殊用处的App(买票/支付/网商等),那么开发人员给App盘个市面上常见的加固,弄个so层的加密,已经是它们防护的上限,可能这些不算太简单,但难也难得有限。因为App的用户留存和开发人员的温饱才是他们最要命的议题。

所以,你不必花太多时间了解和实践纷繁复杂的Android开发知识,只需要掌握Java的基础语法,Android的基础知识,就可以专注于逆向所需要关注的各种技术和方法了。

1.2. 不要好高骛远

爬虫工程师教你如何入门Android逆向_第4张图片

1.3. 不要收集过多的资料 & 分辨资料的时效性

爬虫工程师教你如何入门Android逆向_第5张图片

1.4. 不要自负,觉得Android逆向很简单

二、Android逆向入门的资料和基础

这些书和内容都是非常好的,我这次没有提供百度云链接,网上资源很多,我很希望大家通过pdf资料被大佬的文笔和内容所吸引和折服,然后购买正版书籍放在身边看。

一、基础中的基础

《Java 核心技术 卷一》1-6章节	
主要关注里面的这些基础:Java基础数据类型,Java面向对象和三大特性,Java接口,String类,Array,Map。	
你看完这几章,大致就可以看懂简单的Java代码了。

2.Android

《第一行代码(第2版)》	
这本书简单,直白,通俗易懂,写的很好,是公认的Android入门书。	
你可以认认真真照着例子全部敲一遍,也可以只走马观花了解一边App的开发流程,看完本书,你会明白一个Android App是怎么从无到有。

3.加解密

《Java 加密与解密的艺术 (第二版)》	
讲了如何使用Java实现各种各样的加密,这本书是工具书,建议买一本,很不错,用到就翻翻,平时上厕所也可以当成厕所读物。	
就这么简单,你就可以开始Android逆向之旅了,这是最简单的配置,按照需求,你后续可以学习这些东西。

二、Android逆向书籍和资料

1.《Android 软件安全权威指南》

白色的封面,我爱叫它白皮书。这本书真的太棒了,如果你想入门Android逆向,这本书几乎没法跳过。Android逆向入门需要的方方面面,它都涉及到了,而且讲的还都有内容有深度。	
这本书适合按照需求找章节看,如果按照顺序看,你可能会死在第三章“Dalvik可执行格式与字节码规范”	
我重新排一下序,同时,我建议第一章的软件安装和环境配置,别急着去实践,可以装了java开发环境后,用jadx或者jeb万金油直接撸,但如果你喜欢敲命令行,用无大碍,下面的阅读顺序只是我个人喜好,读者自行甄别和选择。	
第一、二章——环境搭建和如何分析Android程序,浏览即可。	
第三、第四章——Dalvik可执行格式与字节码规范和Android文件格式,浏览即可,内容很重要,但不是入门的内容。	
第五章——静态分析Android app,这也是很多培训课程的第一课,我个人也认为这个应该先看,而且写的很好。	
第六章——动态分析Android应用,写的很好,但6.1的动态分析框架我没有用过,似乎有些老旧不太好用,读者可以试试。	
第十章——Hook与注入,Xposed+Frida是这一章节的重点,Frida是目前最流行的动态插桩工具。	
第一十章节——软件保护技术,讲的很全面。	
章节七八九是Native层的内容,我把它划分到下一部分,入门单单指Java层,章节十二是软件壳的内容,也是进阶的内容。

2.《Android应用安全防护和逆向分析》

黄色封面,我叫它黄皮书,这本书的内容也充实有料,和白皮书一样,也是面向Android开发/安全人员,门槛比较高。	
我个人也是建议按照模块看,按照顺序看的话小心坑。	
全书分成三个部分,防护篇和工具篇都讲的很好。这本书也是必备。	
这两本书是引路明灯,但光看这两本书,是远远不够的,你需要真正的实战,还有更多更广更全的资料。

三、入门补充,我建议这些按照需求,或者在遇到的时候再学习和查阅

Java——异常处理/反射/动态代理,这对你理解逆向中的Hook等技术非常有用	
Android——网络请求框架/应用框架/……

三、Android逆向长远的资料

这部分内容非常多且杂,我需要好好整理一下。大家加油。

推荐阅读

Python 爬虫面试题 170 道:2019 版

爬虫必备-JS之Dom操作大全

爬虫基本功之学点JS-DOM操作(一)

爬虫必备-如何使用Chrome DevTools花式打断点

添加微信[italocxa].回复:加群,加入Python交流群

你可能感兴趣的:(爬虫工程师教你如何入门Android逆向)