2016-05-04 9 views
-1

Ich arbeite an REing ein Programm für die Schule und es gibt zwei Zeilen, die ich wirklich nicht scheinen kann, herauszufinden.Aufruf GetCurrentProcess ignoriert den zurückgegebenen Wert

  • Zunächst ist das Programm ruft GetCurrentProcess, und dann die nächste Zeile: LEA eax, -something-

    Warum wir so etwas tun würde? Lesen auf GetCurrentProcess Ich fand heraus, dass es ein Handle auf den aktuellen Prozess zurückgibt, den Wert dieses Handle in eax setzen.

  • Nun, warum würde das Programm den Wert löschen, der in eax mit lea zurückgegeben wurde? und warum würde es diese Funktion sogar aufrufen, wenn es den zurückgegebenen Wert überhaupt nicht verwendet?

Gibt es noch etwas, das GetCurrentProcess das rechtfertigen würde?

+5

Vielleicht möchten Sie uns den relevanten Baugruppencode zeigen, über den Sie sprechen. –

+0

Es gibt wirklich nichts zu zeigen, das Programm ruft GetCurrentProcess in einer Zeile und die nächste Zeile ist lea eax, etwas. Diese zwei Zeilen sind die einzige Sache, die ich nicht verstehen kann, der Rest ist wirklich irrelevant – Dan

+0

Nun, nicht sicher, ob es irrelevant ist. Wie auch immer, haben Sie die Tatsache in Betracht gezogen, dass der Aufruf von 'GetCurrentProcess()' nur dazu da ist, den Reverse Engineer zu verwirren? Wenn du "...; GetCurrentProcess(); ... 'in Ihrem C-Code erhalten Sie grob, was Sie beschreiben: Die Funktion wird aufgerufen und der Rückgabewert wird ignoriert/verworfen. –

Antwort

4

Unter Windows Betriebssystem können Sie immer auf den aktuellen Prozess über eine Pseudo-Handle zugreifen, deren Wert (HANDLE)-1 ist. Dieser Wert wird sicherlich in der zweiten Zeile direkt in eax geladen, aber das ist auch der Wert, den GetCurrentProcess() zurückgibt.
Wenn ich gut verstanden habe, dass Sie ein Stück Software zurückentwickeln, entschied sich der ursprüngliche Programmierer meiner Meinung nach, von einem System zum anderen zu wechseln, von der Konstanten (HANDLE)-1 bis GetCurrentProcess() oder umgekehrt und vergaß, die frühere Wahl zu kommentieren.
Keine Nebenwirkung sollte für irgendeine Wahl vorhanden sein, die Sie treffen.
Für weitere Informationen siehe https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx.