diff options
author | pommicket <pommicket@gmail.com> | 2022-02-13 22:12:44 -0500 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2022-02-13 22:12:44 -0500 |
commit | b9fd2a2b9cfd2f1a84223adc9aa3dc20d74436b4 (patch) | |
tree | 6b66fccc7dae7b2f550e18400332e1b2fa58ec1b /05/main.c | |
parent | 2fef6981954df735f1f364e96c365c6f000a638b (diff) |
sprintf working! (but not snprintf ...)
Diffstat (limited to '05/main.c')
-rw-r--r-- | 05/main.c | 52 |
1 files changed, 6 insertions, 46 deletions
@@ -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 <stdio.h> 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; } |