From b9fd2a2b9cfd2f1a84223adc9aa3dc20d74436b4 Mon Sep 17 00:00:00 2001 From: pommicket Date: Sun, 13 Feb 2022 22:12:44 -0500 Subject: sprintf working! (but not snprintf ...) --- 05/main.c | 52 ++++++---------------------------------------------- 1 file changed, 6 insertions(+), 46 deletions(-) (limited to '05/main.c') diff --git a/05/main.c b/05/main.c index fc4b036..7503a10 100644 --- a/05/main.c +++ b/05/main.c @@ -1,50 +1,10 @@ -static unsigned char __syscall_data[] = { - // mov rax, [rsp+24] - 0x48, 0x8b, 0x84, 0x24, 24, 0, 0, 0, - // mov rdi, rax - 0x48, 0x89, 0xc7, - // mov rax, [rsp+32] - 0x48, 0x8b, 0x84, 0x24, 32, 0, 0, 0, - // mov rsi, rax - 0x48, 0x89, 0xc6, - // mov rax, [rsp+40] - 0x48, 0x8b, 0x84, 0x24, 40, 0, 0, 0, - // mov rdx, rax - 0x48, 0x89, 0xc2, - // mov rax, [rsp+48] - 0x48, 0x8b, 0x84, 0x24, 48, 0, 0, 0, - // mov r10, rax - 0x49, 0x89, 0xc2, - // mov rax, [rsp+56] - 0x48, 0x8b, 0x84, 0x24, 56, 0, 0, 0, - // mov r8, rax - 0x49, 0x89, 0xc0, - // mov rax, [rsp+64] - 0x48, 0x8b, 0x84, 0x24, 64, 0, 0, 0, - // mov r9, rax - 0x49, 0x89, 0xc1, - // mov rax, [rsp+16] - 0x48, 0x8b, 0x84, 0x24, 16, 0, 0, 0, - // syscall - 0x0f, 0x05, - // mov [rsp+8], rax - 0x48, 0x89, 0x84, 0x24, 8, 0, 0, 0, - // ret - 0xc3 -}; - -#define __syscall(no, arg1, arg2, arg3, arg4, arg5, arg6)\ - (((unsigned long (*)(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long))__syscall_data)\ - (no, arg1, arg2, arg3, arg4, arg5, arg6)) - -typedef unsigned long size_t; - -long write(int fd, void *buf, size_t count) { - __syscall(1, fd, buf, count, 0, 0, 0); -} +#include int main(int argc, char **argv) { - write(1, "Hello, world!\n", 14); - return 0; + char buf[200] = {0}; + sprintf(buf, "Hello, %d %.2f %g %s %p\n", 187, 77.3, 349e12, "Wow!", "yea"); + // snprintf(buf, 200, "Hello\n"); //<- NOT WORKING + write(1, buf, sizeof buf); + return *buf; } -- cgit v1.2.3