【JS逆向】之jsvmp猿人学18题

JSVMP

我又是很长时间没更博客了 今天讲jsvmp,这个玩意算是现在保护js代码最大的工具之一吧 vmp大家应该都知道 就是虚拟机 其实一样是混淆控制流 但是如果你想去跟这个玩意呢 那么可能你跟个一两天都不一定能搞出来 跟栈还需要很强大的经验的和耐心,废话不多说 开始


文章目录

  • JSVMP
  • 一、抓包
  • 二、进入代码段
    • 1.下XHR断点
    • 2.分析和解决
  • 总结


一、抓包

1.打开网址 直接百度搜索猿人学就好 翻到18题
在这里插入图片描述
2.打开发f12调试工具 第1页是没有v这个参数 点击第二页就有v这个参数 这个参数就是我们今天的目标了
在这里插入图片描述

二、进入代码段

1.下XHR断点

1.xhr断点不会下的 去看我前面的文章
【JS逆向】之jsvmp猿人学18题_第1张图片
2.然后下一页 让他断下来
【JS逆向】之jsvmp猿人学18题_第2张图片
3.我是在这个匿名函数这里去跟栈的 【JS逆向】之jsvmp猿人学18题_第3张图片
在这重新把断点下在那个匿名函数上面 问我为什么要在这里断 这里你可以去看看前面的栈 其实很容易发现 这个不懂在私信我 现在断在这个匿名函数这里之后 我们就去跟栈 跟栈就进入我们今天要逆向的逆向函数了
【JS逆向】之jsvmp猿人学18题_第4张图片
一直往下面跟 你就发现这个 函数了 后面问我们再来分析和解决
【JS逆向】之jsvmp猿人学18题_第5张图片

2.分析和解决

1.分析
他这个函数呢 你也可以跟看一下他的一些逻辑 他这个逻辑还是比较底层的
最后你跟了半天你会发现 你在浪费时间 不过对新手还是有很大的帮助的

我的调试过程 :
反正几乎我所有想要调试的代码,都会指向这里,什么encrypt等函数,都会进入到这里来,一步一步的走有灰常繁琐,并且当看到希望时,又是给你指向到这里,而且被加密的参数在你进入这个函数前就已经生成,但是还是得调试调试。反正我比较喜欢在逆向的过程的当中看到缝子我就钻进去了 搞定一种方法之后我才会去搞第二种方法 今天也是给你们讲钻缝子这种方法 还有一种不讲 公开讲不划算

2.解决
利用hook去解决他 不会hook的 看我前面的文章
注意这个参数
【JS逆向】之jsvmp猿人学18题_第6张图片
细心的话会发现那个特殊的函数传进来的第一个参数""的组成有些眼熟,[1][0]是一个CryptoJS对象,虽然找不到在哪里生成的,但是大概可以确定这是一个AES加密了,并且填充方式为pkcs7。都知道是那个加密了 看过我以前文章的人都解决了吧 hook思路不就来了嘛

var hauye= _[1][0]['CryptoJS']['AES'].encrypt;

_[1][0]['CryptoJS']['AES'].encrypt = function(a, b, c, d, e) {
 debugger;
    var xxx = huaye(a, b, c,d,e);
     debugger;
    console.log(huaye.toString())
    return xxx;
};

这个代码需要解释的 私信我 我私下解释 因为大多数人都看得懂
【JS逆向】之jsvmp猿人学18题_第7张图片
这个玩意很容易就hook进来了 我们就要拿key 和 iv 值嘛 还原就好了

_[1][0]['CryptoJS'].enc.Utf8.stringify(a) 
"2|254m256,253m257,252m258,252d258,252u258"

2就是页面嘛 其他的参数应该可以写死  这个玩意就是key
_[1][0]['CryptoJS'].enc.Utf8.stringify(b) 
"6205309c6205309c"
这个玩意就是iv


【JS逆向】之jsvmp猿人学18题_第8张图片

总结

没啥太大的难度的 思路决定难度的 关注我公众号 我公众号可以对你们想看的文章投稿哦 感谢大家观看 双击三连哦
【JS逆向】之jsvmp猿人学18题_第9张图片

你可能感兴趣的:(js逆向,javascript基础,javascript,开发语言,ecmascript)