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
Welche Funktion im Besonderen? Die, die ich dort sehe, nehmen Argumente. – Jester
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
Der Link enthält nur einen kleinen Teil der 'sub_401040', kann es benutze immer noch Argumente. – Jester