沙箱模拟的时候,如果对结构体模拟不到位,缺少某些成员或者对于某些成员在某些情况下没有正确的赋值,也是反沙箱可以利用的点。
样本在获取取TEB偏移0x34的值(0x4015e),减去0x6后(0x4019E7),与跳转地址进行异或(0x401A2F),最后进行跳转到解密代码执行。因在沙箱里面获取的值不同,使得计算跳转的位置不正确,执行异常。
![](https://img-blog.csdnimg.cn/img_convert/e5a1a3cc8136aa6cee9f220798c8c794.png)
图1 获取TEB偏移的值
![](https://img-blog.csdnimg.cn/img_convert/1c1e1bec446e8530463ef6a5f5a2804b.png)
图2 计算跳转位置
解决方案:对结构体进行正确模拟,并对其正确赋值。
hash:04013599d13f25fe6341e274520db6ba02d3e8a8