-
-
[原创]VMProtect分析(二)
-
发表于:
2021-7-13 17:58
22939
-
VmProtect分析(一)
继续看下程序的Handler是如何计算的,查看VmJMP代码:
算法教简单:Handler表中根据BYTE:[RSI-1]取偏移,循环右移5位 ,再加上Handler基址。
寄存器状态如下:
程序的Handler表(部分截图)(00007FF7C63B065C , L800):
Handler数量有0n256个之多,我们此次将Tls回调函数作为分析目标,先走一小步,只看那些会用到的,没用到的先不管它。
首先需要确定Tls回调函数的结束地址,在启动中断在Tls时,查看调用栈(下图),Tls回调执行完毕后,会返回到00007FFDBB969A1D这个地址,可以在这个地址下断,用于标识Tls回调函数已经执行完毕。
然后我们写个插件,用于辅助分析Handler,插件注册了4个命令(插件源码见附件vm_plug):
写脚本如下:
调试启动程序,中断在Tls回调函数起始处,执行上文脚本,各个handler的trace文件会以名字vm_[handler地址].trace64保存至X64DBG所在文件夹下(可调用vmclear删除),跟踪文件见附件trace.zip。
分析各个Handler(需要一点耐心),根据实现定义伪操作码如下:
看几个有代表性的Handler:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-7-13 18:07
被Anakin Stone编辑
,原因: