实用恶意软件分析 - 7_01,无缘推送

时间:2016-05-04 10:35:17

标签: assembly compiler-construction stack compiler-optimization malware

在阅读“实用恶意软件分析”一书时,我正在进行7_01练习。这是代码和答案的链接 - https://jmprsp.wordpress.com/2016/03/03/practical-malware-analysis-analyzing-malicious-windows-programs-lab-7-01/

有两个命令我无法真正理解它们在main函数中的作用(从IDA复制的代码):

ServiceStartTable= SERVICE_TABLE_ENTRYA ptr -10h
var_8= dword ptr -8
var_4= dword ptr -4
argc= dword ptr 4
argv= dword ptr 8
envp= dword ptr 0Ch

sub esp, 16

lea eax, [esp+10h+ServiceStartTable]

mov [esp+10h+ServiceStartTable.lpServiceName], offset aMalservice

push eax

mov [esp+14h+ServiceStartTable.lpServiceProc], offset second_function

mov [esp+14h+var_8], 0

mov [esp+14h+var_4], 0

call ds:StartServiceCtrlDispatcherA

push 0

push 0

call second_function

add esp, 24

retn

second_function是上面链接中显示的函数sub_401040,它没有得到任何参数,并且没有理由将这2次推送归零。有人可以解释一下吗?如果我不得不猜测我会说编译器出于某种原因推出那些推送,但我不知道为什么

1 个答案:

答案 0 :(得分:0)

我认为,此应用程序必须作为服务运行,但您可以通过将指令指针直接设置为主函数sub_401040来强制它运行。