IRC Logs for #lost


2022-04-17

17:00:47 CubeCoder joined the channel
17:00:53 CubeCoder: hallo
17:09:20 CubeCoder: bei nem 64 bit system in assembler:
17:11:19 CubeCoder: wenn man speicher auf dem stack besetzen möchte macht man doch sub rsp, 8 oder? also dann für 64-bits bzw 8 byte variable... und 64-bit ist ja ein qword oder?
17:11:29 CubeCoder: syntax ist übrigens nasm...
18:27:13 CubeCoder: Sind hier alle beim Osterfeuer? xD
20:28:36 Paddy joined the channel
20:29:56 Paddy: Moin
20:30:05 Paddy: Und frohe Ostern!
20:32:17 Paddy: CubeCoder: Kann man so machen, ja
20:32:51 CubeCoder: okay danke und frohe ostern
20:32:52 Paddy: Oder halt gleich push, dass der Wert auch initialisiert ist
20:33:03 CubeCoder: okay
20:33:48 Paddy: Willst du einen kompletten 64-Bit-Kernel in Assembler schreiben?
20:34:48 CubeCoder: ne nur bisschen mit assembler rumprobieren keinen kernel
20:35:21 Paddy: Ah, ok
21:33:16 CubeCoder joined the channel
22:01:15 CubeCoder: wenn ich jetzt zwei integer auf den stack pushe (push byte 0xA; push byte 0x30) dann sind das 16 bits also muss ich danach add rsp, 16 machen oder?
22:03:33 CubeCoder: und ab 0 + rsp wäre 0x30 und ab 8+rsp wäre 0xA (also [rsp] = 0x30; [rsp+8] = 0xA)
22:04:47 Paddy: Bytes landen nie auf dem Stack, wenn ich das gerade richtig weiß
22:05:34 Paddy: Intel-Doku zu push immediate: "Push sign-extended imm8. Stack pointer is incremented by the size of stack pointer."
22:06:57 CubeCoder: hmm
22:06:58 CubeCoder: okay
22:07:01 Paddy: 16 Bit kannst du wohl auf den Stack kriegen, wenn du Register oder Speicher pushst
22:10:52 CubeCoder: weil bei meinem assembler code (https://pastebin.com/9ddCm9GJ) muss ich bei der länge (rsi) 9 angeben, um den zweiten character auch auszugeben sonst wird nur der erste ausgegeben. das verwundert mich halt ich dachte das es irgendwie einen puffer zwischen den verschiedenen stack-einträgen gibt aber ka
22:12:35 Paddy: Ja, wird halt auf 64 Bit erweitert, d.h. du kriegst 0A 00 00 00 00 00 00 00 auf den Stack gepusht
22:12:58 CubeCoder: die puts funktion geht eben das array durch und schreibt dann jeden character (https://pastebin.com/zF46Uumy)
22:13:07 CubeCoder: achso
22:14:03 Paddy: Aber du kannst ja einfach push word 0x0A30 machen
22:15:18 Paddy: Wobei man ja Ausgabestrings normal eh nicht auf dem Stack liegen hat, sondern einen Pointer ins Datensegment nimmt
22:15:51 CubeCoder: wow okay danke ich hatte es vorher nur mit 0x30A versucht aber das hat nicht funktioniert macht aber ja auch sinn bis 255 bei hex zu gehen für jeden character
22:17:37 Paddy: Deins müsste auch tun, aber halt umgekehrte Reihenfolge, also erst Zeilenumbruch, dann 0
22:18:08 Paddy: Weil x86 ja Little Endian ist
22:18:35 CubeCoder: ja das hatte ich auch schon überlegt aber dann kann man keine dynamischen strings machen also keine neuen in der runtime erstellen etc. oder? weil man kann ja nicht in der runtime neuen speicher belegen also allocaten...
22:19:24 Paddy: Da brauchst du dann halt erstmal ein malloc() oder sowas
22:19:37 CubeCoder: ähm bei 0x30A hatte der mir nur nen zeilenumbruch ausgegeben hat das dann wahrscheinlich also 0x30A0 und nicht als 0x300A interpretiert...
22:19:52 CubeCoder: ja genau so weit bin ich halt noch nicht xD
22:20:10 Paddy: Aber selbst dann hast du ja normal einen festen Formatstring aus dem Datensegment als Eingabe für was printf-artiges
22:20:27 Paddy: Und produzierst nur eine veränderte Kopie davon
22:21:18 Paddy: CubeCoder: Ne, führende Nullen sind egal. Wie bei normalen Zahlen.
22:21:28 CubeCoder: okay... ja mit dem stack war/ist nur so eine zwischenlösung
22:22:18 CubeCoder: okay hm dann kapier ichs nicht das er nicht das richtige ausgegeben hat also bei 0x300A kommt \n0 aber sonst nicht... komisch
22:23:38 Paddy: Oh, richtig, das ist ja gar keine führende Null, die du weggelassen hast
22:23:41 Paddy: Ich sollte lesen lernen ;-)
22:24:02 CubeCoder: ich dachte schon xD
22:24:26 Paddy: 0x03 ist ein Steuerzeichen, dürfte als irgendein Symbol rauskommen, wenn du das einfach in den Grafikspeicher schreibst
22:25:20 CubeCoder: jap
22:25:27 Paddy: Ein Herz, oder?
22:25:56 CubeCoder: also bei mir kommt einfach gar nichts raus könnte aber auch einfach an der konsole liegen...
22:27:28 CubeCoder: also bei windoof nur nen kästchen
22:29:03 Paddy: Ach die Ausgabe kommt bei dir in die Konsole? Ich dachte an ein QEMU-Fenster.
22:29:37 CubeCoder: ne lasse das im wsl2 laufen im hexeditor seh ich aber dass das 03 ist
23:04:54 mib_2ey4iv joined the channel