Reduced testcase: typedef struct { unsigned short offset; unsigned short segment; } far_t;
extern __thread int vm86u[8]; int int33_hooked; int is_revectored(void); void log_printf(void);
far_t int33_unrevect(unsigned short gg) { far_t ret = {}; if (int33_hooked) return ret; if (is_revectored()) { log_printf(); __asm__ __volatile__("" : :"m" (vm86u[0])); } else { if (gg) log_printf(); } ret.segment = 0x0f000; ret.offset = 0xf847; return ret; }
Reduced testcase:
typedef struct {
unsigned short offset;
unsigned short segment;
} far_t;
extern __thread int vm86u[8]; void);
int int33_hooked;
int is_revectored(
void log_printf(void);
far_t int33_unrevect( unsigned short gg)
log_printf( );
log_printf( );
{
far_t ret = {};
if (int33_hooked)
return ret;
if (is_revectored())
{
__asm__ __volatile__("" : :"m" (vm86u[0]));
}
else
{
if (gg)
}
ret.segment = 0x0f000;
ret.offset = 0xf847;
return ret;
}