某vm加壳分析

背景

早上哥们儿那里发了一个样本过来,让弟弟简单的看看这是个什么东西,好嘛!点开就是vm警告,右键回收站。

 还是得给好哥哥一点面子,在看看,放进虚拟机之后直接运行,现象就是闪一下,也没有vmp的警告,你这闪一下是什么意思?吓唬谁呢?

 开摆

当第一次触发异常的时候,.text段的代码已经初始化了可以用VMPImportFixer把它给dump下来

 dump下来之后在假装看看字符串,发现了如下数据 

通过对该初始化函数下断点,动态调试,往上找调用的call发现了main函数

 观察一下这个参数也不难发现这个就是main函数

 继续看看,发现是自定义的vm代码,经典(x)vm,只有单步跟踪看看都进行了什么操作。

第一个call,检测当前进程列表中是否包含下面这些进程,以及closehandle的反调试手段,我也说为什么闪一下就妹了,原来是有反调试。

 第二个call,反vm通过查询cpuid判断当前是否处在虚拟机环境

第三个call就是它的主要逻辑

 每隔0x3E8写入一次文件,文件的内容先解密,解密方式为异或,之后写入文件的时候在进行加密。(这里其实有bug,并不是每隔0x3e8写一次,应该是0x3e8*2,因为每次%2==0的时候都是加密的文件名(包含特殊字符),所以这一次写入是失败的,只有是明文的文件名写入才是成功的)

 结束

vmp不vm代码还是能玩,但是vm了代码基本就是右键回收站。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
加壳是指将一个已经编译好的可执行文件,通过加密、压缩等手段,使其变得难以被反汇编和逆向工程,从而提高软件的安全性。其中,UPX 是一种常用的加壳工具,可以将 Windows 和 Linux 下的可执行文件进行压缩和加密。 下面我们来分析一下 UPX 的加壳原理: 1. 文件压缩 UPX 首先对可执行文件进行压缩,可以使用多种压缩算法,包括 LZMA、LZ77 和 Huffman 等。这些算法可以将文件中的重复数据或者无效数据进行删除或者压缩,从而减小文件的体积。 2. 加密 UPX 还可以对压缩后的文件进行加密,可以使用多种加密算法,包括 Blowfish、AES 和 RC4 等。加密可以使得文件内容变得难以被窃取和分析,从而提高软件的安全性。 3. 重定位 由于压缩和加密可能会影响可执行文件的结构,因此 UPX 还需要对文件进行重定位,以确保可执行文件在运行时能够正确加载和执行。重定位是指将可执行文件中的函数地址和数据地址进行修改,使得它们能够正确地指向压缩和加密后的数据。 4. 解压 当可执行文件被运行时,UPX 会先解压它,然后将它加载到内存中,并将其重定位。解压是指将压缩和加密后的文件恢复成原来的可执行文件,以便能够正确地执行其中的函数和数据。 总的来说,UPX 的加壳原理就是通过文件压缩、加密和重定位等手段,使得可执行文件变得难以被分析和逆向工程。但是,需要注意的是,UPX 只是一种基本的加壳工具,对于一些高级的反调试和反反汇编技术,可能并不能有效地提高软件的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值