Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 实用恶意软件分析-7_01,无理由推送_Assembly_Compiler Construction_Stack_Compiler Optimization_Malware - Fatal编程技术网

Assembly 实用恶意软件分析-7_01,无理由推送

Assembly 实用恶意软件分析-7_01,无理由推送,assembly,compiler-construction,stack,compiler-optimization,malware,Assembly,Compiler Construction,Stack,Compiler Optimization,Malware,在阅读《实用恶意软件分析》一书时,我正在做7_01练习。这是代码和答案的链接- 有两个命令我无法真正理解它们在主函数中的作用(代码从IDA复制): 第二个函数是上面链接中显示的函数sub_401040,它不获取任何参数,也没有理由推送这两个零。有人能解释一下吗?如果我不得不猜测,我会说编译器出于任何原因将这些推送放在那里,但我不知道为什么,我认为,这个应用程序必须作为服务运行,但您可以通过将指令指针直接设置为主函数sub_401040来强制它运行。我认为,这个应用程序必须作为服务运行,但是您可以

在阅读《实用恶意软件分析》一书时,我正在做7_01练习。这是代码和答案的链接-

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


第二个函数是上面链接中显示的函数sub_401040,它不获取任何参数,也没有理由推送这两个零。有人能解释一下吗?如果我不得不猜测,我会说编译器出于任何原因将这些推送放在那里,但我不知道为什么,我认为,这个应用程序必须作为服务运行,但您可以通过将指令指针直接设置为主函数sub_401040来强制它运行。

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

具体是哪个函数?我在那里看到的那些确实带有参数。我为main添加了代码,我没有看到它不在链接中,但我根据在IDA中反汇编时看到的内容编写了它。链接仅包含sub401040的一小部分,它可能仍然使用参数。如果使用参数调用函数,编译器将提供这些参数。函数是否使用参数无关紧要。链接中的第二张图片显示了sub_401040的开头,看起来函数没有使用任何参数(至少根据IDA)。如果函数不接受它们,那么这些被推的零看起来是无用的。哪个函数特别有用?我在那里看到的那些确实带有参数。我为main添加了代码,我没有看到它不在链接中,但我根据在IDA中反汇编时看到的内容编写了它。链接仅包含sub401040的一小部分,它可能仍然使用参数。如果使用参数调用函数,编译器将提供这些参数。函数是否使用参数无关紧要。链接中的第二张图片显示了sub_401040的开头,看起来函数没有使用任何参数(至少根据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