前言
开始对这个网站wasm加密有研究过一段时间,后来有事,就没继续研究了,最近,没啥事,又来研究一下。
参考文章
1.某网站视频加密的wasm略谈 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn https://www.52pojie.cn/thread-1533409-1-1.html
2.某网站视频加密的wasm略谈 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn https://www.52pojie.cn/thread-1533409-1-1.html
3.还有吾爱xhx520的广播 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn。https://www.52pojie.cn/home.php?mod=space&uid=730156 xhx520这位大佬的文章。
对某网站用wasm进行视频加密进行逆向
这种加密,上面参考文章的大佬,渔哥已经完成逆向了,而且有几种方法,逆向算法和补wasm环境和wasm转c。文章链接放在这里
wasm转c调用与封装至dll案例 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn。
这里,方法都非常好,但是需要一步一步断点找,找导入函数,导入表等。显得有些麻烦。有没有一种更简单的方法呢。既然wasm在浏览器里面运行了,那他环境肯定就补好了,能不能直接拿过来呢,不用改什么东西,直接用?
开始逆向
1.找到对应js
我们打开这个网站,进入开发者工具,点开视频,他会加载一个wasm文件。我们直接对这个wasm下断。看看是哪个js调用了它。
查看堆栈,找到对应的js,这个就是调用的js。
可以看到这里,其实是调用了一个wasm里面的get函数,来对视频进行解密。
2.下载js
我们将js下载下来,进行分析。
看到这里,我们可以发现,一个是webpack打包过来,箭头指的地方很容易发现是个 加载器。我们可以用渔哥的工具webpack自动扣代码脚本。来将wasm加载的函数扣下来。这里我没试,我直接手动把那个函数扣下来了。
3.扣wasm加载的js
这里我们主要找那个分发函数,断点跟一下,看一下关键词Module
这里,我们可以找到,这个14对应的函数,就是我们的要的wasm加载函数。我们就将这个函数扣下来。其他的都可以删掉。
这个函数最后返回的一个Module,就是我们要的函数,现在我们只要导出这个Module,这个导出方法很多,这个就不具体说了。
4.加个延时
module导出之后,我们直接输出console.log(Module.asm.f)会显示
undefined。这样就达不到我们导出的目的了。这个时候,我们要加个延时。setTimeout。这个就可以正常调用导出函数了。这一步非常重要。记得加延时。
这里我们看到,加了0.1秒的延时,就可以正常输出了。(非常的神奇)。接下来我们就可以调用这个f函数进行视频的解密了。这个其中省去了很多步骤,不需要断点找表,找导入的js函数等。直接拿别人补好的环境就行。相对其他方法来说。还是算比较简便的。