From 7866f116dff8cc83d7b09f681c98722c6cd7c5a8 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 15 Aug 2024 13:59:18 +0200 Subject: [TRACE] Better trace for libc syscall --- src/emu/x64int3.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c index 14493647..2b907c35 100644 --- a/src/emu/x64int3.c +++ b/src/emu/x64int3.c @@ -209,6 +209,9 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr) } else if (strstr(s, "puts")==s) { tmp = (char*)(R_RDI); snprintf(buff, 256, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)(R_RSP), s, (tmp)?tmp:"(nil)"); + } else if (!strcmp(s, "syscall")) { + snprintf(buff, 256, "%04d|%p: Calling %s(%d, %p, %p....)", tid, *(void**)(R_RSP), s, (int)R_EDI, (void*)R_RSI, (void*)R_RDX); + perr = 1; } else if (strstr(s, "strlen")==s) { tmp = (char*)(R_RDI); snprintf(buff, 256, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)(R_RSP), s, (tmp)?tmp:"(nil)"); @@ -345,11 +348,11 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr) } break; } - if(perr==1 && ((int)R_EAX)<0) + if(perr==1 && (S_EAX)<0) snprintf(buff3, 64, " (errno=%d:\"%s\")", errno, strerror(errno)); else if(perr==2 && R_EAX==0) snprintf(buff3, 64, " (errno=%d:\"%s\")", errno, strerror(errno)); - else if(perr==3 && ((int64_t)R_RAX)==-1) + else if(perr==3 && (S_RAX)==-1) snprintf(buff3, 64, " (errno=%d:\"%s\")", errno, strerror(errno)); if(cycle_log) -- cgit 1.4.1