Вопрос CNetworkGameClient

Начинающий
Статус
Оффлайн
Регистрация
27 Авг 2021
Сообщения
31
Реакции[?]
1
Поинты[?]
0
я получил CNetworkGameClient, через CNetworkClientService, как с CNetworkGameClient получить CGlobalVars?
 
Пользователь
Статус
Оффлайн
Регистрация
25 Мар 2021
Сообщения
161
Реакции[?]
70
Поинты[?]
27K
я получил CNetworkGameClient, через CNetworkClientService, как с CNetworkGameClient получить CGlobalVars?
Не сильно разбираюсь за доту, но в кс2 можно получить через виртуальную функцию.
Открой рекласс и посмотри vfptr класса, там можно сделать из него vtable поинтер, и там попробуй найти поинтер на глобл варс, а лучше просто найди поинтер где нибудь в другом месте.
 
Начинающий
Статус
Оффлайн
Регистрация
27 Авг 2021
Сообщения
31
Реакции[?]
1
Поинты[?]
0
Не сильно разбираюсь за доту, но в кс2 можно получить через виртуальную функцию.
Открой рекласс и посмотри vfptr класса, там можно сделать из него vtable поинтер, и там попробуй найти поинтер на глобл варс, а лучше просто найди поинтер где нибудь в другом месте.
не особо шарю за полный функционал рекласса, до этого как то дампом с дебагером обходился, можешь по подробнее?
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
можно сделать очень просто
у вальвов есть функция GlobalVarsWarningFunc которая высирает варнинг(именно в таком виде, с опечаткой gpGlocals там, ктото криво напечатал на клаве строку:) )
"gpGlocals->curtime() called while IsInSimulation() is false\n"
Код:
GlobalVarsWarningFunc:
$ ==>            | 40:53                      | push rbx                                                             
$+2              | 48:83EC 20                 | sub rsp,20                                                           
$+6              | 6548:8B0425 58000000       | mov rax,qword ptr gs:[58]                                           
$+F              | 8BD9                       | mov ebx,ecx                                                         
$+11             | 8B15 5988B403              | mov edx,dword ptr ds:[7FFF6383C2E0]                                 
$+17             | B9 40000000                | mov ecx,40
$+1C             | 48:8B14D0                  | mov rdx,qword ptr ds:[rax+rdx*8]
$+20             | 8B0411                     | mov eax,dword ptr ds:[rcx+rdx]                                       
$+23             | 3905 CFBA9C03              | cmp dword ptr ds:[7FFF636BF568],eax                                 
$+29             | 7F 3E                      | jg client.7FFF5FCF3AD9                                               
$+2B             | 803D C2BA9C03 00           | cmp byte ptr ds:[7FFF636BF564],0                                     
$+32             | 74 2F                      | je client.7FFF5FCF3AD3                                               
$+34             | 85DB                       | test ebx,ebx                                                         
$+36             | 74 18                      | je client.7FFF5FCF3AC0                                               
$+38             | 83FB 01                    | cmp ebx,1                                                           
$+3B             | 75 26                      | jne client.7FFF5FCF3AD3                                             
$+3D             | 48:8D0D D4C35702           | lea rcx,qword ptr ds:[7FFF6226FE88]             | 00007FFF6226FE88:"gpGlocals->curtime() called while IsInSimulation() is false\n"
$+44             | 48:83C4 20                 | add rsp,20                                                           
$+48             | 5B                         | pop rbx                                                             
$+49             | 48:FF25 30DA9901           | jmp qword ptr ds:[<&Warning>]                                       
$+50             | 48:8D0D 81C35702           | lea rcx,qword ptr ds:[7FFF6226FE48]             | 00007FFF6226FE48:"gpGlocals->rendertime() called while IsInSimulation() is true\n"
$+57             | 48:83C4 20                 | add rsp,20                                                           
$+5B             | 5B                         | pop rbx                                                             
$+5C             | 48:FF25 1DDA9901           | jmp qword ptr ds:[<&Warning>]                                       
$+63             | 48:83C4 20                 | add rsp,20                                                           
$+67             | 5B                         | pop rbx                                                             
$+68             | C3                         | ret                                                                 
$+69             | 48:8D0D 88BA9C03           | lea rcx,qword ptr ds:[7FFF636BF568]                                 
$+70             | E8 A7B68D01                | call client.7FFF615CF18C                                             
$+75             | 833D 7CBA9C03 FF           | cmp dword ptr ds:[7FFF636BF568],FFFFFFFF                             
$+7C             | 75 AD                      | jne client.7FFF5FCF3A9B                                             
$+7E             | FF15 BCDF9901              | call qword ptr ds:[<&CommandLine>]                                   
$+84             | 45:33C0                    | xor r8d,r8d                                                         
$+87             | 48:8BC8                    | mov rcx,rax                                                         
$+8A             | 48:8B10                    | mov rdx,qword ptr ds:[rax]
$+8D             | 4C:8B4A 30                 | mov r9,qword ptr ds:[rdx+30]                                         
$+91             | 48:8D15 28C35702           | lea rdx,qword ptr ds:[7FFF6226FE30]             | 00007FFF6226FE30:"-curtimewarnings"
$+98             | 41:FFD1                    | call r9                                                             
$+9B             | 85C0                       | test eax,eax                                                         
$+9D             | 48:8D0D 54BA9C03           | lea rcx,qword ptr ds:[7FFF636BF568]                                 
$+A4             | 0F9505 49BA9C03            | setne byte ptr ds:[7FFF636BF564]                                     
$+AB             | E8 0CB68D01                | call client.7FFF615CF12C                                             
$+B0             | E9 76FFFFFF                | jmp client.7FFF5FCF3A9B
на нее есть хреф в CSource2Client::SetGlobals, в нем есть хреф на gpGlobals(если что, указывает на CNetworkGameClient + 0x90)
Код:
$ ==>            | 48:8915 89774703           | mov qword ptr ds:[7FFF6321D580],rdx     | <--- gpGlobals; 7FFF6321D580 = CGlobalVars**
$+7              | 48:8D05 72DCF4FF           | lea rax,qword ptr ds:[7FFF5FCF3A70]     | <--- GlobalVarsWarningFunc
$+E              | 48:85D2                    | test rdx,rdx
$+11             | 75 1D                      | jne client.7FFF5FDA5E20
$+13             | 48:8D0D D6764703           | lea rcx,qword ptr ds:[7FFF6321D4E0]
$+1A             | C705 24774703 8988883C     | mov dword ptr ds:[7FFF6321D538],3C888889
$+24             | 48:890D 65774703           | mov qword ptr ds:[7FFF6321D580],rcx
$+2B             | 48:8941 28                 | mov qword ptr ds:[rcx+28],rax
$+2F             | C3                         | ret
$+30             | 48:8942 28                 | mov qword ptr ds:[rdx+28],rax
$+34             | C3                         | ret
+ конечно же есть сама CNetworkGameClientBase::GetGlobals(void)
Код:
__const:00000000004E4640 off_4E4640      dq offset __ZN22CNetworkGameClientBase4InitEv
__const:00000000004E4640                                         ; DATA XREF: CNetworkGameClientBase::CNetworkGameClientBase(void)+57↑o
__const:00000000004E4640                                         ; CNetworkGameClientBase::~CNetworkGameClientBase()+11↑o
__const:00000000004E4640                                         ; #STR: "/Users/buildbot/buildslave/source2_dota_rel_osx64/build/sr, "/Users/buildbot/buildslave/source2_dota_rel_osx64/build/sr, "80000"
__const:00000000004E4648                 dq offset __ZN22CNetworkGameClientBase20SetGameSpawnGroupMgrEP18IGameSpawnGroupMgr ; CNetworkGameClientBase::SetGameSpawnGroupMgr(IGameSpawnGroupMgr *)
__const:00000000004E4650                 dq offset __ZN22CNetworkGameClientBase6AddRefEv ; CNetworkGameClientBase::AddRef(void)
__const:00000000004E4658                 dq offset __ZN22CNetworkGameClientBase7ReleaseEv ; CNetworkGameClientBase::Release(void)
__const:00000000004E4660                 dq offset __ZN22CNetworkGameClientBase10GetGlobalsEv ; CNetworkGameClientBase::GetGlobals(void)
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
Сверху Снизу