从小红书app开启逆向之旅(2)

上一节课我们装了Android的开发环境,这一节课,我们动手开发一个简陋的app页面。

App逆向到底该怎么学?
从哪一步开始?
Java…???
Android开发…???
加解密…???
NDK…???
C++…???

我认为应该是从lilac 的blog开始,lilac人最好啦,完全是个人才, 讲的细循序渐进,因为本身是搞爬虫的,所以app逆向会针对爬虫工程师的具体需求;因为自己也是Python工程师,所以懂小白没有Java,Android基础,对逆向的先天恐惧,快来关注lilac吧!!!!!!!!!!(软广结束,下面是重点)

  1. 首先我们逆向一个简单的app,粗略的看逆向过程,好让大家知道,初级的逆向需要哪些工具和技能。
  2. 之后我们会手动实现一个加密的app(展示如下?),页面展示PostData的内容,每次请求字段都在变化,这是爬虫工程师经常遇到的一个逆向需求。
  3. 在实现的过程中,我们会用几个blog穿插讲解所需要的Android开发和Java开发的知识。
  4. 在一步一步完成这个app之后,大家将拥有基础的java代码、Android代码阅读和编写的能力。

在这里插入图片描述

逆向一个简单的APP

注:这只是一个演示,很粗陋,目的不在于讲解过程和思路,而是为了让大家明白逆向所需要的技能树。

目标:LV 官方app的列表页中的x-wsse字段,每次随机变化,我们需要逆向它的生成规则。
在这里插入图片描述
在这里插入图片描述

1.查壳

在这里插入图片描述
这个app没有加壳加固,如果加了壳,我们就需要脱壳,脱壳是app逆向一个进阶操作。

2.使用Xposed自吐模块进行嗅探

这一块我们日后再说
这儿涉及到的主要知识点是Xposed模块的编写,需要熟悉Java,熟悉加解密。

2.静态分析

静态分析是相对于动态调试而言的概念,爬虫工程师对Js调试一定不陌生,下面我们用Js类比

App静态分析==在Chrome开发者工具界面中搜索关键词和关键javascript代码,并分析Javascript代码
App动态调试==打断点进行断点调试

所以我们首先反编译App,再搜索x-wsse关键字段,分析加密逻辑。

我们使用JEB反编译apk

打开JEB拖入apk
在这里插入图片描述
反编译出来的smail代码
在这里插入图片描述
搜索到关键代码,下图是Post发送请求构造url的地方
在这里插入图片描述
x-wsse 的值为v1,v1由bnf类的a方法生成,进入这个方法,进行详细的分析
在这里插入图片描述
P1
P1
P2
在这里插入图片描述

至此,我们已经搞清楚了x-wsse的加密和生成方式

3.动态调试

如果代码比较复杂,需要进行动态调试,涉及到一些adb的操作,这个app的x-wsse加密已经被我们琢磨透了,所以不需要。

4.so层的破解

为了安全,越来越多的app将关键加密内容从Java层放到了C++层的so库中,所幸我们分析的这个app并没有这么做,所以不需要。so层加密需要IDA工具的使用,C++、arm汇编代码等知识。

总结

初级的逆向所需要的工具和知识

  • Java中的方法、类、String类、集合类、Random类等
  • Xposed框架
  • 加解密的知识,消息摘要算法(MD5,SHA,MAC等),对称及非对称加密算法,以及它们常见的Java实现
  • Android开发的一些知识,比如大致架构,框架,发送请求的库等
  • 对app逆向的经验,比如怎么找关键点,怎么快速检索加解密

有没有快速的入门方式?
当然有!!!

下面是我凝练十来年的经验,字字血泪给大家写的五分钟入门系列
Java五分钟从入门到精通:https://dwz.cn/mjvte3GV
Android五分钟从入门到精通: https://dwz.cn/RVnulTz4

在这里插入图片描述
在这里插入图片描述

是没有捷径的!!!

如果一门技术很容易学会,那么它就称不上是核心竞争力
如果一条美好的路有捷径,那它会很快会被太多的人踩烂

我会循序渐进带大家学习这些知识,慢慢走上这条少人的路。
大家加油,下期再见。

预告:下一期,我们将开始动手写一个demo app,模拟一次真实的加密场景。

发布了27 篇原创文章 · 获赞 120 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38851536/article/details/93632853