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

2023-11-13

猿人学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的参数已经产生了出来,接下来我们去写一个请求,尝试获取一下隐藏的第四第五页
在这里插入图片描述
还需要改一个请求头
在这里插入图片描述
成功 ✿✿ヽ(°▽°)ノ✿

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

猿人学第一题尝试分析【混淆,改写】 的相关文章

随机推荐

  • 其实UE4资料很丰富

    除了303个shader外 还有program里面的例子
  • QMap & QHash基础应用

    include
  • 神文!高校教授跑了一个月外卖写下这篇文,几千万浏览量,5万+评论

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年7月份全网热门报告合集 ChatGPT提词示例 让你的ChatGPT聪明100倍 超百页干货资料 AI应用的难点 痛点与未来 202
  • 每一个都能笑抽的 39 个奇葩代码注释

    素材来源 网络 1 只有上帝知道 我写这一行的时候 只有上帝和我知道我在写什么 现在 只有上帝知道了 2 相隔时空的 diss somedev1 6 7 02 添加对登录屏幕的暂时追踪功能 somedev2 5 22 07 暂时个屁 仿佛看
  • 在vscode中配置python的安装环境

    一 首先需要下载python版本和vscode的版本 这个需要自己根绝电脑的操作系统进行配置 1 python安装官网 https www python org downloads 但是官网下载很慢 所以可以放到迅雷中进行下载 或者这个也能
  • 【OSS】【Py】OSS出现The specified key does not exist问题

    今天接口的OSS模块出现异常 Exception status 404 x oss request id 5C50209BAE509FEEA16D753E details Code NoSuchKey Message The specifi
  • win10 cpu虚拟化打不开

    win10 cpu 虚拟化打不开 重启进入windows 的bios界面 一共需要调整两处Intel Virtualization Technology 一个在advance下 另一个在advance下的cpu设置里面 两个都设置为enab
  • 软件测试题目汇总

    软件缺陷 1 软件未实现产品说明书要求的功能 2 软件出现了产品说明书指明不应该出现的错误 3 软件实现了产品说明书未提到的功能 4 软件未实现产品说明书虽未明确提及但应该实现的目标 5 软件难以理解 不易使用 运行缓慢或者从测试员的角度看
  • 爬取天眼查 的python 代码

    Description 天眼查关键词爬取风险信息 Author bessie lina Date 2019 08 14 17 39 30 LastEditTime 2019 08 30 16 32 13 LastEditors Please
  • docker 安装fileBrowser

    fileBrowser 是一个 Web 文件浏览器 它更类似于一个网盘服务器 使我们可以在浏览器中访问服务器上的文件资源 同时 fileBrowser 还支持添加多个用户 并为不同的用户设置不同的访问权限 除此之外 fileBrowser
  • Eclipse添加注释的快捷键alt+shift+j

    http www cnblogs com xuedexin articles 5658346 html
  • [464]Outlook如何备份邮件

    如何在outlook中添加新账户 点击outlook菜单栏上的 文件 选项 可以看到主界面右侧有一个 添加账户 的选项 点击 添加账户 进入其设置界面 这里有三大选项 请选择 手动设置服务器设置或其他服务器类型 点击下一步 进入 选择服务
  • vue3+vite快速配置eslint的踩坑

    前言 本文强调快速配置eslint 所以不使用下载依赖包和配置的方式进行eslint配置 而是使用现有的eslint自动化构建的包进行快速配置 无论是新项目要集成eslint还是已经开发了一段时间的项目中途要加入eslint都可以按文章中的
  • Linux笔记&Linux常用指令合集

    1 Linux文件结构 linux的目录中有且只有一个根目录 linux的各个目录存放的内容是规划好 不能乱放文件 linux是以文件的形式管理我们的设备 因此linux系统 一切皆为文件 bin Binary的缩写 用来存放常用命令的 比
  • Python GUI 设计(一)———Tkinter窗口创建、组件布局

    本篇开始介绍用Python的Tkinter模块来设计图形化界面 尽量用简洁的语言和实例让读者能看明白 轻松入门 1 1 创建窗口 tkinter模块是Pyhton自带的标准GUI库 可以直接导入 导入tkinter模块后 可以使用下面的方法
  • TCP/IP协议栈与数据包封装

    TCP IP网络协议栈分为应用层 Application 传输层 Transport 网络层 Network 和链路层 Link 四层 如下图所示 该图出自 TCPIP 图 36 1 TCP IP协议栈 两台计算机通过TCP IP协议通讯的
  • 2022年的就业前景

    硕士毕业的话 可以有很多选择 1 如果自己德才兼备 不要凭自我感觉 那么可以继续研究 攻读博士学位 2 对技术痴迷 可以废寝忘食 建议去企业 不要去那些所谓的阿猫阿狗 3 喜欢跟人打交道的 可选择国企 事业单位 或者考公 4 金鳞乃非池中物
  • 抖音seo源码开发搭建(开源)

    抖音seo源码开发搭建 开源 本篇文章将介绍如何开发搭建一款抖音SEO源码 并提供开源资源 我们采用Node js作为主要开发工具 使用Thinkphp自研框架搭建后台服务 同时利用Python对数据进行爬取和处理 最终通过Elastics
  • 阿里巴巴Java开发规约p3c插件扩展-自定义开发规范

    1 前言 工作中难免会遇到维护别人代码的情况 那么首先就得看懂别人写的代码 如果对方写的代码混乱臃肿 维护成本必然很高 如果对方写的代码优雅清晰 那维护的人看起来必然心情愉悦 正所谓 前人栽树 后人乘凉 前人埋坑 后人骂娘 代码首先是给人看
  • 猿人学第一题尝试分析【混淆,改写】

    猿人学JS逆向大赛第一题 分析 地址 https match yuanrenxue com match 1 第一步 解决Debug问题 添加一个条件断点 这样添加条件断点后 就不会一直触发Debug调试了 第二步 找到接口Api 随机翻页一