Originally Posted by ZeonNETWORK
Okay here's what i did according to what you've suggested
Code:
bool CIFWnd::OnCloseWnd() {
return reinterpret_cast<bool(__thiscall *)(CIFWnd *)>(0x00652c00)(this);
}
Code:
bool CIFWnd::OnCloseWndImpl()
{
if ( IsSame(GFX_RUNTIME_CLASS( CIFItemMall ) ))
{
g_pCGInterface->RenderItemMall(0);
}
return CIFWnd::OnCloseWnd();
}
Code:
//Util.cpp
vftableHook(0x00d9e734, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
but that didn't work either i even used vftableHook on all possible classes that inherit CIFwnd and doesn't override OnCloseWnd like this
/*
vftableHook(0x00D8226C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D872CC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D87474, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D883EC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D88FAC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D893E4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D89524, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D898F4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D89A1C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D89B8C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D89CFC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D8A05C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D8A2F4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D8A59C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D8A774, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D8A884, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D8AB9C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9A324, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9A44C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9A59C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9A6D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9A804, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9A964, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9AA9C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9ABC4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9ACFC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9AE3C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9AF64, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9B08C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9B9CC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9D88C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9D9EC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9DB2C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9DC54, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9DD7C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9DEAC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9DFE4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E0FC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E224, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E37C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E4B4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E5EC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E734, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9E9AC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9EAD4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9EC0C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9ED6C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9EEA4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F0EC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F234, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F3B4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F56C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F694, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F7DC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9F954, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9FA94, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9FBBC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00D9FFC4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA0464, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA07EC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA091C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA0A84, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA0BBC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA0F74, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA18E4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA4C5C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA4DA4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA4F34, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA533C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA54C4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA569C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA57DC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA5B44, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA5D74, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA5E94, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA606C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA61FC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA64F4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA6654, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA6AD4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA6CDC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA6EDC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA7554, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA775C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA7A6C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA86A4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA880C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA8C84, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA8EE4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA91D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA93BC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA9674, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA99BC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA9C84, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DA9ECC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAA2CC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAA5EC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAA72C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAA8A4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAAC44, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAB16C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAB2CC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAB41C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAB8E4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DABA2C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DABB7C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DABCE4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DABF34, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAC0BC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAC2BC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAC4FC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAC74C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAEB54, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAF204, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAF334, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAF5AC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAF82C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAF964, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAFAD4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DAFF04, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB0234, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB038C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB04E4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB06DC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB0B4C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB0C94, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB0DEC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB0F44, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB121C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB1364, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB14AC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB1644, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB1764, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB1D2C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB1F64, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB208C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB2214, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB233C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB2494, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB289C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB2CAC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB2F3C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB311C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB32B4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB3424, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB3564, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB4184, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB42D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB4634, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB528C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB5614, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB632C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB675C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB6BE4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB738C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB777C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB792C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB7C64, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB81FC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB831C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB87D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB8944, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB8B24, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB8C6C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DB95A4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBA954, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBABD4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBACF4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBAE3C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBB14C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBB41C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBB5DC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBB754, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBBA44, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBCB04, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBCC5C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBD19C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBD34C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBD4CC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DBDACC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC861C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC9174, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC938C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC9614, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC9744, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC988C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC9B74, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DC9E6C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCA1E4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCA3C4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCA584, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCA774, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCAA4C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCAB8C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCAD4C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCAF84, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCB224, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCB3D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCB584, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCB71C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCBB3C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCBC8C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCBEB4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCC25C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCC774, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCC8D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCCBF4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCCE1C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCD09C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCD224, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCDCBC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCE6D4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCE9A4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCEAEC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCEFC4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCF2C4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DCF59C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD0564, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD068C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD0A14, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD0E34, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD11BC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1304, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD143C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1554, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1804, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1924, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1A6C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1BBC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1CDC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1DFC, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD1F24, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD204C, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD2174, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD2294, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
vftableHook(0x00DD23B4, 43, addr_from_this(&CIFWnd::OnCloseWndImpl));
*/
so from what i've experienced so far, hooking a virtual method at the parent class is impossible yet!
anyway here's the function body if someone interested
Code:
// CIFWnd::OnCloseWnd(void) .text 00652C00 000000CF 00000004 00000000 R . . . . . .
//HOOK_ORIGINAL_MEMBER(0x00652C00, &CIFWnd::OnCloseWnd);
bool CIFWnd::OnCloseWnd() {
#if 0
return reinterpret_cast<bool(__thiscall *)(CIFWnd *)>(0x00652c00)(this);
#else
if(IsKindOf( GFX_RUNTIME_CLASS( CIFStore ) ) && g_pCGInterface->sub_7992E0())
{
CGEffSoundBody::get()->PlaySoundA(L"snd_window_close");
g_pCGInterface->sub_79DBD0(0, 0);
return false;
}
else if (IsSame(GFX_RUNTIME_CLASS( CNIFEnchantWnd )))
{
g_pCGInterface->RenderEnchantWnd(0);
}
else if ( IsSame(GFX_RUNTIME_CLASS( CIFQuestInfo )))
{
g_pCGInterface->RenderQuestInfo(0);
}
else if ( IsSame(GFX_RUNTIME_CLASS( CIFNewItemMall ) ))
{
g_pCGInterface->RenderNewItemMall(0);
}
else
{
ShowGWnd(false);
GetParentControl()->SetFocus_MAYBE();
g_pCGInterface->FUN_0079a7e0(this);
}
return true;
#endif
}
|