irpas技术客

js逆向案例-巨量某数jsvmp纯扣逻辑_十一姐

网络投稿 6047

目录 一、常用的js基础知识二、常用的谷歌操作三、jsvmp的特征四、jsvmp扣逻辑

一、常用的js基础知识 js各种运算符:比如位运算符:&、|、^、~、<<、>>、>>> ,算术运算符:+、-、*、/、%、++、--

三元运算符又称条件运算符?:表达式结果为true执行冒号前的:value = 表达式 ?为true执行:为false执行 ,比如a = 5 > 3 ? “true” : “false”

String.fromCharCode(num):可接受一个指定的 Unicode 值,然后返回一个字符串

'str'.charCodeAt(num):返回字符串指定位置单个字符串的Unicode编码

parseInt():把一个字符串对象转换为一个指定进制的Number

toString():把一个Number对象转换为一个指定进制的字符串

slice():截取指定位置范围的字符串

二、常用的谷歌操作 谷歌开发者工具打断点,如鼠标选择行号右击,插桩断点Add logpoint可以打出日志,如条件断点Add conditional breakpoint可以根据输入的条件表达式为true的时候自动debugger住 xhr断点监控:根据url请求中的链接参数特征,指定监控 三、jsvmp的特征 jsvmp的特征:请求参数signature反爬,加密算法文件为acrawler.js以及文件里面典型的提示字符window)._$jsvmprt(" 关于jsvmp的代码逻辑有点类似生成器执行,可以看这篇文章简单了解下关于jsvmp生成的逻辑思路看这篇文章,简单了解下关于jsvmp虚拟机保护方案关于jsvmp的解法一般有3种,补环境,和插桩扣逻辑,jsrpc,当然还有自动化等方式可自行研究试试补环境的可以看这篇文章有相关介绍 ,网上有很多,可随意查找插桩扣逻辑的可以看这两篇文章:逆向简史的公众号,文章前半部分讲了补环境的关键点,文章后半部分讲了如何扣代码的关键点,以及关键的算法函数,强烈推荐,看完实际操作一遍,你会豁然开朗;当你学会了逆向简史的文章,然后再看小小白的公众号,跟着他的思路介绍再巩固一遍 四、jsvmp扣逻辑

定位入口:目标参数signature,采用xhr断点定位,发现是由acrawler.js这个文件生成的,然后我们插桩日志输出,找出window.byted_acrawler.sign函数的传入参数,然后就可以通过补环境的方式生成signature,补环境和该篇文章的解决思路差不多,此处视频讲解在公众号:逆向OneByOne有

扣代码正式逻辑:如果你看完逆向简史公众号的文章你一定知道signature 是由 9 部分组成的,第一部分是固定参数,剩余的8部分都分别由相应的算法逻辑生成

接着重中之重的是打日志断点插桩的位置:分别在arcawler.js的184行和425行加入日志插桩断点,内容如下

"索引j", j,"索引O", O, " 值:", JSON.stringify(S, function(key, value) {if (value == window) {return undefined} return value})

然后我们清除网页缓存,刷新网页,会发现大概有1.5w的插桩日志打印出来,而通过ctrl+f搜索,signature也在我们打印的日志里面输出了,也就是j ===24 && O === 40336这个位置有了signature以及其对应的值_02B4Z6wo00f010kDMrgAAIDCwkipWBmxc99JAzYAALBd35

我们继续搜索值_02B4Z6wo00f010kDMrgAAIDCwkipWBmxc99JAzYAALBd35,会发现signature的最后两位也就是第9部分135,生成逻辑是c468ee35`这个字符串的后两位截取生成的,然后我们分别搜索其它②~⑧这几个部分生成的位置

① _02B4Z6wo00f01 ② 0kDMr ③ gAAID ④ Cwkip ⑤ W ⑥ Bmxc9 ⑦ 9JAzY ⑧ AALBd ⑨ 35

每部分都是由单个字母拼接而成,我们拿第2部分0kDMr再详细看下这个流程

最终第2部分0kDMr的生成逻辑就是这个,那其实我们只要继续研究这个[48]、[107]、[68]、[77]、[114]这些数字是怎么生成的即可;这个你在逆向简史的文章里面也可以找到答案,或者在我公众号里面的视频里也能知道如何去逆出这个结果

比如48是(35394057981102>>2>>24)&63-4得到的,35394057981102其实是由二进制转换而来,由于细节太多,讲不清楚,可以先到逆向简史的文章继续看分析逻辑,或者看这篇也有更详细的介绍

对啦,我开了微信公众号:逆向OneByOne,后面有些我以前发的比较好的文章会逐步迁移到公众号下


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #目录一常用的js基础知识 #二常用的谷歌操作 #三jsvmp的特征