PC端恶意代码的混淆与加壳对抗( 五 )


str指令用来从任务寄存器中检索段选择子 , 段选择子指向当前运行任务的任务状态段(TSS)
恶意代码编写者可以利用str指令探测虚拟机的存在 , 因为这条指令返回的值 , 在虚拟机系统与宿主系统可能不同(这种技术对于多处理器的硬件无效)
Lab17-1
这里先写一个idc脚本 , 在程序中搜索相关反虚拟的指令 , 然后输出对应的地址 。

PC端恶意代码的混淆与加壳对抗

文章插图
 
这里可以看到有三个地址 , 三个地方存在反虚拟的指令401121 , 4011b5,401204
PC端恶意代码的混淆与加壳对抗

文章插图
 
先去401121 , 可以看到是sldt
PC端恶意代码的混淆与加壳对抗

文章插图
 
之后对sldt之后值进行了一个比较 , 应对方法 , nop掉
PC端恶意代码的混淆与加壳对抗

文章插图
 
再去4011b5,可以看到这里是sidt.
PC端恶意代码的混淆与加壳对抗

文章插图
 
这里是对结果的一个检测 , 也可以通过nop的方式解决 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
接下来是str.
PC端恶意代码的混淆与加壳对抗

文章插图
 
之后是检测 , 也是nop
PC端恶意代码的混淆与加壳对抗

文章插图
 
Lab17-2
这次只关注反虚拟化的操作 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
这里用之前写好的idc脚本 , 找到了一个地址 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
可以看到是in
PC端恶意代码的混淆与加壳对抗

文章插图
 
PC端恶意代码的混淆与加壳对抗

文章插图
 
这里也可以用nop处理
Lab17-3
放入ida中查看 。
PC端恶意代码的混淆与加壳对抗

文章插图
 
用之前的idc脚本查找
PC端恶意代码的混淆与加壳对抗

文章插图
 
可以查到一个地址
PC端恶意代码的混淆与加壳对抗

文章插图
 
是I/O查找
PC端恶意代码的混淆与加壳对抗


推荐阅读