本篇文章给大家分享的是有关如何入门Android逆向,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
背景
这篇文章写给Python爬虫工程师们,互联网行业的处境越来越艰辛,流量越来越涌向移动端,爬虫和反爬的攻防不断升级,这一切的一切,都让我们只能一刻不停的学习新技能,才能保持竞争力和养家糊口(一群单身狗,挣的钱连自己都养不活) 。
App逆向不断出现在爬虫工程师的日程表里,可是到底该怎么入门App逆向?
这篇文章的目标读者是计划学习Android逆向的爬虫er,他们可能有如下特征
几乎没有Java基础
几乎没有Android基础
-
对Android逆向的思路和工具缺少了解
下文会一一解答这些困惑和焦虑,但适合每个人的学习模式也各有不同,可以选择性的实践。本文对Android逆向老手帮助不大,但如果老手愿意在评论区分享经验和教训,给过来人一些指点,我表示衷心的感谢。
一、自学Android逆向的误区和陷阱
1.1. 不要试图熟练掌握Java编程和Android开发后再开始学习逆向
如果你才十五岁,有大把时间可以学习和泡妹,那我收回这话。看雪论坛不乏12岁踏上逆向之旅的天才少年,他们可以恣意的吸收知识,全部随着自己的兴趣和心意在逆向世界中遨游。而你呢,你可能不再年轻,并且即将或已经踏上工作岗位,准备让Android逆向成为你的加分项和一块跳板,那么我认为你有更优的方式学习Android逆向。而不是耗费数个月甚至更久的时间沉迷开发,最后磨损掉兴趣,放弃逆向的学习,叹一句“逆向真难,行不通的”。
Java是一门复杂精妙 的语言,但你又不是要当Java开发工程师???
Android应用开发充满魅力,新技术迭出,但你又不是要做Android工程师???
你可能很想反驳,那我不懂Java,不懂Android怎么可能搞得了逆向,佛系逆向随缘逆向?别别别,我可没说这话,我指的只是入门时不必精通Java和Android。原因有一堆,但我认为最主要的原因在于——开发和逆向的关注点不同。
我们先罗列一下Android面试和实际应用开发中出现的一些技术关键词:
Java虚拟机,Davlik虚拟机,UI布局,四/五大组件及其细节,Intent,Handler,数据持久化,进程线程和异步,SharedPreferences,屏幕适配,兼容性,Android消息机制,WebView,bitmap,Java与C++如何相互调用,第三方SDK接入,内存泄漏和管理,网络通信和优化,热修复和插件化,Dex分包和优化,Kotlin语言RecyclerView,注解框架,音视频的处理,设计模式,应用框架,其他优化……
而我们破解时需要关注什么?尤其是对爬虫的逆向需求来说,简而言之,我们在破解加密字段如何生成,那我们的关键词是这些:
抓包和反抓包,App的混淆,加固,高度混淆加解密算法,Jni,放在C中的加密,smaliJava层动态调试,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. 不要好高骛远
这一点非常重要,上来就想学如何解密复杂的so、如何脱壳,反调试,或者上手就想自己破解抖音,小红书,美团这种成熟且大型的社交生活类应用……
先跟着一些优良的入门教程和视频,打好基础训练思路,从简单的demo开始,从Java层加密开始,从简单的应用开始,一步一个脚印。一上来就想搞Native,你还 too naive。
1.3. 不要收集过多的资料 & 分辨资料的时效性
五年前的资料就不要去看了,逆向这个圈子本来就比较封闭和迟缓,很多牛逼顺手的工具并没有被广而告之。而应用开发和保护的技术却日新月异,如果你现在还看五年前的破解教程和文章,那他可能用到是更之前五年的工具和方法,四舍五入你就是在用清朝的Android逆向技术。我并非在全盘否定比较久远的教程和资料,有些前辈写的文章现在依然准确易懂,甚至振聋发聩。但这一类毕竟是少数,而且仔细了解的话,往往会有更好的替代品或更好的实现。
1.4. 不要自负,觉得Android逆向很简单
在理想的状态下,Android app的逆向工作者需要非常熟悉java和C/C++ 语言,有开发大型或成熟Android软件的经验,熟悉Android底层和App运行原理,简而言之,最好是一个成熟老练的android高级工程师。但是,这并不意味着我们必须得到这个地步才能开始Android逆向的旅程。你应该先从一个比较系统的角度尽可能了解Android逆向的全貌,然后摘取那些”低垂的果实”,跟着教程去使用一些成熟的工具,学习思路,完成几次破解。然后在问题中不断去学习和补充知识。如果你想要准备好一切在上路,也是可以的,万流如海,殊途同归,只不过你要忍受漫长的枯燥学习期罢了。
二、Android逆向入门的资料和基础
这些书和内容都是非常好的,我这次没有提供百度云链接,网上资源很多,我很希望大家通过pdf资料被大佬的文笔和内容所吸引和折服,然后购买正版书籍放在身边看。
一、基础中的基础
1.Java
《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逆向,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程之家行业资讯频道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。