猿人学第一题尝试分析【混淆,改写】

猿人学JS逆向大赛第一题,分析

地址:https://match.yuanrenxue.com/match/1

第一步,解决Debug问题


添加一个条件断点
在这里插入图片描述
这样添加条件断点后,就不会一直触发Debug调试了

第二步,找到接口Api

随机翻页一次,会出现一个请求

在这里插入图片描述
可以看到,请求中出现了page参数,还有一个未知参数 m
此次分析主要围绕m的产生,进行分析。

通过查看启动方式,找到这个地方
在这里插入图片描述
此时跟踪进入后,可以看到在这里插入图片描述
所有的JS代码全部是被混淆过的,我们复制全部,使用猿人学自己的反混淆工具

地址 http://tool.yuanrenxue.com/deobfuscator

解混淆后可以看到,代码可以阅读了
在这里插入图片描述

接下来根据代码进行分析,分析后得知,生成M的代码主要存在在:
在这里插入图片描述这一行

var _0x2268f9 = Date.parse(new Date()) + 100000000, _0x57feae = oo0O0(_0x2268f9.toString()) + window.f;
        const _0x5d83a3 = {};
                _0x5d83a3.page = window.page;
        _0x5d83a3.m = oo0O0(_0x2268f9.toString()) + window.f + '丨' + _0x2268f9 / 1000;

进行部分参数替换后,可发现此代码为生成M的算法

_0x5d83a3.m = oo0O0(Date.parse(new Date()) + 100000000) + window.f + '丨' + Date.parse(new Date()) + 100000000 / 1000;

此时我们运行oo0O0(Date.parse(new Date()) + 100000000)后发现
结果永远是""
在这里插入图片描述
现在差函数 oo0O0 的代码,我们进行打断点调试,找到oo0O0的代码

在这里插入图片描述
打完断点后,再次随机点一页,就会触发断点调试
在这里插入图片描述
此时不难发现,可以找到oo0O0函数,我们点击进入,可以看到,函数是在最后一行里
在这里插入图片描述
我们复制最后一行,进行分析,在复制出来的最后一行,搜索oo0O0,找到关键函数,开始剔除无用代码
在这里插入图片描述
剔除后的代码:

function oo0O0(mw){********;return''} //太多了,不方便展示

然后我们对代码进行格式化,使用猿人学自带的美化工具就可以了
在这里插入图片描述
现在我们继续分析代码,可以看到这样一条代码

eval(atob(window['b'])[J('0x0', ']dQW')](J('0x1', 'GTu!'), '\x27' + mw + '\x27'));

发现上面的代码全部是计算用的,所以围绕这条代码进行分析,我们需要知道这条代码的所有参数
atob(window[‘b’]
J(‘0x0’, ‘]dQW’)
J(‘0x1’, ‘GTu!’)
‘\x27’
mw #不难发现,这个参数是传递进来的参数

开始调试,复制全部JS输入进控制台,回车
在这里插入图片描述
现在开始获取每个参数的值,但是发现
在这里插入图片描述
此处代码是无法直接运行的,需要运行后,打断点进行调试输出,我们进行测试
在这里插入图片描述
新建一个代码块,将JS代码复制进去,右键Run(注意,一定要保存)踩了很多坑

在这里插入图片描述
运行成功,然后对代码进行打断点调试

在这里插入图片描述
我们现在调试一下
在这里插入图片描述
发现代码被断在了这里,我们现在开始获取刚才的参数都是什么
在这里插入图片描述
可以发现 window B又是一段JS 我们复制出来,暂时保留,等下进行分析
可以看到在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

此处也验证了mw的由来,是传递进来的参数,接下来,我们继续分析window b的代码
在这里插入图片描述
可以看到,最终要的参数window.f也出来了,是通过hex_md5产生了的,
结合最开始的m算法,我们进行改写这个jS

最终的算法为:

var times = Date.parse(new Date()) + 100000000; //当前的时间戳
var f = hex_md5(times.toString());//经过hex_md5后的f
var m = "" + f + '丨' + times / 1000;

接下来我们我们改写一下js代码,使之可以调用
在这里插入图片描述

现在,我们去使用python代码调用一下,看看能不能产生m

在这里插入图片描述
运行后:
在这里插入图片描述
这时m的参数已经产生了出来,接下来我们去写一个请求,尝试获取一下隐藏的第四第五页
在这里插入图片描述
还需要改一个请求头
在这里插入图片描述
成功 ✿✿ヽ(°▽°)ノ✿

接下来,就是计算总值就可以了
在这里插入图片描述

完成,以上就是整个猿人学第一题的分析过程了,有什么不足的地方,希望指出,谢谢。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
对于您提到的错误TypeError: list indices must be integers or slices, not str,这是因为您在访问列表中的元素时使用了字符串作为索引,而列表的索引必须是整数或切片类型。解决这个错误的方法是使用整数或切片来访问列表中的元素。 关于您提到的猿人js逆向的问,我需要更多的信息才能为您提供具体的答案。对于爬虫编写,您可以使用Python的各种库(如Requests、BeautifulSoup、Scrapy等)来获取网页的内容,并进一步解析和处理。您可以使用这些库发送HTTP请求获取网页内容,然后使用解析库来提取您需要的数据。 爬虫编写的一般步骤如下: 1. 导入所需的库 2. 发送HTTP请求获取网页内容 3. 使用解析库解析网页内容 4. 提取所需的数据 5. 进行数据的进一步处理和存储 您可以根据具体的需求和网站的结构进行相应的编写和调试。如果您需要更具体的帮助,请提供更多的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python:TypeError: list indices must be integers or slices, not str报错解决及原理](https://blog.csdn.net/hhd1988/article/details/128031602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str](https://download.csdn.net/download/weixin_38590567/14871394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asurs9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值