卷首##
逆向的目的是因为没师傅带,同时因为寂寞(挣不到钱晚上又睡不着的感受可能你懂的)。
通过逆向学习的东西相当丰富,也可以延展出来更多,看自己觉悟了。
我也刚开始做逆向,边学边记录,正巧有个网校想让我给个视频demo,准备最后整理一套视频教程玩玩。
一如既往的,全文会涵盖android、ios两大体系(等我把开源的那个约炮app的ios端做出来,我来聊聊如何做全栈,哈哈哈)。
不保证到哪一步就断了..也不保证更新速度,但肯定会写完。
文字会很松散,不会走论文八股风,因为我要练手写小科普八卦文:)
本文不会介绍“24模式”或者“脱壳”是什么意思,这种事情应该自己去搜索,也算是学习的一部分。
你能学到什么##
根据我看轮子的实践,github上开源的完整项目,如仿XXX之类的,代码是经不起仔细推敲的,要想提升平台高度,最好还是看看优秀商业产品的思路。
逆向可能花费很多的时间,但收获绝对匪浅。
如果你想达到自己写dump工具的高度,那走的很远。
如果你想学习大神们的思路,那逆向的学习不算太费劲。
目前打算以鲜城app为例(因为有点想过去上班,微博上私信刘总问了问好像接收土法炼钢的游击队),和我一起从ui到网络访问,彻底了解一款商业app到底牛逼到哪里。
想当白帽或者黑帽的可以走了,我没那个高度,我还想找师傅带呢。
逆向思路与基础##
把IDA(后面会提到)提出来的汇编代码,或者class-dump出来几千个头文件拿来一个一个的读是很愚蠢的。
在开始逆向之前,你首先应该问自己几个问题:
1.我基础知识达标了么?
2.我想学习它的什么功能实现?
3.如果我自己来实现,我会考虑什么?
请带着这些问题,最好找张纸写下来,逆向完了看看自己和大神的差距有多远,然后高呼一声“Wow,原来如此”。
另外,收集对方团队的技术博客等,先读读他们的文章(PPT也行)。
要做一个正统的马克思主义者--用理论指导实践,用实践验证理论。
需要准备的道具##
需要哪些软件会在后面逆向过程中详细介绍,这里先大致罗列一下
android
一台root并安装了xposed框架的手机(主要是为了脱壳)
类似【海马玩】这种模拟器
android-killer
zjdroid
androidSDK自带工具,如adb、ddms等
...
ios
一台越狱的手机(请趁早去买一台二手,我发现好多群众已经把手机升到9.3了,我也不例外,哭着去买了台)
cycript
reveal
...
建议阅读的书籍、文章、论坛##
这里先列举出来感受一下,你要觉得我动作慢可以直接跳过我的文章去读这些文章即可,书籍建议购买,不要问我网盘地址。
《IDA Pro权威指南 (第2版)》
《iOS应用逆向工程(第2版)》(强烈推荐)
《android逆向菜鸟速参手册完蛋版》
《Android软件安全与逆向分析》
接下来的文章框架##
首先还是实战吧,实战完了再从理论上总结,我觉得这样最合适。android、ios都逆向一遍,对一个产品的整体思路把握起来更恰当一些。
我们先谈android,再谈ios。
来App独立开发群533838427