第四代点选极验验证码逆向分析

一、逆向目标

声明

本文仅供参考学习,请勿用于其他途径,违者后果自负!

目标网站:aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLw== 

目标:请求参数中w参数的逆向分析

注:极验官网的混淆太不当人了,祈祷有ast大佬能解决这个混淆,所以我找到了这个目标网站,采用四代极验点选,混淆方式不是官网的那种

二、抓包断点分析

对于关键参数w我们可以得知是由p+u形成的

三、参数u分析

这里我们得知生成参数u的位置,得到生成函数:

观察发现这里返回的是t,经过对比发现这个t的值和u是相等的,但是这里有两个t生成的地方

发现t是由第一个生成的,所以我们要扣的代码是var t = new H()[$_CBGAe(374)](this[$_CBGAe(750)](e));所以我们先定位到方法H在哪,我们全局区分大小写搜索H = ,最终找到

成功找到H这个类的所有方法,扣下来,然后我们分析 var t = new H()[$_CBGAe(374)](this[$_CBGAe(750)](e));发现调用的方法是这两个,一个是encrypt,另一个是不变的(this[$_CBGAe(750)](e))

所以我们可以把js的改成这个即可获取到参数u值

四、参数p分析

可以得知h作为参数传递给了某个函数然后返回了p的值

4.1对h进行分析

h的值是从X里面进行调用的,我们把X全扣下来然后进行window._x = X;全局调用

回到分析h = X[$_CADBN(374)](ae[$_CADBN(109)](o), n[$_CADAp(750)]())

我们可以控制台打印输出观察调用的是什么

可以发现依然调用的是encrypt,但是第二个参数就有点多了,先暂时写死,我们稍后再分析这里,里面主要的是验证码的信息和鼠标轨迹之类的,到此我们已经把h也搞定了

4.2对p进行分析

获取到h后对p进行分析p = w[$_CADBN(774)](h),通过控制台打印,我们得知p的生成是调用了

w的这个$_EFu函数

点进去我们就能发现p是这里生成的

return的是t的两个部分,经过打印在控制台发现:return的是t中的res和end

经过控制台的打印输出可得知:

那我们要找到this里面的$_EDt方法:

由于对这个w里面的单个函数进行扣出来也不方便后续的操作,所以我们选择直接把w扣出来,

然后我们扣出来之后

至此,我们w的参数就出来了,但是还有最最重要的就是h里面的那个第二个参数还没分析,现在我们来解析o。

4.3 h的第二个参数o分析

先回到这里

然后我们向上找,留意好o的值,都有这几个参数:

然后我们往上找o,然后就能发现:

我们观察它的参数对不对,在控制台打印可观察到:

六个参数,还差两个,一个是pic,验证图片的链接,还有一个是h9s9,这个看着是一个时间戳

4.3.1 lang

分析其它包可以知道这是固定的一个值,反馈的应该是地区

4.3.2  passtime

passtime的值是t,而t是传参传进来的,而且t是第二个参数,所以我们往上跟栈

发现是这里进行传参的,用$_FG()减去了一个数据,明显$_FG()是当前的一个时间戳

而减数是一个固定的值,经过查询可以得知是当验证码出现的时间,所以passtime这个参数记录的是验证的一个时间,所以说我们这个差值完全可以写死的,反正后台又不知道,但是如果后面使用这个差值来进行加密什么的再生成一个校验的参数,那就必须要了。

4.3.3 a

我们看a的值,看着就像点选的那个坐标,通过某些固定的值进行操作得到的,作为一个邪修,我们可以刷新多验证几遍,把正确的数据抓到包然后拿出来丢给gpt,让gpt来帮我们找到这个对正确点选坐标的操作,不需要太精确,那个字是占一个区域的,所以只要偏差不大,在这个区域里面就可以。

a的值是e,也是传参传进来的,刚刚的t是第二个参数,e是第一个参数。

我们找到这里可以发现是这个进行返回的

可以看出这个e就是取了t里面的$_BDk这个方法,然后把,传递给它,我们进去$_BDk方法里面分析

我们可以发现return的是this里面$_JIE join e

那么问题来了,这个this是什么来的呢,是哪个类呢?

这里我们可以看到,这个this是指向ie的,所以我们可以全局搜索:new ie(),会发现有三个符合条件的,我们都下一个断点,对这几个断点分析一下就可以找到里面真的ie:

验证一下,也是对得上的

好了那我们找到了参数a生成得地方了,那我们接着分析一下这个生成参数a的方法:

这里return的是一大串东西,但是最核心的就是里面的var e = this[$_CHABi(366)]这个e的生成了

我们可以知道这个this的指向是Le,那我们全局搜索 new Le,会找到一个f = new Le(),这里是用f给Le赋值,那谁给f赋值呢,所以我们要去全局搜索f[这种形式的赋值,有四十来个,慢慢看能找到明显的两个赋值的,经过点击验证码分析可以找到真正赋值的那个:
 

当我们点击验证码的字的时候就能在这里断住等过完这个方法f里面就有$_JIE的值了

经过对比f的值和第一个参数的值是对的上的,所以我们已经找到了f赋值的地方,那这个f[$_CCBGb(551)]是干什么的呢,分析f赋值的函数我们可以发现这是调用了一个方法,然后传递给了他4个参数,我们点进去这个方法里面

参数e t n r,我们回到给f赋值的那个地方,

 Math[$_CCBGb(490)](100 * l),

Math[$_CCBGb(490)](100 * u),

g[$_CCBGb(39)][$_CCBGb(700)]);

这三个就是参数t n r

细节方面就不展开谈了,这个t是把你点击的那个地方的横坐标做一些四舍五入再运算之类得到的,n同理(这两个参数里面有一个小坑,注意甄别坐标的起始点是屏幕的左上角还是页面的左上角,又或者是验证码那幅图的左上角),

详细的运算在这个方法里面

而r则是固定的值“word”

到此我们的a也已经出来了,其实整个逆向其实已经完成了

4.4.4 pic

这个是验证码图片的路径了,是在另外一个接口里面返回的

4.3.5 tt

tt是一个方法然后传进去了三个参数,我们可以直接把这个方法扣出来,这里面是个自执行的方法

4.3.5 ep

ep里面的ca就是浏览器的点击信息,tm是点击的一些时间戳信息

其实这两个参数都是可以写死的,因为这个点击时的页面是可以移动的,说明这东西服务器是无法校验的,到此o的参数也找完了,但是你会发现少了h9s9和rp这两个东西

4.3.6 h9s9

如果我们想给o赋值,那就要把o里面的某个东西取出来再赋值,所以我们可以全局搜索 o[ 看看能不能找得到h9s9,好像不太能,一共有一百八十多个,我们往下找会发现有一个给_赋值的

在这里发现了h9s9,而且这个值也是一个时间戳

4.3.7 rp

跟着往下一步一步跟栈会发现rp是在这里进行赋值的

这个方法传递这三个玩意相加的值给它

经过测试可以发现这个rp的值是个md5的加密,里面传的参数是gt ch 和那个时间差值passtime

到此我们w参数的参数都已经分析完毕,当然还有一些较为细节的地方没有展示出来,剩下的就是扣代码补环境的事了,代码等我搞定之后再发出来和大家分享

03-26
### 逆向工程与反编译概述 逆向工程是一种通过对软件的目标代码进行分析,将其转化为更高级别的表示形式的过程。这一过程通常用于研究现有系统的内部结构、功能以及实现细节。在Java和Android领域,反编译工具被广泛应用于逆向工程中。 #### Java逆向工程中的Jad反编译工具 Jad是一款经典的Java反编译工具,能够将`.class`字节码文件转换为可读的`.java`源代码[^1]。虽然它可能无法完全恢复原始源代码,但它提供了足够的信息来帮助开发者理解已编译的Java程序逻辑。Jad支持多种反编译模式,并允许用户自定义规则以适应不同的需求。此外,其命令行接口和图形界面使得复杂代码的分析变得更加便捷。 #### Android逆向工程中的JEB反编译工具 针对Android应用的逆向工程,JEB是由PNF Software开发的一款专业级工具[^2]。相较于其他同类产品,JEB不仅具备强大的APK文件反编译能力,还能对Dalvik字节码执行高效而精准的操作。它的核心优势在于以下几个方面: - **广泛的平台兼容性**:除Android外,还支持ARM、MIPS等多种架构的二进制文件反汇编。 - **混淆代码解析**:内置模块能有效应对高度混淆的代码,提供分层重构机制以便于深入分析。 - **API集成支持**:允许通过编写Python或Java脚本来扩展功能并完成特定任务。 #### APK反编译流程及其意义 当涉及到具体的APK包时,可以通过一系列步骤提取其中的信息来进行全面的安全评估或者学习目的的研究工作[^3]。这些步骤一般包括但不限于获取资产目录(`assets`)内的资源数据;解密XML配置文档如`AndroidManifest.xml`定位应用程序启动点;最后利用上述提到的各种专用软件重现整个项目框架供进一步探讨。 ```bash # 使用apktool反编译APK示例 apktool d your_app.apk -o output_directory/ ``` 以上命令展示了如何借助开源工具ApkTool轻松拆卸目标安卓档案至易于探索的状态下。 ### 结论 无论是传统的桌面端还是现代移动端环境里头,恰当运用合适的反编译解决方案都是达成逆向工程项目成功不可或缺的一环。每种工具有各自专精之处,在实际应用场景当中应当依据具体需求做出明智的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值