首页
社区
课程
招聘
[原创]恶意代码分析实战Lab03-03(PE映像切换技术)
发表于: 2021-9-29 20:12 13606

[原创]恶意代码分析实战Lab03-03(PE映像切换技术)

2021-9-29 20:12
13606

这个样本比较有意思,利用了pe映像切换技术,《逆向工程核心原理》有类似例子,最近也是上课看书,偶然看到这部分,写个文章巩固下知识点。

我们首先来康康什么是pe映像。

我们都知道创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟 进程地址空间。pe映像就是pe文件在进程内存中的映射形态。

并且pe文件和pe映像在形态上也不会是完全相同的,会有一些差别,如下。

那么什么是pe映像切换呢,简单来说,假设现在有A,B,setup三个exe文件,我们会使用setup.exe来创建A进程,按道理本该执行A进程,但是却使用pe映像切换技术来达到运行B进程的目的。

下面来大概总结其步骤,是setup.exe的代码步骤。

在看完本lab和《逆向工程核心原理》中的例子后,产生了两个问题

先看看行为吧,可以看到创建了一个进程,并且退出了。

查壳,无壳,先拖进ida静态分析分析。

main函数

sub_40132C函数

我们后面在来解密这个文件,并分析它。

sub_4010EA函数,这个函数的参数有两个,一个是C:\Windows\System32\svchost.exe,用来创建进程,一个是申请的空间地址,保存着解密后的资源文件。

利用resource hacker dmup出资源文件,然后解密,现在来分析解密后的资源文件。

先看main函数

fn函数

sub_4010C7函数

效果如下

最终我们得出结论,该恶意软件是一个键盘记录器,它在svchost.exe上使用进程替换。

 
 
 
 
 
#include<stdio.h>
#include<math.h>
 int main(void){
 
       FILE *p;
    char v[0x5FE0]={0};
    int i;
 
    p=fopen("abc.bin","rb");
    fread(&v, 1, 0x5FE0, p);
    for(i=0;i<0x5FE0;i++)
    {
        v[i]=v[i]^65;
    }
    FILE *p1 = fopen("def.bin", "wb");
    fwrite(&v, 1, 0x5FE0, p1);
}
#include<stdio.h>
#include<math.h>
 int main(void){
 
       FILE *p;
    char v[0x5FE0]={0};
    int i;
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 4734
活跃值: (4281)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个技术就是傀儡进程吧
2021-11-18 10:22
0
雪    币: 3508
活跃值: (3333)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
3
木志本柯 这个技术就是傀儡进程吧
是的,只是书中的名称是pe映像切换
2021-11-19 12:49
0
游客
登录 | 注册 方可回帖
返回
//