修改VMP源码实现虚拟化IAT?
新人发帖..排版问题见谅~先上图
通过对VMP源码的简单修改,可以实现对IAT调用指令的识别和单独虚拟化加密
加密效果?
用来对比的原图如下
根据图中信息可以清楚地看到
004DAF0F | FF15 78D24F00 | call dword ptr ds:[<GetVersion>] |
这条非常明显IAT调用信息
在加密后,原来004DAF0F的地址变成了一个jmp,跟进看看?
一个push,一个call,标准的虚拟机入口
开始进入虚拟机执行代码
那么又有人要问了,那符号表呢
加密之前可以清楚地分析符号表和引用位置
加密之后被混淆
--------------
由此引申出两个问题
效率和兼容性?
先来说兼容性,众所周知的vmp兼容性好,基本上把各种可能出现的情况都做了预防和处理,而且如图所示,由于是只加密了一条指令,基本上不存在比较大的兼容性问题
然后是效率,既然vmp的兼容性好,在这基础上添砖加瓦也是顺手的事,由此带来的就是效率比较低,像图中一样,如果这个API被频繁调用,肯定会导致效率很低
由此引申出第二个概念,"去砖减瓦",vmp的源码内置一个2.x结构的虚拟机,而且内部大部分选项都可以在一开始对flags编码进行开启/关闭指定加密选项
那么可不可以,使用2.x的虚拟机然后数量设置为1,然后把内部的大部分加密选项都关掉,只留下关键的几个
在加密40条汇编指令后,大小仅增大10kb?!
小菜见解,大佬喷轻点~
结尾贴出所有文件的链接
程序来源于网络,务必在虚拟机内进行分析!
程序来源于网络,务必在虚拟机内进行分析!
程序来源于网络,务必在虚拟机内进行分析!
https://www.123pan.com/s/sBh9Td-4blf.html
https://www.123pan.com/s/sBh9Td-Mv7f.html
然鹅vmp本来就会对IAT进行加密...,你不标识他也会加密的,这不是脱裤子放屁吗0.0 高手啊{:5_117:} 谢谢分享 ssjjdns 发表于 2024-8-19 12:28
然鹅vmp本来就会对IAT进行加密...,你不标识他也会加密的,这不是脱裤子放屁吗0.0 ...
支持大佬,这不是嫌弃原来的iat加密强度太低了吗 谢谢分享 谢谢分享。。 vmp本身对iat他就带有保护,只是本身的是“变异”,并不是虚拟机的保护,但是已经足够了 你全部用虚拟机来保护iat 只会过分的影响效率,而保护方面,利用模拟器跑似乎是一样的没有区别,一样可以一键跑出来,反而浪费了很多效率。。。似是无用功?
学习一下