diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64int3.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c index be3679cc..5147fb15 100755 --- a/src/emu/x64int3.c +++ b/src/emu/x64int3.c @@ -206,13 +206,17 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr) pu64 = (uint64_t*)R_RDI; post = 3; snprintf(buff, 256, "%04d|%p: Calling %s(%p, %zu, %d, %zu, \"%s\" (,%p))", tid, *(void**)(R_RSP), s, (void*)R_RDI, R_RSI, R_EDX, R_RCX, (tmp)?tmp:"(nil)", (void*)(R_R9)); + } else if (strstr(s, "__vfprintf_chk")) { + tmp = (char*)(R_RDX); + pu64 = (uint64_t*)R_RDI; + snprintf(buff, 256, "%04d|%p: Calling %s(%p, %d, \"%s\", ... )", tid, *(void**)(R_RSP), s, (void*)R_RDI, R_ESI, (tmp)?tmp:"(nil)"); } else if (strstr(s, "snprintf")==s) { tmp = (char*)(R_RDX); pu64 = (uint64_t*)R_RDI; post = 3; snprintf(buff, 256, "%04d|%p: Calling %s(%p, %zu, \"%s\" (,%p))", tid, *(void**)(R_RSP), s, (void*)R_RDI, R_RSI, (tmp)?tmp:"(nil)", (void*)(R_RCX)); - } else if (strstr(s, "vfprintf")==s) { - tmp = (char*)(R_RSI); + } else if (!strcmp(s, "vfprintf")) { + tmp = (char*)((R_RSI>2)?R_RSI:R_RDX); snprintf(buff, 256, "%04d|%p: Calling %s(%p, \"%s\", ...)", tid, *(void**)(R_RSP), s, (void*)R_RDI, (tmp)?tmp:"(nil)"); } else if (!strcmp(s, "getcwd")) { post = 2; |