[WRAPPER] Added wrapped libpcap with new wrapper helper (should help #2282)

This commit is contained in:
ptitSeb 2025-01-23 10:04:17 +01:00
parent 276191cdcf
commit b439817467
10 changed files with 176 additions and 0 deletions

View File

@ -674,6 +674,7 @@ set(WRAPPEDS
"${BOX64_ROOT}/src/wrapped/wrappedpangocairo.c"
"${BOX64_ROOT}/src/wrapped/wrappedpangoft2.c"
"${BOX64_ROOT}/src/wrapped/wrappedpam.c"
"${BOX64_ROOT}/src/wrapped/wrappedpcap.c"
"${BOX64_ROOT}/src/wrapped/wrappedplc4.c"
"${BOX64_ROOT}/src/wrapped/wrappedplds4.c"
"${BOX64_ROOT}/src/wrapped/wrappedpng16.c"

View File

@ -192,6 +192,7 @@ GO("libvulkan.so", vulkan)
GO("libgbm.so.1", gbm)
GO("libgomp.so.1", gomp)
GO("libcap.so.2", cap)
GO("libpcap.so.0.8", pcap)
GO("libkrb5.so.3", krb5)
GO("libgssapi_krb5.so.2", gssapikrb5)
GO("libgssapi.so.3", gssapi)

View File

@ -115,6 +115,7 @@
#() pFA
#() pFb
#() SFv
#() SFp
#() HFi
#() HFu
#() HFp
@ -363,7 +364,9 @@
#() pFpl
#() pFpL
#() pFpp
#() pFpS
#() pFSi
#() pFSp
#() pFbu
#() pFbp
#() SFip
@ -819,6 +822,7 @@
#() pFppA
#() pFpSp
#() pFpbi
#() pFSup
#() pFSpl
#() pFbuu
#() pFbup
@ -2187,6 +2191,7 @@
#() iFEppppp
#() iFiiiipp
#() iFiiiuwp
#() iFiippiu
#() iFiWiipi
#() iFiuuuup
#() iFiuuppp
@ -5530,6 +5535,7 @@ wrappedpangocairo:
wrappedpangoft2:
- pFp:
- pango_fc_font_lock_face
wrappedpcap:
wrappedplc4:
wrappedplds4:
wrappedpng16:

View File

@ -0,0 +1,8 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.5.0.24) *
*******************************************************************/
#ifndef __wrappedpcapDEFS_H_
#define __wrappedpcapDEFS_H_
#endif // __wrappedpcapDEFS_H_

View File

@ -0,0 +1,17 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.5.0.24) *
*******************************************************************/
#ifndef __wrappedpcapTYPES_H_
#define __wrappedpcapTYPES_H_
#ifndef LIBNAME
#error You should only #include this file inside a wrapped*.c file
#endif
#ifndef ADDED_FUNCTIONS
#define ADDED_FUNCTIONS()
#endif
#define SUPER() ADDED_FUNCTIONS()
#endif // __wrappedpcapTYPES_H_

View File

@ -0,0 +1,8 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.5.0.24) *
*******************************************************************/
#ifndef __wrappedpcapUNDEFS_H_
#define __wrappedpcapUNDEFS_H_
#endif // __wrappedpcapUNDEFS_H_

View File

@ -162,6 +162,7 @@ typedef void* (*pFS_t)(void*);
typedef void* (*pFA_t)(void*);
typedef void* (*pFb_t)(void*);
typedef void* (*SFv_t)(void);
typedef void* (*SFp_t)(void*);
typedef unsigned __int128 (*HFi_t)(int32_t);
typedef unsigned __int128 (*HFu_t)(uint32_t);
typedef unsigned __int128 (*HFp_t)(void*);
@ -400,7 +401,9 @@ typedef void* (*pFpd_t)(void*, double);
typedef void* (*pFpl_t)(void*, intptr_t);
typedef void* (*pFpL_t)(void*, uintptr_t);
typedef void* (*pFpp_t)(void*, void*);
typedef void* (*pFpS_t)(void*, void*);
typedef void* (*pFSi_t)(void*, int32_t);
typedef void* (*pFSp_t)(void*, void*);
typedef void* (*pFbu_t)(void*, uint32_t);
typedef void* (*pFbp_t)(void*, void*);
typedef void* (*SFip_t)(int32_t, void*);
@ -850,6 +853,7 @@ typedef void* (*pFppS_t)(void*, void*, void*);
typedef void* (*pFppA_t)(void*, void*, void*);
typedef void* (*pFpSp_t)(void*, void*, void*);
typedef void* (*pFpbi_t)(void*, void*, int32_t);
typedef void* (*pFSup_t)(void*, uint32_t, void*);
typedef void* (*pFSpl_t)(void*, void*, intptr_t);
typedef void* (*pFbuu_t)(void*, uint32_t, uint32_t);
typedef void* (*pFbup_t)(void*, uint32_t, void*);
@ -2216,6 +2220,7 @@ typedef int32_t (*iFEppppi_t)(x64emu_t*, void*, void*, void*, void*, int32_t);
typedef int32_t (*iFEppppp_t)(x64emu_t*, void*, void*, void*, void*, void*);
typedef int32_t (*iFiiiipp_t)(int32_t, int32_t, int32_t, int32_t, void*, void*);
typedef int32_t (*iFiiiuwp_t)(int32_t, int32_t, int32_t, uint32_t, int16_t, void*);
typedef int32_t (*iFiippiu_t)(int32_t, int32_t, void*, void*, int32_t, uint32_t);
typedef int32_t (*iFiWiipi_t)(int32_t, uint16_t, int32_t, int32_t, void*, int32_t);
typedef int32_t (*iFiuuuup_t)(int32_t, uint32_t, uint32_t, uint32_t, uint32_t, void*);
typedef int32_t (*iFiuuppp_t)(int32_t, uint32_t, uint32_t, void*, void*, void*);
@ -3609,6 +3614,7 @@ void pFS(x64emu_t *emu, uintptr_t fcn) { pFS_t fn = (pFS_t)fcn; R_RAX=(uintptr_t
void pFA(x64emu_t *emu, uintptr_t fcn) { pFA_t fn = (pFA_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
void pFb(x64emu_t *emu, uintptr_t fcn) { pFb_t fn = (pFb_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
void SFv(x64emu_t *emu, uintptr_t fcn) { SFv_t fn = (SFv_t)fcn; R_RAX=(uintptr_t)io_convert_back(fn()); }
void SFp(x64emu_t *emu, uintptr_t fcn) { SFp_t fn = (SFp_t)fcn; R_RAX=(uintptr_t)io_convert_back(fn((void*)R_RDI)); }
void HFi(x64emu_t *emu, uintptr_t fcn) { HFi_t fn = (HFi_t)fcn; unsigned __int128 u128 = fn((int32_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
void HFu(x64emu_t *emu, uintptr_t fcn) { HFu_t fn = (HFu_t)fcn; unsigned __int128 u128 = fn((uint32_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
void HFp(x64emu_t *emu, uintptr_t fcn) { HFp_t fn = (HFp_t)fcn; unsigned __int128 u128 = fn((void*)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
@ -3847,7 +3853,9 @@ void pFpd(x64emu_t *emu, uintptr_t fcn) { pFpd_t fn = (pFpd_t)fcn; R_RAX=(uintpt
void pFpl(x64emu_t *emu, uintptr_t fcn) { pFpl_t fn = (pFpl_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI); }
void pFpL(x64emu_t *emu, uintptr_t fcn) { pFpL_t fn = (pFpL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI); }
void pFpp(x64emu_t *emu, uintptr_t fcn) { pFpp_t fn = (pFpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI); }
void pFpS(x64emu_t *emu, uintptr_t fcn) { pFpS_t fn = (pFpS_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, io_convert((void*)R_RSI)); }
void pFSi(x64emu_t *emu, uintptr_t fcn) { pFSi_t fn = (pFSi_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (int32_t)R_RSI); }
void pFSp(x64emu_t *emu, uintptr_t fcn) { pFSp_t fn = (pFSp_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (void*)R_RSI); }
void pFbu(x64emu_t *emu, uintptr_t fcn) { pFbu_t fn = (pFbu_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb, (uint32_t)R_RSI); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
void pFbp(x64emu_t *emu, uintptr_t fcn) { pFbp_t fn = (pFbp_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb, (void*)R_RSI); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
void SFip(x64emu_t *emu, uintptr_t fcn) { SFip_t fn = (SFip_t)fcn; R_RAX=(uintptr_t)io_convert_back(fn((int32_t)R_RDI, (void*)R_RSI)); }
@ -4297,6 +4305,7 @@ void pFppS(x64emu_t *emu, uintptr_t fcn) { pFppS_t fn = (pFppS_t)fcn; R_RAX=(uin
void pFppA(x64emu_t *emu, uintptr_t fcn) { pFppA_t fn = (pFppA_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
void pFpSp(x64emu_t *emu, uintptr_t fcn) { pFpSp_t fn = (pFpSp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, io_convert((void*)R_RSI), (void*)R_RDX); }
void pFpbi(x64emu_t *emu, uintptr_t fcn) { pFpbi_t fn = (pFpbi_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RSI); R_RAX=(uintptr_t)fn((void*)R_RDI, aligned_xcb, (int32_t)R_RDX); unalign_xcb_connection(aligned_xcb, (void*)R_RSI); }
void pFSup(x64emu_t *emu, uintptr_t fcn) { pFSup_t fn = (pFSup_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (uint32_t)R_RSI, (void*)R_RDX); }
void pFSpl(x64emu_t *emu, uintptr_t fcn) { pFSpl_t fn = (pFSpl_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (void*)R_RSI, (intptr_t)R_RDX); }
void pFbuu(x64emu_t *emu, uintptr_t fcn) { pFbuu_t fn = (pFbuu_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb, (uint32_t)R_RSI, (uint32_t)R_RDX); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
void pFbup(x64emu_t *emu, uintptr_t fcn) { pFbup_t fn = (pFbup_t)fcn; void *aligned_xcb = align_xcb_connection((void*)R_RDI); R_RAX=(uintptr_t)fn(aligned_xcb, (uint32_t)R_RSI, (void*)R_RDX); unalign_xcb_connection(aligned_xcb, (void*)R_RDI); }
@ -5663,6 +5672,7 @@ void iFEppppi(x64emu_t *emu, uintptr_t fcn) { iFEppppi_t fn = (iFEppppi_t)fcn; R
void iFEppppp(x64emu_t *emu, uintptr_t fcn) { iFEppppp_t fn = (iFEppppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFiiiipp(x64emu_t *emu, uintptr_t fcn) { iFiiiipp_t fn = (iFiiiipp_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFiiiuwp(x64emu_t *emu, uintptr_t fcn) { iFiiiuwp_t fn = (iFiiiuwp_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int16_t)R_R8, (void*)R_R9); }
void iFiippiu(x64emu_t *emu, uintptr_t fcn) { iFiippiu_t fn = (iFiippiu_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (uint32_t)R_R9); }
void iFiWiipi(x64emu_t *emu, uintptr_t fcn) { iFiWiipi_t fn = (iFiWiipi_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (uint16_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9); }
void iFiuuuup(x64emu_t *emu, uintptr_t fcn) { iFiuuuup_t fn = (iFiuuuup_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
void iFiuuppp(x64emu_t *emu, uintptr_t fcn) { iFiuuppp_t fn = (iFiuuppp_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
@ -8702,6 +8712,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &cFppLppi) return 1;
if (fun == &iFiiiipp) return 1;
if (fun == &iFiiiuwp) return 1;
if (fun == &iFiippiu) return 1;
if (fun == &iFiWiipi) return 1;
if (fun == &iFiuuuup) return 1;
if (fun == &iFiuuppp) return 1;
@ -10716,6 +10727,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &cFppLppi) return 513;
if (fun == &iFiiiipp) return 241;
if (fun == &iFiiiuwp) return 497;
if (fun == &iFiippiu) return 817;
if (fun == &iFiWiipi) return 721;
if (fun == &iFiuuuup) return 497;
if (fun == &iFiuuppp) return 113;

View File

@ -152,6 +152,7 @@ void pFS(x64emu_t *emu, uintptr_t fnc);
void pFA(x64emu_t *emu, uintptr_t fnc);
void pFb(x64emu_t *emu, uintptr_t fnc);
void SFv(x64emu_t *emu, uintptr_t fnc);
void SFp(x64emu_t *emu, uintptr_t fnc);
void HFi(x64emu_t *emu, uintptr_t fnc);
void HFu(x64emu_t *emu, uintptr_t fnc);
void HFp(x64emu_t *emu, uintptr_t fnc);
@ -400,7 +401,9 @@ void pFpd(x64emu_t *emu, uintptr_t fnc);
void pFpl(x64emu_t *emu, uintptr_t fnc);
void pFpL(x64emu_t *emu, uintptr_t fnc);
void pFpp(x64emu_t *emu, uintptr_t fnc);
void pFpS(x64emu_t *emu, uintptr_t fnc);
void pFSi(x64emu_t *emu, uintptr_t fnc);
void pFSp(x64emu_t *emu, uintptr_t fnc);
void pFbu(x64emu_t *emu, uintptr_t fnc);
void pFbp(x64emu_t *emu, uintptr_t fnc);
void SFip(x64emu_t *emu, uintptr_t fnc);
@ -856,6 +859,7 @@ void pFppS(x64emu_t *emu, uintptr_t fnc);
void pFppA(x64emu_t *emu, uintptr_t fnc);
void pFpSp(x64emu_t *emu, uintptr_t fnc);
void pFpbi(x64emu_t *emu, uintptr_t fnc);
void pFSup(x64emu_t *emu, uintptr_t fnc);
void pFSpl(x64emu_t *emu, uintptr_t fnc);
void pFbuu(x64emu_t *emu, uintptr_t fnc);
void pFbup(x64emu_t *emu, uintptr_t fnc);
@ -2224,6 +2228,7 @@ void iFEppppi(x64emu_t *emu, uintptr_t fnc);
void iFEppppp(x64emu_t *emu, uintptr_t fnc);
void iFiiiipp(x64emu_t *emu, uintptr_t fnc);
void iFiiiuwp(x64emu_t *emu, uintptr_t fnc);
void iFiippiu(x64emu_t *emu, uintptr_t fnc);
void iFiWiipi(x64emu_t *emu, uintptr_t fnc);
void iFiuuuup(x64emu_t *emu, uintptr_t fnc);
void iFiuuppp(x64emu_t *emu, uintptr_t fnc);

18
src/wrapped/wrappedpcap.c Normal file
View File

@ -0,0 +1,18 @@
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#include "wrappedlibs.h"
#include "wrapper.h"
#include "bridge.h"
#include "librarian/library_private.h"
#include "x64emu.h"
const char* pcapName = "libpcap.so.0.8";
#define LIBNAME pcap
#include "wrappedlib_init.h"

View File

@ -0,0 +1,100 @@
#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
#error Meh...
#endif
GO(bpf_dump, vFpi)
GO(bpf_filter, uFppuu)
GO(bpf_image, pFpi)
GO(bpf_validate, iFpi)
//DATA(eproto_db,
GO(pcap_activate, iFp)
GO(pcap_breakloop, vFp)
GO(pcap_bufsize, iFp)
GO(pcap_can_set_rfmon, iFp)
GO(pcap_close, vFp)
GO(pcap_compile, iFpppiu)
GO(pcap_compile_nopcap, iFiippiu)
GO(pcap_create, pFpp)
GO(pcap_datalink, iFp)
GO(pcap_datalink_ext, iFp)
GO(pcap_datalink_name_to_val, iFp)
GO(pcap_datalink_val_to_description, pFi)
GO(pcap_datalink_val_to_description_or_dlt, pFi)
GO(pcap_datalink_val_to_name, pFi)
//GOM(pcap_dispatch, iFEpipp)
GO(pcap_dump, vFppp)
GO(pcap_dump_close, vFp)
GO(pcap_dump_file, SFp)
GO(pcap_dump_flush, iFp)
GO(pcap_dump_fopen, pFpS)
GO(pcap_dump_ftell, lFp)
GO(pcap_dump_ftell64, IFp)
GO(pcap_dump_open, pFpp)
GO(pcap_dump_open_append, pFpp)
GO(pcap_ether_aton, pFp)
GO(pcap_ether_hostton, pFp)
GO(pcap_file, SFp)
GO(pcap_fileno, iFp)
GO(pcap_findalldevs, iFpp)
GO(pcap_fopen_offline, pFSp)
GO(pcap_fopen_offline_with_tstamp_precision, pFSup)
GO(pcap_freealldevs, vFp)
GO(pcap_freecode, vFp)
GO(pcap_free_datalinks, vFp)
GO(pcap_free_tstamp_types, vFp)
GO(pcap_geterr, pFp)
GO(pcap_getnonblock, iFpp)
GO(pcap_get_required_select_timeout, pFp)
GO(pcap_get_selectable_fd, iFp)
GO(pcap_get_tstamp_precision, iFp)
GO(pcap_init, iFup)
GO(pcap_inject, iFppL)
GO(pcap_is_swapped, iFp)
GO(pcap_lib_version, pFv)
GO(pcap_list_datalinks, iFpp)
GO(pcap_list_tstamp_types, iFpp)
GO(pcap_lookupdev, pFp)
GO(pcap_lookupnet, iFpppp)
//GOM(pcap_loop, iFEpipp)
GO(pcap_major_version, iFp)
GO(pcap_minor_version, iFp)
GO(pcap_nametoaddr, pFp)
GO(pcap_nametoaddrinfo, pFp)
GO(pcap_nametoeproto, iFp)
GO(pcap_nametollc, iFp)
GO(pcap_nametonetaddr, uFp)
GO(pcap_nametoport, iFppp)
GO(pcap_nametoportrange, iFpppp)
GO(pcap_nametoproto, iFp)
GO(pcap_next, pFpp)
GO(pcap_next_etherent, pFS)
GO(pcap_next_ex, iFppp)
GO(pcap_offline_filter, iFppp)
GO(pcap_open_dead, pFii)
GO(pcap_open_dead_with_tstamp_precision, pFiiu)
GO(pcap_open_live, pFpiiip)
GO(pcap_open_offline, pFpp)
GO(pcap_open_offline_with_tstamp_precision, pFpup)
GO(pcap_perror, vFpp)
GO(pcap_sendpacket, iFppi)
GO(pcap_set_buffer_size, iFpi)
GO(pcap_set_datalink, iFpi)
GO(pcap_setdirection, iFpu)
GO(pcap_setfilter, iFpp)
GO(pcap_set_immediate_mode, iFpi)
GO(pcap_setnonblock, iFpip)
GO(pcap_set_promisc, iFpi)
GO(pcap_set_protocol_linux, iFpi)
GO(pcap_set_rfmon, iFpi)
GO(pcap_set_snaplen, iFpi)
GO(pcap_set_timeout, iFpi)
GO(pcap_set_tstamp_precision, iFpi)
GO(pcap_set_tstamp_type, iFpi)
GO(pcap_snapshot, iFp)
GO(pcap_stats, iFpp)
GO(pcap_statustostr, pFi)
GO(pcap_strerror, pFi)
GO(pcap_tstamp_type_name_to_val, iFp)
GO(pcap_tstamp_type_val_to_description, pFi)
GO(pcap_tstamp_type_val_to_name, pFi)
//DATA(pcap_version,