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

JSVMP

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



一、抓包

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

二、进入代码段

1.下XHR断点

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

2.分析和解决

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

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

2.解决
利用hook去解决他 不会hook的 看我前面的文章
注意这个参数
在这里插入图片描述
细心的话会发现那个特殊的函数传进来的第一个参数""的组成有些眼熟,[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;
};

这个代码需要解释的 私信我 我私下解释 因为大多数人都看得懂
在这里插入图片描述
这个玩意很容易就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


在这里插入图片描述

总结

没啥太大的难度的 思路决定难度的 关注我公众号 我公众号可以对你们想看的文章投稿哦 感谢大家观看 双击三连哦
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值