From b69f9b953637a8e3246a449e15b1a2388d204cb1 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 29 Mar 2021 20:28:50 +0200 Subject: Added wrapped syslog and __syslog_chk --- src/wrapped/generated/functions_list.txt | 1 + src/wrapped/generated/wrapper.c | 2 ++ src/wrapped/generated/wrapper.h | 1 + src/wrapped/wrappedlibc.c | 16 ++++++++++++++++ src/wrapped/wrappedlibc_private.h | 4 ++-- 5 files changed, 22 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 800b6dca..4f4e1052 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -544,6 +544,7 @@ #() pFpppL #() pFpppp #() pFSppi +#() vFEiipV #() vFEpuup #() vFEpLLp #() vFEpppp diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 57990bce..a1247ac6 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -577,6 +577,7 @@ typedef void* (*pFpppu_t)(void*, void*, void*, uint32_t); typedef void* (*pFpppL_t)(void*, void*, void*, uintptr_t); typedef void* (*pFpppp_t)(void*, void*, void*, void*); typedef void* (*pFSppi_t)(void*, void*, void*, int32_t); +typedef void (*vFEiipV_t)(x64emu_t*, int32_t, int32_t, void*, void*); typedef void (*vFEpuup_t)(x64emu_t*, void*, uint32_t, uint32_t, void*); typedef void (*vFEpLLp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, void*); typedef void (*vFEpppp_t)(x64emu_t*, void*, void*, void*, void*); @@ -1668,6 +1669,7 @@ void pFpppu(x64emu_t *emu, uintptr_t fcn) { pFpppu_t fn = (pFpppu_t)fcn; R_RAX=( void pFpppL(x64emu_t *emu, uintptr_t fcn) { pFpppL_t fn = (pFpppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); } void pFpppp(x64emu_t *emu, uintptr_t fcn) { pFpppp_t fn = (pFpppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); } void pFSppi(x64emu_t *emu, uintptr_t fcn) { pFSppi_t fn = (pFSppi_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); } +void vFEiipV(x64emu_t *emu, uintptr_t fcn) { vFEiipV_t fn = (vFEiipV_t)fcn; fn(emu, (int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); } void vFEpuup(x64emu_t *emu, uintptr_t fcn) { vFEpuup_t fn = (vFEpuup_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); } void vFEpLLp(x64emu_t *emu, uintptr_t fcn) { vFEpLLp_t fn = (vFEpLLp_t)fcn; fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); } void vFEpppp(x64emu_t *emu, uintptr_t fcn) { vFEpppp_t fn = (vFEpppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 6dc17259..e04ce7cf 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -574,6 +574,7 @@ void pFpppu(x64emu_t *emu, uintptr_t fnc); void pFpppL(x64emu_t *emu, uintptr_t fnc); void pFpppp(x64emu_t *emu, uintptr_t fnc); void pFSppi(x64emu_t *emu, uintptr_t fnc); +void vFEiipV(x64emu_t *emu, uintptr_t fnc); void vFEpuup(x64emu_t *emu, uintptr_t fnc); void vFEpLLp(x64emu_t *emu, uintptr_t fnc); void vFEpppp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index ae75aa9f..451d9b6d 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -34,6 +34,9 @@ #include #include #include +#include +#undef LOG_INFO +#undef LOG_DEBUG #include "wrappedlibs.h" @@ -817,6 +820,19 @@ EXPORT void my_vwarn(x64emu_t* emu, void* fmt, void* b) { #endif } #endif +EXPORT void my_syslog(x64emu_t* emu, int priority, const char* fmt, uint64_t* b) +{ + myStackAlign(emu, fmt, b, emu->scratch, R_EAX, 2); + PREPARE_VALIST; + return vsyslog(priority, fmt, VARARGS); +} +EXPORT void my___syslog_chk(x64emu_t* emu, int priority, int flags, const char* fmt, uint64_t* b) +{ + myStackAlign(emu, fmt, b, emu->scratch, R_EAX, 3); + PREPARE_VALIST; + return vsyslog(priority, fmt, VARARGS); +} + EXPORT int my___swprintf_chk(x64emu_t* emu, void* s, size_t n, int32_t flag, size_t slen, void* fmt, uint64_t* b) { myStackAlignW(emu, (const char*)fmt, b, emu->scratch, R_EAX, 5); diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index d4e580f8..f09c84e8 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -1924,8 +1924,8 @@ GOW(sysconf, lFi) DATA(_sys_errlist, sizeof(void*)) DATA(sys_errlist, sizeof(void*)) //GOW(sysinfo, -//GO(syslog, -//GO(__syslog_chk, +GOM(syslog, vFEipV) +GOM(__syslog_chk, vFEiipV) //DATA(sys_sigabbrev, //DATA(sys_sigabbrev, //DATA(_sys_siglist, -- cgit 1.4.1