android端如何防爬虫(android怎么触发爬虫)

生活常识 2023-05-15 06:24生活常识www.xinxueguanw.cn

安卓手机三步获取教程App爬虫必备技能三步完成安卓逆向

这篇文章源于我最近的内部分享,通过一个APP的逆向介绍了逆向流程。因为只是为了学习,所以会涉及到APP的相关信息,请谅解。

关于逆向

逆向3354包括但不限于通过反编译、Hook等方式分析部分功能的实现过程。

逆向工程在很多领域都有应用。比如现在爬虫技术已经无处不在,不用写代码就能爬取数据,导致前端开发的反爬取意识逐渐提高。, 、Android等领域的反转成为爬虫开发者的必备技能之一。

本文介绍的是最典型最常见的加密,在很多应用程序界面中都可以看到。如果我们逆向分析加密过程,我们可以模拟相同的密文,并得到 批准和批准。后端接口的。

逆向的准备

这里是安卓的反向准备

Android真机或模拟器(更好是真机)安装Android 5.0或6.0 Fiddler、Charles等抓包工具Jadx、ApkTool等反编译工具dumpDex、FDex2等shell工具Java、Android开发基础知识Xposed框架开发基础知识

逆向步骤

介绍本文反向步骤

,为三个步骤,它看起来像 把一头大象放进冰箱分为几个步骤。 反向技术作为一种针对应用开发者的 安全技术,手段多种多样,有时不需要代码就可以完成,所以这种概括只对应本文遇到的情况。

定位目标

这个反向是针对一个APP的订单界面。,我们使用包抓取工具来捕获订单列表请求。下图显示了Charles界面

可以看到参数中的数据字段是密文,所以我们使用这个API作为目标入口点。

反编译 APK

这里使用的反编译工具是Jadx,可以将APK直接反编译成Java代码,并且有GUI界面,操作简单,如下图所示

通过包名和一些代码分析,确定是360加固的,然后就需要你去试壳了。

外壳用的是FDex2,是基于Xposed框架的钩子插件,对360加固更有效。它的原理是Hook ClassLoader,然后通过反射调用getDex 得到Dex对象并导出。这里的Dex是应用程序真正执行的部分。,并不是所有的加固都能被Hook检测到,更多的脱壳方式需要高级研究。

FDex2的使用非常简单。在Xposed框架中激活后,选择目标APP,然后重新打开APP,抓取的Dex文件将被保存,如下图所示

Dex是什么?简单来说,在APK构建过程中,Java代码编译后生成的类文件需要转换成Dex文件,才能被Android虚拟机运行。

所以我们得到的Dex文件可以反编译成Java代码。我们仍然使用Jadx,它也支持Dex格式。

由于规模有限,Dex将被分包。如上图所示,我们导出了多个文件,可以依次加载,通过搜索目标API的关键字可以找到目标代码块,如下图所示

代码通常是模糊的。变量和 的名字都是ABC D,那么,如果你搜索一个 名,你会发现有一万个同名的变量。幸运的是,Jadx内置了抗锯齿功能。打开后,变量和 被重命名为唯一的数字,这样在搜索时就不会有重名。

之后我们通过Jadx将代码导出到Gradle项目中,借助IDEA的强大功能开始代码分析。

分析代码

由于大多数 都被重命名,可读性严重降低,无法猜测每个 是什么功能,如下图所示

乍一看,你可以 除了它是一个谷歌开发包,我得不到更多的信息。

所以,分析代码是对你基础Java耐心的一个完整考验,两者缺一不可。

唐 不打退堂鼓,只要遵循一些技巧,就可以大大减少工作量。因为分析过程复杂,我赢了 这里不结合具体代码,而是做一些理论上的

从目标 API 开始入手,跟踪执行流程,举例来说,我们刚刚搜索了关键字代码,所以我们可以从那一行开始,一路点击查看 功能。只分析涉及代码块,缩小分析范围请求过程通常构建请求对象,而参数加密必须在对象构建之前进行。我们只需要找到构建请求对象的代码,然后看看加密的参数在传入之前是如何处理的,其他代码都忽略。虽然将部分代码块复制出来进行执行s反编译项目代码可以 t作为一个整体执行,我们可以将冗长难懂的 代码和相关代码一起复制到一个新的项目中进行编译执行,方便我们调试。并非所有的尝试搜索一些关键词电码都会被混淆。尝试全局搜索一些关键词。比如Java中常用的加密算法,我们可以搜索RSA,AES,MD5,encrypt,public_key,regular matching,这是更好的。找到加密 后,可以复制并独立执行,然后自己构建参数传入进行加密。通过模拟请求,查看接口是否正常返回。

应该注意的是,如果不正常,

请求,并不一定是你找错了地方,也有可能代码本身有误,反编译的代码是有几率会出现这种情况的,导致你执行的和 APK 执行的结果不同。遇到这种情况,只能通过其他手段来修正代码,如阅读 Smali 代码、通过 Hook 等手段,这种情况比较复杂,后续会有文章单独介绍。

逆向之后

完成代码分析后,恭喜你已经成功完成一次逆向,接下来就可以实现一些功能,比如模拟登录请求。建议直接使用 Java 代码,因为大部分加密用的是 Java 内置的 RSA / AES 加密算法,其他语言的第三方库实现并不充分。

android怎么触发爬虫

Copyright@2015-2025 www.xinxueguanw.cn 心血管健康网版板所有