Ist es möglich, einen Prozess auszuführen, dessen argc = 0? Ich muss ein Programm ausführen, aber es ist extrem wichtig, dass sein argc gleich 0 ist. Gibt es einen Weg, das zu tun? Ich habe versucht, 2 ^ 32 Argumente in die Befehlszeile zu setzen, so dass es scheint, als ob argc = 0, aber es gibt eine maximale Grenze für die Anzahl der Argumente.
Sie können den Linux-Systemaufruf execve () verwenden.
%Vor%Sie können den Dateinamen der ausführbaren Datei und einen Nullzeiger als argv [] übergeben, um die Binärdatei auszuführen, und der argc ist null .
Es ist mein Testcode:
%Vor%Und das strace Ergebnis ist:
%Vor%Sie können envp [] verwenden, um die von Ihnen definierten Argumente trotzdem zu übergeben.
Außerdem können Sie die Assemblersprache verwenden, um Ihr Ziel zu erreichen (argc == 0, aber Sie müssen immer noch Argumente übergeben). Ich nehme an, dass Sie eine 32-Bit-x86-Umgebung verwenden.
Das Konzept ist das:
Die Speicherstruktur ist unten gezeigt:
%Vor%Ich frage mich, ob Sie die Laborarbeit von Prof. Taesoo Kim (GATech) machen würden. Kurslink: Ссылка
Oder ist es ein Hacker-CTF-Problem (catch-the-flag contest)?
Tags und Links c integer-overflow argv argc