type
status
date
slug
summary
tags
category
icon
password
今天主要是处理混淆代码进行解密操作,从而实现数据的获取。
📝 主旨内容
确定位置
通过各种手段确定解密的位置。

点击切换年份,就会触发他的发包请求,我们通过网络控制面板可以看到抓包的详情。
点开第一个包,然后我们简单的看一下

这里其实我们可以看到这里的year就是我们对应切换的年份,所以这个包很值得怀疑。我们看一下响应内容。

可以看到返回内容都是加密的,这就很容易让别人怀疑。然后为了进一步的确定,我们翻看了后面的所有请求,都没找到符合我们心中的请求包,都是一些图片,所以这里我们可以很大概率确定就是这个包所请求的数据,然后网站中在进行解密从而实现数据的交互。
老规矩找到切入点。我们看一下请求的堆栈。

堆栈他并不是很多。我们重点怀疑PostAPI这个函数,因为看名字就知道这是一个网络请求器。我们跟去看一下。

我们重点是要看这个success函数,因为这里的意思是,如果请求成功就会回调到这个函数去。这里我们就找到对应的解密入口位置。
分析解密函数
我们找到相对应的解密函数,接下来我们就要分析他是如何一步一步解密的。
我们找到这里打个断点,切换到别的年份。

我们可以看到这里其实他已经停在这里,并且请求返回的加密响应内容,也在这里显示出来了。我们跟上去看一下。

这次我们一看就是字符串等各项名称超级乱,其实这个是OB混淆了,使其变量名不太容易阅读。
我这里简单介绍一下这个混淆的作用。
这个混淆的代码中,主要使用了将变量名替换为无意义的字符串(例如
OB
, OC
, OD
等),并且通过复杂的字符串拼接或转换来隐藏实际的逻辑。具体来看,它通过以下几种常见技术进行混淆:- 变量名重命名:变量名被替换为短且没有意义的字符串(如
OB
,OC
,OD
),这样使得代码阅读起来更难理解。
- 字符串和数字编码:代码中的常量、字符串或数字可能通过一些特殊的编码方式表示,例如
String.fromCharCode
等,这种方式使得开发者无法直接从源码中识别出原本的内容。
- 复杂的控制流:通过添加多余的控制流结构(如大量的条件判断和函数调用),让原本简单的逻辑变得复杂难懂。
- 隐藏函数和表达式:通过函数调用和字符串拼接隐藏真实的代码逻辑,通常这些函数的命名也会被混淆,使得代码更难推理。
然后我们继续调试,其实就是定义了一个object对象,然后接着就是分割一个列表,后续跟着这个列表去执行对应的switch的流程。


我们跟着一直走即可。来到最终的解密位置。

最后就是在这个地方进行了解密的。其实就是DES解密的函数,然后得到最后的一个结果。
Python还原
代码还原如下。
效果如下

🤗 总结归纳
OB混淆我们看到先不要怕,仔细观察每一个流程,想办法复原,很多细节其实就是在你不断的调试中去发现的。
- 作者:猿榜编程
- 链接:https://www.yuanbang.lol//article/1a0202ba-3e23-8039-8b7b-d3b975d307a1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。