title: 恶意代码实战分析Lab 9-3
id: 68d557cc-1b00-4218-bbdf-2dbe66e96626
date: 2024-08-18 11:46:56
auther: 1256455767
cover: null
excerpt: Lab 9-3 使用OllyDbg和IDA Pro分析恶意代码文件Lab09-03.exe。这个恶意代码加载3个自带的DLL(DLL1.dl、DLL2.dll、DLL3.dl),它们在编译时请求相同的内存加载位置。因此,在OllyDbg中对 照IDA Pro浏览这些DLL可以发现,相同代码可能会出现
permalink: /archives/91d38aae-a390-4a76-9f15-697a8085283f
categories:

  • windowsni-xiang
    tags:
  • er-jin-zhi-fen-xi

Lab 9-3

使用OllyDbg和IDA Pro分析恶意代码文件Lab09-03.exe。这个恶意代码加载3个自带的DLL(DLL1.dl、DLL2.dll、DLL3.dl),它们在编译时请求相同的内存加载位置。因此,在OllyDbg中对

照IDA Pro浏览这些DLL可以发现,相同代码可能会出现在不同的内存位置。这个实验的目的是让你在使用OllyDbg看代码时可以轻松地在IDAPro里找到它对应的位置。

问题

1.Lab09-03.exe导入了哪些DLL?

1.导入表导入了4个:KERNEL.dll,NERAPI32.dll,DLL1.dll,DLL2.dll.动态导入有一个DLL3.dll和User32.dll.

2.DLL1.dll、DLL2.dll、DLL3.dll要求的基地址是多少?

1.都是0x10000000;DLL1.dll:10000000,DLL2.dll:10000000,DLL2.dll:10000000.

3.当使用OllyDbg 调试Lab09-03.exe时,为DLL1.dll、DLL2.dl、DLL3.dl分配的基地址是什么?

内存中DLL1在:0x10000000,DLL2:0x630000,DLL3:0x640000.(不同机器地址不同)

4.当Lab09-03.exe调用DLL1.dll中的一个导入函数时,这个导入函数都做了些什么?

DLL1导出的是一个打印函数:打印了("DLL 1 mystery data %d\n",GetCurrentProcessId()),当前进程ID;

5.当Lab09-03.exe 调用writeFile函数时,它写入的文件名是什么?

1.是通过DLL2导出函数DLL2ReturnJ返回的结构体,通过分析结构体数据哪来的找到通过函数CreateFileA返回赋值的.最终确认文件名"temp.txt".

6.当Lab09-03.exe使用NetScheduleJobAdd创建一个job时,从哪里获取第二个参数的数据?

1.第二个参数来源于DLL3的导出函数DLL3GetStructure. 推测这个结构体大小为16个字节

{DWORD struct1=0x3600000,DWORD struct2=1,db struct3=17,db struct4=1,db UKnow,db UKnow,wchar_t* str}

7.在运行或调试Lab09-03.exe时,你会看到Lab09-03.exe打印出三块神秘数据。DLL 1的神秘数据,DLL2的神秘数据,DLL3的神秘数据分别是什么?

1.DLL1打印的是当前进程的PID.

2.DLL2打印的是CreateFileA返回的句柄,也就是打开temp.txt文件的句柄.

3..DLL3打印的是一个地址,这是一个字符串的地址:"ping www.malwareanalysisbook.com".

8.如何将DLL2.dll加载到IDA Pro中,使得它与OllyDbg 使用的加载地址匹配?

1.在第一次打开DLL的时候勾上手动加载选项进去填写要重新映射的基地址.