安卓爬虫入门 | 基础知识&工具介绍

2020年6月5日 0 条评论 83 次阅读 0 人点赞

没人会为你落泪,所以你才止不住哭泣
——厄加特

前言

从这一期,我们会开始3-4期的安卓爬虫入门学习。

为什么要做安卓爬虫?web的爬虫我还没学好呢。

因为移动端爬虫有先天的优势:

  • 非实时更新,程序更新后往往会兼容旧版本,我们的爬虫程序不会因升级突然失效,故而程序更稳定
  • 验证码少,移动端为了考虑用户体验,各类验证码校验较少

web爬虫泛滥成灾,移动端还大有可为。

(文中PPT及所有工具会放在知识星球"爬虫三十六计",可自行下载。)

目录

认识安卓系统

安卓(Android)是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机、平板电脑、TV、各类盒子等,由Google公司和开放手机联盟领导及开发。

EMUI及MIUI是根据安卓原生系统做了些定制化的修改,比如,华为觉得我们希望手机更快一点,他就对底层做了很多优化,我们明显能感受到系统更流畅和APP打开更快;小米觉得我们希望多看一点广告,他就加了很多广告在里面。:p

除了图中提到的,我们常用的可能还有/data/local/tmp、/data/user/等目录,这些经常用一用也就大致清楚了。

需要注意的是,当我们需要将安卓的文件导出到电脑时,一般我们都要先从其他目录cp到/sdcard下才能pull出来,这一点在后面的adb介绍还会说明。

APK其实就是个压缩包,用任意的解压缩软件都能打开,打开之后我们要关注的主要就是dex们和lib里的so文件了。

dex是Android平台上的可执行文件, 相当于Windows平台中的exe文件, 每个Apk安装包中都有dex文件, 里面包含了该app的所有源码, 通过反编译工具可以获取到相应的java源码。

加解密知识

我们一般常见到的加密大致都是这三类,一般情况下,对称加密用于大文本的加解密,但是由于密钥交换的问题,还会和非对称加密算法一起搭配使用。摘要算法主要是用来做签名运算的,他不能保存或还原数据的原始信息,只是作为一个指纹计算。

不论什么语言都有很成熟的加解密相关的库,我们在逆向过程中,只需要找到输入即可。比如,对称加密要找到key和iv及加密模式和填充模式,非对称加密要找到n、e大数,摘要算法要找到是否有加salt和输出hex的形式等。

常用工具

常用工具主要有:adb、jadx(jd-jui/jeb)、apktool、AS、IDA

接下来一个个介绍一下。

对于ADB我们最常用的,主要就是APK安装、文件导入导出及端口转发的功能了。至于shell内部的命令基本跟linux的命令是一致的。

在哪下载:adbshell.com/downloads

jadx是我们常用的一个软件,他是我们静态分析的主要工具。

我们下载下来之后,直接打开,拖入APK或者dex即可。在你初次搜索的时候,会自动进行反编译。然后你就能看到全部的源码了。

下载地址:github.com/skylot/jadx/

apktool是反编译和编译的工具,我们常用的就是d和b两个命令。

apk d会把一个完成的apk反编译成smali代码。什么是smali?简单来说就是我们用java写的代码编译打包成dex文件后使用baksmali程序逆向回来的一种语法。

我们在动态调试的时候、在查看匿名函数匿名类的时候,都是需要查看smali的。

下载地址:ibotpeaches.github.io/A

Android Studio和IDA是成熟的商用软件了,大家自行下载即可。

逆向流程及常见问题

抓包的问题,就不再讲了,不论是手机上抓包还是PC抓手机的包,我们都推荐过不少工具,可以翻看一下往期介绍。

抓到包之后,开始逆向分析,接下来就是静态分析和动态分析来找到参数的生成算法并还原,这部分我们后面几期会着重讲。

常见问题

•我该怎么抓手机的包啊?Wireshark可以吗?

看一下往期抓包的介绍,常用的工具:charles、PacketCapture等

•我一开抓包,app就断网,怎么办?

justtrustme,不行的话就得手动过证书验证了,后面会举例讲一下。

•如果机器内存不够,jadx打不开apk怎么办?

加虚拟内存,改jadx参数,还不行就加内存条(8G以上)。

•抓到包了,我怎么逆向找入口啊?

主要是通过参数名和URL关键字找到相关逻辑再顺藤摸瓜。

•jadx打开apk了找不到业务相关代码,只看到了360、tencent等包名?

有壳,后面会介绍一些常用的脱壳工具。

•我找到了个加密的地方,感觉很像,就是这里了,但是不敢确定,怎么办?

要么动态调试打断点,要么通过HOOK打印日志。

下期预告

下一节会以keep为例,手把手教你静态分析、动态调试和Frida hook。

另外

为了方便沟通和交流,我建了星球来分享知识和回答大家的问题。星球主要提供web端和移动端爬虫相关技术分享和问题解答,包括各平台各种协议抓包分析、js逆向、安卓逆向、iOS逆向、Windows逆向、协议还原仿真、各平台hook、大型分布式爬虫构建等。我们的愿景是“可见即可爬”。期待你加入哦。

admin

这个人太懒什么东西都没留下

文章评论(0)