shellcode分析过程中符号还原

一.基本操作

在逆向分析的过程中涉及大量符号还原的部分,该部分主要介绍一些PE结构符号还原
通过 View->Open subviews->Type libraries 打开类型库窗口,可以看到当前 IDA 加载的类型库
在这里插入图片描述
View->Open subview->Structures 打开结构体窗口,可以看到 IDA 当前 的工程数据库中已经包含的所有标准和用户自定义的结构体信息
在这里插入图片描述
在结构体窗口中,Insert 键添加结构体,选择 add standard structure添加所需要的结构
回到代码窗口,在对应的数据上右键,conver to new structure*
在这里插入图片描述

二.技巧总计

标签:加载DLL
fs30+0xC=Ldr
LDR +0xC=_LIST_ENTRY
_LIST_ENTRY+0x18=DLLBASE
在这里插入图片描述
有3C的那个对应的结构是NTheaders
在这里插入图片描述
在符号还原的过程中:
5A4D对应IMAGE_DOS_HEADER
4550对应IMAGE_NT_HEADERS
两部分的关键部分为magic与signature
在这里插入图片描述
正常顺序:
_IMAGE_NT_HEADERS过后是
IMAGE_EXPORT_DIRECTORY结构
在这里插入图片描述
申请内存空间
最后一个参数40表示的是PAGE_EXECUTE_READWRITE
在这里插入图片描述
熟识两个API:
1.VirtualAlloc
LPVOID VirtualAlloc(
LPVOID lpAddress,
DWORD dwSize,
DWORD flAllocationType,
DWORD flProtect
)
2.BOOL WriteProcessMemory(
HANDLEhProcess,
LPVOIDlpBaseAddress,
LPVOIDlpBuffer,
DWORDnSize,
LPDWORD lpNumberOfBytesWritten )

alloc的特征:
在这里插入图片描述
下面三个都是一样的功能,获取一个DLL的基地址
一:
1 00404830 mov eax,dword ptr fs:[0x30] // PEB = FS:[0x30]
2 00404836 mov eax,dword ptr ds:[eax+0xC] // PEB_LDR_DATA = [PEB+0xC]
3 00404839 mov eax,dword ptr ds:[eax+0xC] //InLoadOrderModuleList 使用模块加载顺序遍历
4 0040483C mov eax,dword ptr ds:[eax+0x18] // eax = 00400000(LDR_DATA_TABLE_ENTRY.DllBase) 第一个DLL模块基址
二:
1 00404830 mov eax,dword ptr fs:[0x30] // PEB = FS:[0x30]
2 00404836 mov eax,dword ptr ds:[eax+0xC] // PEB_LDR_DATA = [PEB+0xC]
3 00404839 mov eax,dword ptr ds:[eax+0x14] // InMemoryOrderModuleList 使用模块在内 中的顺序遍历
4 0040483C mov eax,dword ptr ds:[eax+0x10] // eax = 00400000(LDR_DATA_TABLE_ENTRY.DllBase) 第一个DLL模块基址
三:
1 00404830 mov eax,dword ptr fs:[0x30] // PEB = FS:[0x30]
2 00404836 mov eax,dword ptr ds:[eax+0xC] // PEB_LDR_DATA = [PEB+0xC]
3 00404839 mov eax,dword ptr ds:[eax+0x1C] // InMemoryOrderModuleList 使用模块初始化时的顺序遍历
4 0040483C mov eax,dword ptr ds:[eax+0x8] // eax =776C0000(LDR_DATA_TABLE_ENTRY.DllBase) 第一个DLL模块基址

将所有内容转换成同一个格式特征识别:
在这里插入图片描述
Memoryset函数的特征:
在这里插入图片描述
分配空间,并且内存加载执行(其中0x1000,0x2000,0x3000表示的是加载时不同提交方式)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值