Skip to content

Commit 0171b36

Browse files
committed
Update CS:GO data (#462)
1 parent 9f38783 commit 0171b36

File tree

7 files changed

+35
-18
lines changed

7 files changed

+35
-18
lines changed

addons/source-python/data/source-python/entities/csgo/CCSPlayer.ini

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ srv_check = False
77
[[add_account]]
88
identifier_windows = 55 8B EC 83 E4 F8 81 EC 4C 01 00 00 53 56 57 8B F9 8B 07 8B 80
99
# identifier_linux = _ZN9CCSPlayer10AddAccountEibbPKc
10-
identifier_linux = 55 89 E5 57 56 53 81 EC 2A 01 00 00 8B 5D 08 0F B6 45 10
10+
identifier_linux = 55 89 E5 57 56 53 81 EC 2A 01 00 00 8B 45 10 8B 5D 08 89
1111
arguments = INT, BOOL, STRING
1212

1313
# Reference string: #Cannot_Carry_Anymore
1414
[[buy_internal]]
1515
identifier_windows = 55 8B EC 83 EC 24 53 56 57 6A 01
1616
# indentifier_linux = _ZN9CCSPlayer26HandleCommand_Buy_InternalEPKcib
17-
identifier_linux = 55 89 E5 83 EC 78 0F B6 55 14 89 75 F8
17+
identifier_linux = 55 89 E5 57 56 53 83 EC 54 8B 5D 08 6A 01 8B 7D 14
1818
arguments = INT, STRING, BOOL, BOOL
1919
return_type = INT
2020

@@ -27,13 +27,13 @@ srv_check = False
2727
[[_spawn]]
2828
identifier_windows = 55 8B EC 83 EC 0C 53 56 57 8B F9 8B 0D 2A 2A 2A 2A 8B 01
2929
# identifier_linux = _ZN9CCSPlayer12RoundRespawnEv
30-
identifier_linux = 55 89 E5 57 56 53 83 EC 3C A1 2A 2A 2A 2A 8B 5D 08 89 04 24
30+
identifier_linux = 55 89 E5 56 53 83 EC 1C 8B 5D 08 FF 35 2A 2A 2A 2A E8 AA 32 F8 FF
3131

3232
# Reference string: CCSPlayer::SwitchTeam( %d ) - invalid t
3333
[[switch_team]]
3434
identifier_windows = 55 8B EC 83 EC 10 53 56 8B 75 08 57 8B F9 85 F6
3535
# identifier_linux = _ZN9CCSPlayer10SwitchTeamEi
36-
identifier_linux = 55 89 E5 83 EC 68 89 75 F8 8B 75 0C 89 5D F4 8B 5D 08 89 7D FC 89 34 24 E8 2A 2A 2A 2A 85 C0
36+
identifier_linux = 55 89 E5 56 53 83 EC 2C 8B 5D 0C 8B 75 08 53 E8 0C 7E C7 FF
3737
arguments = INT
3838

3939

addons/source-python/data/source-python/entities/csgo/CSensorGrenadeProjectile.ini

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ srv_check = False
66
# CSensorGrenadeProjectile::Think_Arm
77
[[start_timer]]
88
identifier_windows = 56 8B F1 57 8B 86 D4 00 00 00 C1 E8 0C A8 01 74 2A E8 2A 2A 2A 2A F3 0F 10 86 80 01 00 00 F3 0F 10 96 7C 01 00 00 F3 0F 10 8E 84 01 00 00 F3 0F 59 D2 F3 0F 59 C0 F3 0F 59 C9 F3 0F 58 D0 F3 0F 58 D1 F3 0F 10 0D 2A 2A 2A 2A 0F 28 C2 F3 0F 51 C0 0F 2F C1 76 2A 8B 0D 2A 2A 2A 2A F3 0F 10 41 10 F3 0F 58 C1 0F 2E 05 2A 2A 2A 2A 9F F6 C4 44 7A 2A 83 CF FF EB 2A F3 0F 5E 41 20 F3 0F 58 05 2A 2A 2A 2A F3 0F 2C F8 39 BE A4 00 00 00 8D 96 A4 00 00 00 74 2A 8B 82 5C FF FF FF 8D 8A 5C FF FF FF 52 FF 90 D4 00 00 00 89 BE A4 00 00 00 83 FF FF 8B CE 0F 95 C0 0F B6 C0 50 E8 2A 2A 2A 2A 5F 5E C3
9-
identifier_linux = 55 89 E5 53 83 EC 34 8B 5D 08 F6 83 2A 00 00 00 10
9+
identifier_linux = 55 89 E5 53 83 EC 14 8B 5D 08 F6 83 DD 00 00 00 10 0F 85 B9 00 00 00 F3 0F 10 83 84
1010

1111
# CSensorGrenadeProjectile::SensorThink
1212
[[detonate]]
1313
identifier_windows = 55 8B EC 83 E4 F8 51 53 56 57 8B F1 E8 2A 2A 2A 2A 8B F8
14-
identifier_linux = 55 89 E5 57 56 53 83 EC 3C 8B 5D 08 89 1C 24 E8 2A 2A 2A 2A 85 C0
14+
identifier_linux = 55 89 E5 57 56 53 83 EC 28 8B 5D 08 53 E8 EE 49 95 FF 83 C4 10 85
1515

1616
# CSensorGrenadeProjectile::DoDetectWave
1717
[[do_detect_wave]]
1818
identifier_windows = 53 8B DC 83 EC 08 83 E4 F0 83 C4 04 55 8B 6B 04 89 6C 24 04 8B EC 81 EC 38 01 00 00 56 8B F1
19-
identifier_linux = 55 89 E5 57 56 53 81 EC BC 01 00 00 8B 55 08 89 14 24
19+
identifier_linux = 55 89 E5 57 56 53 81 EC 68 01 00 00 FF 75 08 E8 4C 58 95 FF
2020

2121

2222
[instance_attribute]

addons/source-python/data/source-python/entities/csgo/CSmokeGrenadeProjectile.ini

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ srv_check = False
66
# CSmokeGrenadeProjectile::SmokeDetonate
77
[[detonate]]
88
identifier_windows = 55 8B EC 83 EC 18 56 8B F1 8B 0D 2A 2A 2A 2A 57
9-
identifier_linux = 55 89 E5 57 56 53 83 EC 5C 8B 75 08 C7 44 24 08 00 00 26 43
9+
identifier_linux = 55 89 E5 57 56 53 83 EC 50 8B 5D 08 68 00 00 26 43 53 FF 35
1010

1111

1212
[property]

addons/source-python/data/source-python/entity_output/csgo/CBaseEntityOutput.ini

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ srv_check = False
66
[function]
77
[[fire_output]]
88
# identifier_linux = _ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f
9-
identifier_linux = 55 89 E5 57 56 53 81 EC 7C 01 00 00 8B 55 08 8B 75 14
9+
identifier_linux = 55 89 E5 57 56 53 81 EC 4C 01 00 00 8B 45 08 65 8B 1D 14 00 00 00
1010
identifier_windows = 55 8B EC 83 2A 2A 81 EC 2A 2A 2A 2A 8B C1 53 56 57 8B 2A 2A 89 2A 2A 2A 33
1111
arguments_linux = POINTER, POINTER, POINTER, FLOAT
1212
arguments_windows = INT, INT, INT, INT, POINTER, POINTER, POINTER, FLOAT

addons/source-python/data/source-python/memory/csgo/global_pointers.ini

+9-7
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,33 @@
44
binary = server
55
srv_check = False
66
# identifier_linux = _ZZ23EntityFactoryDictionaryvE15s_EntityFactory
7-
identifier_linux = 55 89 E5 83 EC 28 80 3D 2A 2A 2A 2A 00 74 2A C9 B8 2A 2A 2A 2A C3 8D 76 00 8D BC 27 00 00 00 00 C7 04 24 2A 2A 2A 2A E8 2A 2A 2A 2A 85 C0 74 2A C7 04 24 2A 2A 2A 2A E8 2A 2A 2A 2A C7 04 24 2A 2A 2A 2A E8 2A 2A 2A 2A C7 44 24 08 2A 2A 2A 2A C7 44 24 04 2A 2A 2A 2A C7 04 24 2A 2A 2A 2A E8 2A 2A 2A 2A B8 2A 2A 2A 2A C9 C3 89 45 F4 C7 04 24 2A 2A 2A 2A E8 2A 2A 2A 2A 8B 45 F4 89 04 24 E8 2A 2A 2A 2A 90 8D 76 00 8D BC 27 00 00 00 00 55 89 E5 57
7+
identifier_linux = 55 89 E5 53 83 EC 04 8B 5D 08 E8 2A 2A 2A 2A 83 EC 08 8B 10 53
88
identifier_windows = A1 2A 2A 2A 2A B9 2A 2A 2A 2A 56 FF 75 08 FF 50 04 8B C8 C7 05 2A 2A 2A 2A 00 00 00 00 85 C9 75 2A 33 F6 EB
99
offset_windows = 6
10-
offset_linux = 17
11-
level = 1
10+
offset_linux = 15
11+
level_windows = 1
12+
accessor_linux = true
13+
accessor_offset_linux = 11
1214

1315
[CGlobalEntityList]
1416
binary = server
1517
srv_check = False
16-
identifier_linux = E8 2A 2A 2A 2A E8 2A 2A 2A 2A C7 2A 2A 2A 2A 2A 2A E8 2A 2A 2A 2A E8
18+
identifier_linux = E8 2A 2A 2A 2A E8 2A 2A 2A 2A 83 EC 0C 68 2A 2A 2A 2A
1719
# Search the signature of OnCBaseEntityList::AddNonNetworkableEntity(IHandleEntity *)
1820
# Note: The Linux binary does not contain the gEntList pointer in that function!
1921
identifier_windows = 55 8B EC 8B 0D 2A 2A 2A 2A 53
2022
offset_windows = 101
21-
offset_linux = 13
23+
offset_linux = 14
2224
level = 1
2325

2426
[IServer]
2527
binary = bin/engine
2628
srv_check = False
2729
# identifier_linux = sv
28-
identifier_linux = 55 89 E5 53 83 EC 14 8B 45 0C C7 04 24 2A 2A 2A 2A
30+
identifier_linux = 55 89 E5 53 83 EC 0C FF 75 0C 68 2A 2A 2A 2A
2931
identifier_windows = 55 8B EC 56 FF 2A 2A B9 2A 2A 2A 2A E8 2A 2A 2A 2A 8B
3032
offset_windows = 8
31-
offset_linux = 13
33+
offset_linux = 11
3234
level = 1
3335

3436
[CBaseTempEntity]

addons/source-python/packages/source-python/memory/helpers.py

+2
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ class Key(object):
8484

8585
# Pointer keys
8686
LEVEL = 'level'
87+
ACCESSOR = 'accessor'
88+
ACCESSOR_OFFSET = 'accessor_offset'
8789

8890
# (Virtual) function keys
8991
ARGS = 'arguments'

addons/source-python/packages/source-python/memory/manager.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,8 @@ def create_function_typedefs_from_file(self, f):
722722
self.function_typedef(name, *data)
723723

724724
def global_pointer(
725-
self, cls, binary, identifier, offset=0, level=0, srv_check=True):
725+
self, cls, binary, identifier, offset=0, level=0, srv_check=True,
726+
accessor=False, accessor_offset=0):
726727
"""Search for a global pointer and wrap the it."""
727728
manager_logger.log_debug(
728729
'Retrieving global pointer for {}...'.format(cls.__name__))
@@ -731,7 +732,17 @@ def global_pointer(
731732
binary = find_binary(binary, srv_check)
732733

733734
# Get the global pointer
734-
ptr = binary.find_pointer(identifier, offset, level)
735+
if accessor:
736+
ptr = binary[identifier]
737+
ptr = (ptr + offset + ptr.get_pointer(accessor_offset)).make_function(
738+
Convention.CDECL,
739+
(),
740+
DataType.POINTER
741+
)()
742+
for _ in range(level):
743+
ptr = ptr.get_pointer()
744+
else:
745+
ptr = binary.find_pointer(identifier, offset, level)
735746

736747
# Raise an error if the pointer is invalid
737748
if not ptr:
@@ -753,6 +764,8 @@ def create_global_pointers_from_file(self, f):
753764
(Key.OFFSET, Key.as_int, 0),
754765
(Key.LEVEL, Key.as_int, 0),
755766
(Key.SRV_CHECK, Key.as_bool, True),
767+
(Key.ACCESSOR, Key.as_bool, False),
768+
(Key.ACCESSOR_OFFSET, Key.as_int, 0)
756769
)
757770
)
758771

0 commit comments

Comments
 (0)