You last visited: Today at 20:28
Advertisement
[WIP] Get SRO Source Code - by re-writing it
Discussion on [WIP] Get SRO Source Code - by re-writing it within the SRO Coding Corner forum part of the Silkroad Online category.
07/14/2022, 03:40
#316
elite*gold: 0
Join Date: May 2020
Posts: 70
Received Thanks: 6
Quote:
Originally Posted by
painmaker_
for center text
rank_slot->TB_Func_5(1);
rank_slot->TB_Func_6(1);
But they center by default
i want to make float left/right ^^
12/01/2022, 15:35
#317
elite*gold: 0
Join Date: Feb 2013
Posts: 79
Received Thanks: 10
i re-wrote CIFWnd::OnCloseWnd
but HOOK_ORIGINAL_MEMBER seems to crash
replaceAddr() too
any suggestions?
12/02/2022, 20:16
#318
elite*gold: 0
Join Date: Dec 2021
Posts: 20
Received Thanks: 31
Quote:
Originally Posted by
ZeonNETWORK
i re-wrote CIFWnd::OnCloseWnd
but HOOK_ORIGINAL_MEMBER seems to crash
replaceAddr() too
any suggestions?
ye replaceAddr, ucant use HOOK_ORIGINAL_MEMBER on vft fun
better use replaceAddr and hook it with CIFWnd vft
12/03/2022, 01:10
#319
elite*gold: 0
Join Date: Feb 2013
Posts: 79
Received Thanks: 10
Quote:
Originally Posted by
kyuubi09
ye replaceAddr, ucant use HOOK_ORIGINAL_MEMBER on vft fun
better use replaceAddr and hook it with CIFWnd vft
actually i already tried but doesn't override the original function
here's what i tried
Code:
//hook CloseWnd
vftableHook(0x00d9e734, 43, addr_from_this(&CIFWnd::OnCloseWnd));
//placeHook(0x00652c00, addr_from_this(&CIFWnd::OnCloseWnd));
//replaceAddr(0x00d9e7e0, addr_from_this(&CIFWnd::OnCloseWnd));
12/04/2022, 19:27
#320
elite*gold: 0
Join Date: Dec 2021
Posts: 16
Received Thanks: 5
You must use different name of the original function (Example : OnCloseWnd_IMPL)
Quote:
Originally Posted by
ZeonNETWORK
actually i already tried but doesn't override the original function
here's what i tried
Code:
//hook CloseWnd
vftableHook(0x00d9e734, 43, addr_from_this(&CIFWnd::OnCloseWnd));
//placeHook(0x00652c00, addr_from_this(&CIFWnd::OnCloseWnd));
//replaceAddr(0x00d9e7e0, addr_from_this(&CIFWnd::OnCloseWnd));
12/07/2022, 11:52
#321
elite*gold: 0
Join Date: Dec 2021
Posts: 20
Received Thanks: 31
Quote:
Originally Posted by
ZeonNETWORK
actually i already tried but doesn't override the original function
here's what i tried
Code:
//hook CloseWnd
vftableHook(0x00d9e734, 43, addr_from_this(&CIFWnd::OnCloseWnd));
//placeHook(0x00652c00, addr_from_this(&CIFWnd::OnCloseWnd));
//replaceAddr(0x00d9e7e0, addr_from_this(&CIFWnd::OnCloseWnd));
Also yeah ucant hook an func thats getting override as UnknownW said
12/09/2022, 12:37
#322
elite*gold: 0
Join Date: Feb 2013
Posts: 79
Received Thanks: 10
Quote:
Originally Posted by
UnkownW
You must use different name of the original function (Example : OnCloseWnd_IMPL)
Quote:
Originally Posted by
kyuubi09
Also yeah ucant hook an func thats getting override as UnknownW said
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
}
12/10/2022, 02:46
#323
elite*gold: 0
Join Date: Dec 2021
Posts: 16
Received Thanks: 5
Quote:
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
}
Are you sure about the address and the place of function the Vftable (43)?
12/10/2022, 14:44
#324
elite*gold: 0
Join Date: Feb 2013
Posts: 79
Received Thanks: 10
Quote:
Originally Posted by
UnkownW
Are you sure about the address and the place of function the Vftable (43)?
well, including those 2 weird locations the offset should be at 43 of the vftbl!
12/12/2022, 04:34
#325
elite*gold: 0
Join Date: Feb 2013
Posts: 79
Received Thanks: 10
I truly like the way Joymax when they want to abandon objects
thanks to their laziness we could get such things back
I hope flo still around, i even lost my old discord where we used to catch such things out
missed ya buddy
AcademyChatWindow
Image galleries require a modern browser with JavaScript enabled. Please make sure that your browser is up to date and/or enable JavaScript to view this gallery.
01/01/2023, 22:08
#326
elite*gold: 0
Join Date: Feb 2013
Posts: 79
Received Thanks: 10
hey reverse engineering mates
on my way down of reversing
CIFUnderbar (which was deprecated but not entirly removed from the vsro188 just become an instance to CNIFUnderMenuBar )
I've found some interesting informations that should be 90% correct
CGWndBase::IsVisible() should be IsShowGWnd() confirmed @ SpecialtyDeal::sub_74F960
CGInterface::ToggleMainPopup() should belong to CIFUnderbar according to CIFUnderbar__MESSAGE_MAP, i call it OnMenuBtnClick()
CIFUnderBar::Func_28: args are (CIFSlotWithHelp *a1, CIFSlotWithHelp *a2, int a3) mean at the derived classes should be the same type too
CGame::GetHWnd @ BA3CA0 & CGame::GetMainInstance @ BA3CB0: Should belong to CGFXMainFrame
CObjChild should contains 3 static members [CObjChild::m_pGInterface (g_pCGInterface), CObjChild::m_pGfxEttManager (g_pGfxEttManager ), CObjChild::m_pGfxDevice ]
g_pCICPlayer is g_pMyPlayerObj confirmed by asserts in 2 functions
feel free to correct them while i gather more informations
many thanks to @
my reverse engineering leader and @
(his src snippets were so much helpful in labels and data types guessing, wish he shares more in the future)
my last achievements on reversing CIFSlotWithHelp
had tough times on reversing
Sort of item though, so i used the old school way of sorting depending on TID3 & TID4
Old School Item Tooltip
Image galleries require a modern browser with JavaScript enabled. Please make sure that your browser is up to date and/or enable JavaScript to view this gallery.
01/09/2023, 18:28
#327
elite*gold: 0
Join Date: Nov 2008
Posts: 52
Received Thanks: 1
I get the following error in quick start
(CPSQuickStart) MSGID:0xA288
Is anyone else having this problem?
06/01/2024, 16:44
#328
elite*gold: 0
Join Date: Aug 2014
Posts: 2
Received Thanks: 0
Hello everyone. I built the following code using VS2005. It works well. However, when pressing F5, F6, F7 multiple times, the game may disconnect (it may crash). I think it's due to some issue with wstring. Can you let me know how to fix it? Thank you!
Quote:
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
class CGInterface {
public:
void ShowPinkNotify(std::wstring msg);
void ShowBlueNotify(std::wstring msg);
void ShowGreenNotify(std::wstring msg);
void ShowPinkNotify(std::wstring* msg);
void ShowBlueNotify(std::wstring* msg);
void ShowGreenNotify(std::wstring* msg);
static CGInterface* Get();
};
void CGInterface::ShowPinkNotify(std::wstring msg){
reinterpret_cast<void(__thiscall *)(CGInterface*, std::wstring*)>(0x00777BF0)(this, &msg);
}
void CGInterface::ShowBlueNotify(std::wstring msg){
reinterpret_cast<void(__thiscall *)(CGInterface*, std::wstring*)>(0x0077B580)(this, &msg);
}
void CGInterface::ShowGreenNotify(std::wstring msg){
reinterpret_cast<void(__thiscall *)(CGInterface*, std::wstring*)>(0x0077B5B0)(this, &msg);
}
void CGInterface::ShowPinkNotify(std::wstring* msg){
reinterpret_cast<void(__thiscall *)(CGInterface*, std::wstring*)>(0x00777BF0)(this, msg);
}
void CGInterface::ShowBlueNotify(std::wstring* msg){
reinterpret_cast<void(__thiscall *)(CGInterface*, std::wstring*)>(0x0077B580)(this, msg);
}
void CGInterface::ShowGreenNotify(std::wstring* msg){
reinterpret_cast<void(__thiscall *)(CGInterface*, std::wstring*)>(0x0077B5B0)(this, msg);
}
CGInterface* CGInterface::Get(void){
return *reinterpret_cast<CGInterface**>(0x0110F80C);
}
DWORD WINAPI Chuong_trinh(LPVOID param)
{
CGInterface* g_interface;
do {
g_interface = CGInterface::Get();
Sleep(1000);
} while (!g_interface);
while (true)
{
if (GetAsyncKeyState(VK_F5) && g_interface) {
g_interface->ShowPinkNotify(L"Hello world");
}
if (GetAsyncKeyState(VK_F6)&& g_interface) {
WCHAR mymsg[MAX_PATH];
wcscpy(mymsg, L"Hello world");
wstring msg = mymsg;
g_interface->ShowBlueNotify(msg);
}
if (GetAsyncKeyState(VK_F7)&& g_interface) {
wstring msg(L"Hello world");
g_interface->ShowGreenNotify(msg);
}
Sleep(1000);
}
}
__declspec(dllexport) BOOL __stdcall DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
// DisableThreadLibraryCalls(hModule);
CreateThread(NULL, 0, Chuong_trinh, hModule, 0, NULL);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
06/06/2024, 17:56
#329
elite*gold: 0
Join Date: Aug 2013
Posts: 1,532
Received Thanks: 835
Quote:
Originally Posted by
ZeonNETWORK
hey reverse engineering mates
on my way down of reversing
CIFUnderbar (which was deprecated but not entirly removed from the vsro188 just become an instance to CNIFUnderMenuBar )
I've found some interesting informations that should be 90% correct
CGWndBase::IsVisible() should be IsShowGWnd() confirmed @ SpecialtyDeal::sub_74F960
CGInterface::ToggleMainPopup() should belong to CIFUnderbar according to CIFUnderbar__MESSAGE_MAP, i call it OnMenuBtnClick()
CIFUnderBar::Func_28: args are (CIFSlotWithHelp *a1, CIFSlotWithHelp *a2, int a3) mean at the derived classes should be the same type too
CGame::GetHWnd @ BA3CA0 & CGame::GetMainInstance @ BA3CB0: Should belong to CGFXMainFrame
CObjChild should contains 3 static members [CObjChild::m_pGInterface (g_pCGInterface), CObjChild::m_pGfxEttManager (g_pGfxEttManager ), CObjChild::m_pGfxDevice ]
g_pCICPlayer is g_pMyPlayerObj confirmed by asserts in 2 functions
feel free to correct them while i gather more informations
many thanks to @
my reverse engineering leader and @
(his src snippets were so much helpful in labels and data types guessing, wish he shares more in the future)
my last achievements on reversing CIFSlotWithHelp
had tough times on reversing
Sort of item though, so i used the old school way of sorting depending on TID3 & TID4
Old School Item Tooltip
Image galleries require a modern browser with JavaScript enabled. Please make sure that your browser is up to date and/or enable JavaScript to view this gallery.
Can you please share how you implemented the old lamps?
06/15/2024, 21:23
#330
elite*gold: 53
Join Date: Jun 2024
Posts: 12
Received Thanks: 11
This opened the way for many who wanted to improve themselves; Floria took a step on this path.
Similar Threads
[Source] Fix the old exp bar - by writing code!
05/17/2020 - SRO PServer Guides & Releases - 18 Replies
Hello beloved, dead community,
its time for another release. Its more of a proof of concept and I hope it might inspire people to continue working on it. You don't need the source to accomplish cool things. Just write your own source.
http://i.epvpimg.com/d7hJbab.png
Ye, its super ugly looking. I choose to be a coder, not a designer. I'd be happy, if someone supplies me a proper version of the 2dt and ddj files so I can update this embarrassing screenshot.
Anyway. It allows you to...
[Release/WIP]EP6 Source code
04/15/2018 - Shaiya PServer Guides & Releases - 33 Replies
Hi guys,
First of all, I want to say that this release is not recommended for public servers yet. Shortly ago I changed my server to ep6 using shen1l's pet.dll, the server crashed every day, after checking the dump files I discovered that the problem was in pet.dll, but without the source code it would be harder to find the cause of the problem. So I decided to start a project and release the source code for everyone, so that everyone can solve their problems more easily, and also so that...
[C++ Source] My Free Farm Bot [WIP]
06/28/2011 - Browsergames - 0 Replies
I decided to release this on here as i have no more use for it and no intention to continue the project.
I am releasing 2 projects: One basic library for mff called libmff(although it is not really a library) there is an example on how to use it in the package.
And a helper with a fancy gui.
Note that there is almost no error checking on the helper and that it crashes if you for example forget to select a product.
You need libcurl and boost for both and GWEN(the gui toolkit by garry) for...
All times are GMT +1. The time now is 20:29 .