最详细的爬虫逆向面试题(建议收藏)

0.o

爬虫逆向面试题

本文内容皆为面试中出现的问题,大概整理了一些,答案并不唯一,仅供参考。

HTTS三次握手

目前使用的 HTTP/HTTPS 协议是基于 TCP 协议之上的,因此也需要三次握手。在 TCP 三次握手建立链接之后,才会进行 SSL 握手的过程(即身份认证和密钥协商的过程)。

第一步:证书验证

服务器将 crt 公钥以证书的形式发送到客户端,客户端验证证书是否合法。

第二步:获取对称密钥

  • 客户端用随机数和 hash 签名生成一串对称密钥(即随机钥,客户钥),然后用 crt 公钥对对称密钥进行加密。
  • 客户端将加密后的对称密钥发送给服务器。
  • 服务器用 crt 私钥解密,取出对称密钥。

第三步:传输加密数据

  • 服务器用随机钥来加密数据,发送加密的网页内容。
  • 客户端通过本地存储的随机钥对密文进行解密并判断是否被篡改,如果没有篡改,后面的数据通讯将使用对称加密传输所有内容。

对称和非对称加密

  • 对称加密:在编码时使用的密钥 e 和解码时一样 d(即 e = d)。(DES、3DES、AES)
  • 非对称加密:加密的密钥 e 和解密的密钥 d 是不同的(即 e != d),并且加密的密钥 e 是公开的,叫做公钥,而解密的密钥 d 是保密的,叫私钥。(RSA、DSA、ECC)

web逆向参数定位方法

1、全局搜索

2、xhr拦截

3、堆栈调试

4、Hook脚本

5、内存漫游

浏览器指纹

常用于记录的浏览器指纹:

Header、Cookie,IP,DNS,

UserAgent,Font(字体列表),

Language,localStorage、

Plugin(插件),Canvas(渲染绘图),

WebGL(3D渲染图形),

Web Vendor(硬件厂商信息),

Timezone(时区),Platform(系统),

WebRTC(web通信API),

ScreenResolution(分辨率),

Audio(音频设置和硬件特征指纹),

enumerateDevices(其他媒体设备),

CPU、GPU信息。

web逆向其他问题

1、常见检测和绕过:反调试之类

2、如何获取当前环境:Proxy

3、hook如何实现的

4、如何hook XHR

5、加解密和混淆处理

345可到工具站查看,地址:

cnlans.com/lx/tools/jshook

chromedriver检测

常见的检测点:

webdriver

user-data-dir

language

navigator

plugins

Developer

可在页面加载之前通过Js语句覆盖原有属性。

Object.defineProperty(

    navigator, 'webdriver', { 

        get: () => undefined 

    }

)

验证码识别和处理

通用逆向分析流程

·1.分析请求流程

·2.验证码注册

·3.识别验证信息

·4.生成验证参数

·5.验证

识别方法

·1.开源工具识别

·2.第三方平台

·3.训练识别模型,可借助云平台或开源框架

验证码厂家:极验、阿里、易盾、顶象、点触、数美。

极验简述

·1.主要有三个以 geetest_ 开头的加密参数,提交滑块时的请求参数 gt、challenge、lang、w、callback。

·2.分析时可对代码进行 Unicode 解码,解码之后再通过AST脚本去除冗余代码。

·3.调试后抽离出请求参数的加密逻辑,构造请求体完成验证。

数美流程

·1.验证码申请

·2.提取js参数,需要提取js中的参数名。

·2.验证码注册,获取滑块图片和验证背景图。

·3.计算滑块缺口位置,可使用opencv等工具计算缺口距离。

·4.构造轨迹,自动生成或者copy轨迹库。

·5.逆向分析接口参数,完成提交验证。

动态cookie反爬

加速乐简述

1、第一次请求返回状态为521的响应内容,执行JS可获得cookie值 jsl_clearance。

2、cookie带上生成的__jsl_clearance和第一步中返回的cookie值__jsluid_h再次请求目标网址,响应内容为一段混淆JS代码,该代码为生成真实__jsl_clearance值的代码。

3、主要加密逻辑就是对参数做拼接处理,然后对拼接后的字符串进行hash加密。

瑞数流程

1、第一次请求后,浏览器加载meta,meta是包含动态content的html标签,会在eval执行第二层JS代码时使用到。

2、浏览器请求外链JS,一般同站外链JS是固定的,用于下一步的调用。

3、加载自执行函数(动态),将外链的JS解密为字符串,并给window.$_ts添加属性。然后通过eval函数进入VM执行解密后的字符串,执行完毕后可生成cookie。

瑞数处理

1、先处理定时器和死循环debugger。

2、将HTML放到本地运行或将浏览器JS替换为固定内容。

3、将content和自执行方法在本地调试,根据VM执行的异常信息补环境。

4、主要需要补充document、localStorage和window中的一些方法,如addEventListener、getElementsByTagName、createElement等。

安卓逆向分析步骤

1、抓包

2、查壳脱壳

3、反编译

4、参数定位、静态分析、动态调试

5、模拟调用、算法还原

xposed hook原理

安卓所有的APP进程是用 Zygote(孵化器)进程进行fork创建并启动的。

Xposed替换了Zygote进程对应的可执行文件/system/bin/app_process,每启动一个新的进程,都会先启动xposed替换过的文件,加载xposed相关代码。

Frida hook原理

Frida的注入是基于 ptrace实现的。frida 调用ptrace向目标进程注入了一个frida-agent-xx.so文件。后续hook是以该so文件和frida-server通讯实现的。

Frida hook java层原理

Frida-java采用常见的Dalvik Hook方案,将待hook的java函数修改为native函数,当调用该函数时,会执行自定义的native函数。

但是和其他hook框架不同的是,使用frida时,我们hook的代码是JS实现的,所以有一个基于JS代码生成native函数过程。

ptrace注入流程

主要是通过系统ptrace函数进行实现。

    1.attach到远程进程;

    2.保存寄存器环境

    3.远程调用mmap函数分配内存空间

    4.想远程进程写入加载模块名称和调用函数

    5.通过dlopne打开注入模块

    6.dlsym获取调用函数地址

    7.远程调用注入模块的函数

    8.恢复寄存器

    9.剥离远程进程

Frida常见反调试

1. 检测 frida-server 文件名

2. 检测 27042 默认端口

3. 检测 D-Bus

4. 检测 /proc/pid/maps 映射文件

5. 检测 /proc/pid/tast/tid/stat

6. 双进程保护

  • 前两种可以通过修改 frida-server 文件名,改默认端口绕过。
  • 双进程可以通过 - f spawn 模式启动绕过。
  • 其他的需要 hook 修改。

Inlinehook

  • inlinehook是hook的一种实现方式。通过修改原函数开头的汇编指令,直接跳转到指定函数,执行完自己的逻辑再跳转回来。
  • 开源的inlinehook库有很多,例如subhook和微软的Detours。

如何去检测inlinehook

inlinehook只修改了内存中的机器码,而内存中的机器码是从文件加载而来的,所以我们可以将函数在内存中字节和本地对应的字节进行比较,如果不一致,那么可以认为内存中的字节被修改了,即被inlinehook了。

加固与脱壳

现在安卓平台上几种加固方式(动态加载,类抽取,混淆,vmp)

1、Dex整体加固也被称为第一代加固,把DEX整体加密然后动态加载。脱壳思路是app运行后,在app内存中搜索 dex\n035,然后进行dump数据。

2、不落地加载是第二代加固,通过内存动态加载Dex,可以将Dex加密放在Apk中,在内存中实现解密。脱壳思路是通过hook关键函数,直接在内存中把Dex遍历出来就可以。

3、指令抽取和转换。脱壳思路是对自定义的JNI接口对象进行内部调试分析,得到完整的原始dex文件。

4、虚拟机源码保护。根据VMProtect壳的特征和加壳方式,编写脱壳程序还原原始的程序代码,将还原后的程序代码重新编译,生成程序可执行文件。

设备指纹

常见:品牌型号、IMEI、MAC地址、IMSI、运营商、系统信息、硬件信息、蓝牙信息、路由信息等。

其他安卓问题

1、系统服务

2、系统权限

3、安卓反调试

4、重打包检测

5、ollvm

6、不同协议的抓包问题

7、群控开发、改机

8、IDA使用问题

9、ARM跳转指令

不过不用担心,我们准备了一门非常系统的爬虫课程,除了为你提供一条清晰、无痛的学习路径,我们甄选了最实用的学习资源以及庞大的主流爬虫案例库。短时间的学习,你就能够很好地掌握爬虫这个技能,获取你想得到的数据。

01 专为0基础设置,小白也能轻松学会

我们把Python的所有知识点,都穿插在了漫画里面。

在Python小课中,你可以通过漫画的方式学到知识点,难懂的专业知识瞬间变得有趣易懂。
在这里插入图片描述

在这里插入图片描述

你就像漫画的主人公一样,穿越在剧情中,通关过坎,不知不觉完成知识的学习。

02 无需自己下载安装包,提供详细安装教程

在这里插入图片描述

03 规划详细学习路线,提供学习视频

在这里插入图片描述

在这里插入图片描述

04 提供实战资料,更好巩固知识

在这里插入图片描述

05 提供面试资料以及副业资料,便于更好就业

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

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要也可以扫描下方csdn官方二维码或者点击主页和文章下方的微信卡片获取领取方式,【保证100%免费】
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值