某音逆向-纯算(一)

news/2025/2/12 4:55:25/文章来源:https://www.cnblogs.com/laocheng/p/18707182

1 还是使用XHR定位(以抖音评论为例)


2 添加日志断点

清空控制台,禁用断点,放开断点。

启用断点后 点击打开二级评论,查看生成的日志

3 加减乘数算法日志点

监测栈v[p]的变化,包括加减乘除,取余,位运算等运算参数和结果来推算加密算法。

a_b参数是由其他参数加密而来,


看到参数加上dhzx,经过n方法运算之后结果是一个32为数组。查看n方法

将整个方法搞下来

补充函数环境,将参数传入看下结果跟网页端是否一致

看到数组是一致的,继续看下一个apply 好像又实用这个方法加密了一次。验证一下

这里卡了很长时间。

观察日志,一直在执行 减法操作,一直到v[p]-=0.后面开始循环执行* + % charCodeAt() + % 操作

第一次执行这个循环操作时,*操作的参数E=255 p=0,v[p]=0.做一个条件断点,单步调试 查看程序执行过程.

再新增日志断点(这一步需要耐心,多打几个条件断点)

触发评论 查看控制台。t74先制作了一个256长度的数组,数组内容是从255-0的值

后面观察数组变化(这里也花费很多时间)

发现* + % charCodeAt() + % 循环之后最后%得到一个索引值,它与循环次数的做索引值,在255-0数组中取得的两个数字位置进行交换




那么这个计算值怎么计算来的?

来看第一步乘法:

238是上一次计算结果,251是下一次要交换的位置的值,多往下翻几个循环验证一下

第五次结果
下次乘法应该是25073
第六次结果是155
下次乘法应该是253
155(索引值乘以上次计算结果)
加法运算(上次计算结果+乘法结果)
求余运算:
被除数v[p]是索引值,除数E是3,向后翻找E的值一直是3,所以这步求余的结果只在0-2之间一直循环。

charCodeAt 方法运算:

参数是上一步求余的结果。那么是谁在掉用这个方法呢??
这里向大佬求助了……

搜索fromCharCode方法(将数字或数组转换为字符串)

注意:里面的数组[0.00390625, 1, 8] 是不断变化的

再使用生成的字符串调用charCodeAt
后面是第二次加法运算

E的值前一步charCodeAt 的返回值,v[p]是上一次加法的结果

循环最后一步 上一步结果对256求余

这两步需要多翻几个循环进行验证。

尝试用js代码还原一下这个过程

点击查看代码
// 创建一个长度为256的数组
const array = new Array(256);// 使用fill和map方法填充数组
const arr256 = array.fill().map((_, index) => 255 - index);console.log(arr256);
change_index = 0 //change_index是计算结果索引,arr256[change_index] 与循环索引值交换位置。第一是0,后面是计算得来
for(let index=0;index<256;index++){val = arr256[index]//当前索引位置的值// 乘法操作mul1 =  val*change_index// 加法操作s = mul1+change_index// index 对3 求余rem = index % 3// 通过fromCharCode 获取字符串str = String.fromCharCode.apply(null,[0.00390625, 1, 8])// charCodeAt 操作str_index = str.charCodeAt(rem)// mul2加法操作mul2 = s + str_index// 第二次求余rem2 = mul2 % 256 // 第二次计算的结果即第change_indexchange_index = rem2// 进行交换arr256[index] = arr256[change_index]arr256[change_index] = val}
console.log(arr256)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881560.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地一键运行大模型神器Ollama + DeepSeek R1尝鲜指南

本地一键运行大模型神器Ollama + DeepSeek R1尝鲜指南 作为AI领域的弄潮儿,你是否苦恼于云端大模型API的高昂成本?想在本机零门槛体验顶尖开源模型?这篇保姆级教程将带你解锁「Ollama+DeepSeek R1」黄金组合,文末附程序员专属玩法彩蛋! 一、Ollama:程序员的本地大模型…

吸烟识别摄像头

吸烟识别摄像头具备24小时不间断监测能力,可以随时发现违规吸烟行为。一旦检测到有人吸烟,系统会立即发出警报或通知管理人员。该系统能够自动生成统计报告,包括每日或每月的违规次数、时间分布以及常见地点等信息。这些数据为决策者提供了重要依据,有助于优化禁烟措施和宣…

社区垃圾分类识别AI算法盒

社区垃圾分类识别AI算法盒在社区垃圾投放站安装后,社区垃圾分类识别AI算法盒便能实时监测垃圾投放情况。当居民前来扔垃圾时,算法盒一旦检测到错误投放的垃圾,例如将可回收物扔进了其他垃圾桶,或者厨余垃圾没有破袋直接扔进垃圾桶等情况,它会立即启动语音提醒功能,清晰地…

在校大学生兼职新选择:轻松陪伴,日结!小乔陪玩平台兼职做陪玩达人(正规纯绿)请不要用异样的眼光看待新型事物

大学生兼职,玩伴兼职,小乔陪玩平台接单,兼职陪用户,看电影,逛街,吃饭.作为一名在校大学生,你是否曾经为生活费发愁?是否想过利用课余时间赚取一些零花钱,但又不想被繁琐的工作束缚?现在,机会来了!一种全新的兼职方式正在悄然兴起,它不仅轻松有趣,还能让你在享受生活的同…

这或许是全网最全的 DeepSeek 使用指南,95% 的人都不知道的使用技巧(建议收藏)

2025年春节过的好快,转眼间,大家又回到了各自工作岗位了,要说这个春节,什么最火,肯定绕不开DeepSeek。 几乎一夜之间,所有人都在关注DeepSeek,甚至我在老家,完全没用过AI的七大姑八大姨,都在问我,DeepSeek是什么,怎么用。 今天就来聊一聊DeepSeek,话不多说,开始。…

hot100-腐烂的橘子

思路 每个腐烂橘子向四周感染一次,直到没有新鲜橘子所需的最少时间。其中一定设计图的遍历,那么是DFS还是BFS?因为要求一层层感染完的最少时间,所以用BFS。即把腐烂橘子放入队列,每次感染一波出队,再把新感染的入队,直到所有腐烂橘子都向四周感染过一次。 为了判断是否有…

DeepSeek-Janus-Pro环境搭建推理测试

引子 北京时间1月28日凌晨,近期爆红的国产大模型DeepSeek在GitHub平台发布了Janus-Pro多模态大模型,这是继Janus发布之后的一次较大幅度升级。该款大模型是2024年11月13日发布的JanusFlow大模型的高级版本。相比前一代模型,Janus-Pro优化了训练策略、扩展了训练数据,模型也…

在 PyTorch 中理解词向量,将单词转换为有用的向量表示

你要是想构建一个大型语言模型,首先得掌握词向量的概念。幸运的是,这个概念很简单,也是本系列文章的一个完美起点。 那么,假设你有一堆单词,它可以只是一个简单的字符串数组。 animals = ["cat", "dog", "rat", "pig"] 你没法直接…

解决 virsh 无法通过 console 登录虚拟机

报错信息解决方法 登录虚拟机 通过 vnc 或者 ssh登录虚拟机 在虚拟机中执行已执行内容 echo "ttyS0" >> /etc/securetty echo "S0:12345:respawn:/sbin/agetty ttyS0 115200, 1152000 xterm" >>/etc/inittab grub2.cfg grep kernel /etc/grub2…

【分享】Ftrans内外网数据交换方案:打破网络边界,高效融合数据!

随着网络技术和互联网技术的成熟和高速发展,来自互联网的安全威胁越来越严重。数据隔离对很多企业来说并不陌生,越来越多的企业选择网络隔离技术来保护网络安全,而在500强企业中,使用网络隔离技术的企业几乎是绝对性的占比。网络隔离后,仍存在数据交换的需求,内外网数据交…

[gym 102428] Fabricating Sculptures

前言 现在补题是不是不太好 思路 转化题意给定列数 \(S\) , 方块数 \(B\) , 求一种摆放方式, 使得每一列的方块数 \(a_i\) 满足 \(a_i \geq 1\) 且 \(a_i\) 呈非严格单峰观察单峰函数的性质, 发现如果按行处理, 就是单调不增的 更一般的, 每一行放置的方块数非严格小于上一行放…

重做 CF906E Reverses

不是,JJ 怎么退役了,悲。 嗯,先有\[dp_{r}=\min_{l=1}^r[s(l,r)\text{是回文串,且长度不为 2}]dp_{l-1}+1 \] 总复杂度就 \(n^2\),考虑优化 然后有引理说,一个字符串的所有 border 构成 \(\log n\) 个等差数列 我们考虑什么样的点能够转移到 \(dp_i\)尝试借助 \(log\) 段…