2016-08-14 1 views
0

Ihre erste Antwort wäre, perl oder python zu verwenden und die Eingabe in das C-Programm zu leiten, aber die Variable, die ich eingeben möchte, nimmt den Wert nicht vom Argument des C-Programms, sondern interaktiv fordert es den Benutzer auf, einen Wert einzugeben.Wie man HEX-Zeichen ohne entsprechendes ASCII an ein C-Programm als Eingabe übergibt

Mein Puffer hat eine Größe von 8 Bytes und alles mehr als 8 Bytes überschreiben die vorherige Variable [was genau ich will] und ich möchte, dass diese Variable mit dem Wert 1335 überschrieben wird. Die Variable ist vorbei geschrieben ist b und es ist vom int-Typ. Die Konvertierung von 1335 in hex gibt mir 537 und ich muss den Puffer mit 8 a's und dann die hex 37, 05, 00 und 00 überschreiben. Um diese Werte zu überschreiben, sollte ich das ASCII geben, das 37, 05 und 00 entspricht die Benutzereingabe. Da 05 und 00 in ASCII Steuerzeichen sind, kann ich sie nicht mit der Tastatur eingeben. Gibt es eine Möglichkeit, das ASCII dieser Werte in die Benutzereingabe einzugeben?

Desktop: Ubuntu 16.04

+0

welchen Terminal und OS/Desktop-Umgebung verwenden Sie? Die interaktive Eingabe beliebiger Zeichen hängt von der Terminal- und Desktop-Umgebung ab. –

+0

@lie Ich benutze Ubuntu 16.04 – hax

+0

Die Werte können als oktale Zeichen eingegeben werden, indem die Taste gedrückt gehalten wird und die Ziffern über die Tastatur eingegeben werden – user3629249

Antwort

0

konnte ich dieses Problem lösen, indem die Null-Zeichen mit Strg + Flucht @

+0

Durchsuchen Sie diese Seite nach "* shellcode *", um die verschiedenen Anforderungen und eine Reihe hilfreicher Tipps zu erläutern, um dies richtig zu erreichen. –

0

Um programmatisch das Problem zu beheben, Sie expect in einem Shell-Skript verwenden können.

+0

können Sie erweitern, wie das erwartet wird, um ein Zeichen in Stdin zu generieren, das das C-Programm lesen kann, mit etwas wie 'getchar()'? – user3629249

Verwandte Themen