首页
社区
课程
招聘
[原创]VMProtect分析(二)
发表于: 2021-7-13 17:58 22939

[原创]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编辑 ,原因:
上传的附件:
收藏
免费 6
支持
分享
最新回复 (3)
雪    币: 2541
活跃值: (1933)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2021-7-13 18:08
0
雪    币: 1451
活跃值: (2069)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
3
就等大佬带我学vmp了
2021-7-14 15:02
0
雪    币: 43
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这种分析文章没有“为什么”,毫无意义。
2021-7-14 20:31
0
游客
登录 | 注册 方可回帖
返回
//