专业丰富的破解论坛技术交流,提供软件安全,病毒分析,脱壳破解,安卓破解,加密解密等,由无数热衷于软件爱好者共同维护
 
发新帖
查看: 583|回复: 0

[技术文章] 五节 逆向病毒分析(实战)

[复制链接]
玉面飞龙之王 发表于 2020-9-16 13:23:51 | 显示全部楼层
值得注意的是,004D5028+0x5 至 004D51AA 之间未被 IDA 识别的部分应该是病毒
Loader 的“数据段”。在病毒的代码中常常会有如下的写法:
start:
call data_end
data_start:
...
data_end: pop ebx
这样,代码执行完 pop ebx 之后,ebx 实际上就指向 start_data,之后的代码会以 ebx 为基址寄存器去访问寻址“数据段”。而本病毒用了类似的方法。后边的分析会验证这个结论。而对于数据段中各字段含义的分析,目前我们没有更多的信息,只能依靠调试器反馈的信息和一些经验去不断地猜测,验证。更精确的信息,需要到病毒分析的后期才能确定出来。因此,在本节中,无法完全分析清楚数据段中各字段含义是很正常的。为了方便验证,我们需要一份未被感染的样本作为猜测验证的依据。附件中的 chrome.exe 是未被感染的样本。接下来,我们以事物发展的自然顺序开始“流水账”式的分析,过程中会有“回溯”,注意导航性的文字。


分析函数 sub_004D51AA
seg000:004D51AA push ebp
seg000:004D51AB mov ebp, esp
seg000:004D51AD add esp, 0FFFFFEC0h
seg000:004D51B3 mov eax, ebp
;eax 指向栈帧基址
seg000:004D51B5 add eax, 4
;eax 指向函数返回地址
seg000:004D51B8 mov edx, ebp
;edx 指向栈帧基址
seg000:004D51BA push ebx
seg000:004D51BB push esi
seg000:004D51BC push edi
seg000:004D51BD xor ebx, ebx ;ebx 清零
seg000:004D51BF mov edi, [eax]
;edi 此时为函数返回地址,即 004D5028+0x5
seg000:004D51C1 lea ecx, [ebp+var_38]
;ecx 指向 v_38
seg000:004D51C4 sub edi, 5
;edi 此时为 004D5028,之后将以 edi 为基址寄存器寻址“数据段”。
seg000:004D51C7 mov eax, [edi+0Ch]
; 可见[edi+0Ch]处的值是个 dword,我们将 004D5028+0x0c 处的数据转换为 dword,结果为
; 0x4A2C0
快速回复 返回顶部 返回列表