我研究了一篇关于木马的分析论文,有以下流水线:
.text:004010D0 Get_PE_section_address proc near
.text:004010D0
.text:004010D0 arg_0 = dword ptr 4
.text:004010D0
.text:004010D0 mov ecx, [esp+arg_0]
.text:004010D4 mov eax, [ecx+3Ch]
.text:004010D7 movzx edx, word ptr [eax+ecx+14h]
.text:004010DC add eax, ecx
.text:004010DE movzx ecx, word ptr [eax+6]
.text:004010E2 push ebx
.text:004010E3 add edx, eax
.text:004010E5 push esi
.text:004010E6 lea esi, [ecx+ecx*4]
.text:004010E9 lea eax, [edx+esi*8-38h]
.text:004010ED xor edx, edx
.text:004010EF test ecx, ecx
.text:004010F1 jbe short loc_401102
.text:004010F3
.text:004010F3 loc_4010F3:
.text:004010F3 mov bl, [eax+5]
.text:004010F6 test bl, bl
.text:004010F8 jz short loc_401104
.text:004010FA inc edx
.text:004010FB sub eax, 28h
.text:004010FE cmp edx, ecx
.text:00401100 jb short loc_4010F3
.text:00401102
.text:00401102 loc_401102:
.text:00401102 xor eax, eax
.text:00401104
.text:00401104 loc_401104:
.text:00401104 pop esi
.text:00401105 pop ebx
.text:00401106 retn
.text:00401106 Get_PE_section_address endp
如您所见,论文的所有者将该函数重命名为 Get_PE_section_address。我花了很多时间来理解他/她为什么会这样调用,因为我无法理解为什么这段代码会检索到 PE 部分地址。
所以,我的问题是,是否有人可以告诉我哪些行告诉我们这是关于 PE 部分地址的。
PS:我尝试使用偏移量,但成功率很低。我唯一能说的是 ebx = 指向恶意可执行文件的指针和 arg_0 = 0 在搜索了一段时间 PE 文件格式文件后,我发现第二行
mov eax, [ecx+3Ch]
给了我 exe 头文件的地址。
最好的祝福,