From 555f4e132fbcb87a5ee5ccf6776aafba922223b2 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Fri, 2 Apr 2021 19:27:32 +0200 Subject: Added a few more libc wrapped function and fixed munmap wrapping --- src/wrapped/generated/functions_list.txt | 1 + src/wrapped/generated/wrapper.c | 2 ++ src/wrapped/generated/wrapper.h | 1 + src/wrapped/wrappedlibc_private.h | 10 +++++----- 4 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 43601059..599a9bca 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -53,6 +53,7 @@ #() pFv #() pFi #() pFu +#() pFl #() pFL #() pFp #() HFi diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 9447d075..9c525227 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -86,6 +86,7 @@ typedef void* (*pFE_t)(x64emu_t*); typedef void* (*pFv_t)(void); typedef void* (*pFi_t)(int32_t); typedef void* (*pFu_t)(uint32_t); +typedef void* (*pFl_t)(intptr_t); typedef void* (*pFL_t)(uintptr_t); typedef void* (*pFp_t)(void*); typedef unsigned __int128 (*HFi_t)(int32_t); @@ -1182,6 +1183,7 @@ void pFE(x64emu_t *emu, uintptr_t fcn) { pFE_t fn = (pFE_t)fcn; R_RAX=(uintptr_t void pFv(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_RAX=(uintptr_t)fn(); } void pFi(x64emu_t *emu, uintptr_t fcn) { pFi_t fn = (pFi_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI); } void pFu(x64emu_t *emu, uintptr_t fcn) { pFu_t fn = (pFu_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI); } +void pFl(x64emu_t *emu, uintptr_t fcn) { pFl_t fn = (pFl_t)fcn; R_RAX=(uintptr_t)fn((intptr_t)R_RDI); } void pFL(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI); } void pFp(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); } void HFi(x64emu_t *emu, uintptr_t fcn) { HFi_t fn = (HFi_t)fcn; unsigned __int128 u128 = fn((int64_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 2757063c..642f68a4 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -83,6 +83,7 @@ void pFE(x64emu_t *emu, uintptr_t fnc); void pFv(x64emu_t *emu, uintptr_t fnc); void pFi(x64emu_t *emu, uintptr_t fnc); void pFu(x64emu_t *emu, uintptr_t fnc); +void pFl(x64emu_t *emu, uintptr_t fnc); void pFL(x64emu_t *emu, uintptr_t fnc); void pFp(x64emu_t *emu, uintptr_t fnc); void HFi(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index a7707b3f..ea4edf32 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -1194,7 +1194,7 @@ GO(msync, iFpLi) //GO(munlock, //GO(munlockall, //GO(__munmap, -GOW(munmap, iFEpL) +GOM(munmap, iFEpL) //weak //GO(muntrace, GO(name_to_handle_at, iFipppi) GO(__nanosleep, iFpp) @@ -1547,8 +1547,8 @@ GOW(rmdir, iFp) //GO(ruserok, //GO(ruserok_af, //GO(ruserpass, -//GO(__sbrk, -//GOW(sbrk, +GO(__sbrk, pFl) +GOW(sbrk, pFl) //GOW(scalbn, //GOW(scalbnf, //GOW(scalbnl, @@ -1772,8 +1772,8 @@ GO(__strdup, pFp) GOW(strdup, pFp) GO(strerror, pFi) GO(strerror_l, pFip) -//GO(__strerror_r, -//GOW(strerror_r, +GO(__strerror_r, pFipL) +GOW(strerror_r, pFipL) //GO(strfmon, //GO(__strfmon_l, //GOW(strfmon_l, -- cgit 1.4.1