最近发现个JSVMP,如下图
上面执行流程是一条一条指令执行,代码是AST还原后的结果,一般都会进行一层混淆,并不能直接看到逻辑。
可以将VM看作一个黑盒子,在执行黑盒子代码时,包含两部分,一部分是外部逻辑,一部分是内部的黑盒子逻辑,例如黑盒子会调用很多外部算法,这时候我们可以对外部所有算法进行hook,输出日志。
这里的93f80bf318a862d...是入参的其中一个参数,在外部算法的输出日志中并没有,下面在黑盒子VM内部增加日志,打印VM的堆栈和指令序号。
然后输出日志
找到日志93f80bf318a862d第一次出现的地方,如上图。增加代码进行调试,在这个位置断住。
断住后,发现其实就是从cookie中获取的值。
本文只是提供一种思路,具体还得自己去实践调试。
纯技术交流,请勿用于非法用途,如有权益问题可以发私信联系我删除.