0

Während ich das Buch Practical Malware Analysis las, machte ich die Übung 7_01. Hier ist ein Link auf den Code und die Antworten - https://jmprsp.wordpress.com/2016/03/03/practical-malware-analysis-analyzing-malicious-windows-programs-lab-7-01/Praktische Malware-Analyse - 7_01, Push ohne Grund

Es gibt zwei Befehle, die ich nicht wirklich verstehen können, was sie tun in der Hauptfunktion (Code von IDA kopiert):

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 ist die Funktion Sub_401040, die im obigen Link gezeigt wird, erhält keine Argumente und es gibt keinen Grund für diese 2 Pushs von Null. Kann mir bitte jemand das erklären? Wenn ich raten müsste, würde ich sagen, dass der Compiler diese Pushs aus irgendeinem Grund dorthin gesetzt hat, aber ich weiß nicht warum

+0

Welche Funktion im Besonderen? Die, die ich dort sehe, nehmen Argumente. – Jester

+0

Ich habe den Code für die Haupt hinzugefügt, ich habe nicht gesehen, dass es nicht in der Verbindung war, aber ich schrieb es von dem, was ich sah während der Demontage in IDA – Dan

+0

Der Link enthält nur einen kleinen Teil der 'sub_401040', kann es benutze immer noch Argumente. – Jester

Antwort

0

Ich denke, diese Anwendung muss als ein Dienst ausgeführt werden, aber Sie können es erzwingen, durch zu laufen Setzen des Befehlszeigers direkt auf die Hauptfunktion sub_401040.