-
Notifications
You must be signed in to change notification settings - Fork 37
The last update in CSGO has broken addons (ValueError: Could not find signature) #462
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
If developers don't want to update can somebody help to explain how to get new signatures? |
same problem linux server [Source.Python] Failed to load the main module due to following exception: File "/srv/csgo/addons/source-python/packages/source-python/init.py", line 88, in load File "/srv/csgo/addons/source-python/packages/source-python/init.py", line 307, in setup_global_pointers File "/srv/csgo/addons/source-python/packages/source-python/memory/manager.py", line 765, in create_global_pointers_from_file File "/srv/csgo/addons/source-python/packages/source-python/memory/manager.py", line 734, in global_pointer ValueError: Could not find signature: 5589e583ec28803d2a2a2a2a00742ac9b82a2a2a2ac38d76008dbc2700000000c704242a2a2a2ae82a2a2a2a85c0742ac704242a2a2a2ae82a2a2a2ac704242a2a2a2ae82a2a2a2ac74424082a2a2a2ac74424042a2a2a2ac704242a2a2a2ae82a2a2a2ab82a2a2a2ac9c38945f4c704242a2a2a2ae82a2a2a2a8b45f4890424e82a2a2a2a908d76008dbc27000000005589e557 |
I understand the issue but I don't understand how to get new byte-signatures from the updated binaries of the game. I used a guide https://wiki.alliedmods.net/Signature_Scanning but I don't understand what function of the ini-file matches the code of the game and how to find the one in the disassembled code. |
Didn't find a solution to the problem? |
Here is the updated signature for linux:
|
Thanks! I'm going to test it now. Can you explain how you get this for future? |
No. It's not enough. At least addons\source-python\data\source-python\memory\csgo\global_pointer.ini is wrong |
Yeah I see that. I tried updating the EntityFactoryDictionary in global_pointer and it worked, but the server crash on load with no error. |
Do you have any news? And can you give the signature in global_pointer? |
Give this a try:
|
I have tried "fire_output" from the source and from the post above. |
Working fire_output
But anyway I get "Segmentation fault" |
Debug log
|
Has somebody fixed "Segmentation Fault"? |
Nothing happens, the server does not earn |
Where is the developers of the addon? I think I will use sourcemod they fixed the issue after 1 day. Silence is here already 4 days... And nobody can't explain how to get signatures. I have tried to get it from the old binary. I got some the true signatures for functions but some ones are wrong. What sigmaker the developers use nobody knows. I haven't found any full guide. |
Tried correcting the signatures, but yeah it results in a segmentation fault, which I'm not sure how to go about. |
I did a full log. It can help to resolve the issue
|
Hello. Unfortunately, more capable devs are currently unavailable, and I'm only really good at the Python side of things, so here's a temporary fix. I basically borrowed everything from Sourcemod.
# ../data/source-python/memory/csgo/global_pointers.ini
[CEntityFactoryDictionary]
binary = server
srv_check = False
# identifier_linux = _ZZ23EntityFactoryDictionaryvE15s_EntityFactory
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
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
offset_windows = 6
offset_linux = 17
level = 1
[CGlobalEntityList]
binary = server
srv_check = False
identifier_linux = E8 2A 2A 2A 2A E8 2A 2A 2A 2A 83 EC 0C 68 2A 2A 2A 2A
# Search the signature of OnCBaseEntityList::AddNonNetworkableEntity(IHandleEntity *)
# Note: The Linux binary does not contain the gEntList pointer in that function!
identifier_windows = 55 8B EC 8B 0D 2A 2A 2A 2A 53
offset_windows = 101
offset_linux = 14
level = 1
[IServer]
binary = bin/engine
srv_check = False
# identifier_linux = sv
identifier_linux = 55 89 E5 53 83 EC 0C FF 75 0C 68 2A 2A 2A 2A
identifier_windows = 55 8B EC 56 FF 2A 2A B9 2A 2A 2A 2A E8 2A 2A 2A 2A 8B
offset_windows = 8
offset_linux = 11
level = 1
[CBaseTempEntity]
binary = server
srv_check = False
# identifier_linux = _ZN15CBaseTempEntity15s_pTempEntitiesE
identifier_linux = 55 89 E5 8B 45 08 8B 55 0C C7 00 2A 2A 2A 2A 89 50 04 8B 15 2A 2A 2A 2A
identifier_windows = 89 41 04 A1 2A 2A 2A 2A 89 41 08 89 0D 2A 2A 2A 2A C7
offset_windows = 4
offset_linux = 20
level = 2
# ../data/source-python/entity_output/csgo/CBaseEntityOutput.ini
binary = server
srv_check = False
[function]
[[fire_output]]
# identifier_linux = _ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f
identifier_linux = 55 89 E5 57 56 53 81 EC 4C 01 00 00 8B 45 08 65 8B 1D 14 00 00 00
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
arguments_linux = POINTER, POINTER, POINTER, FLOAT
arguments_windows = INT, INT, INT, INT, POINTER, POINTER, POINTER, FLOAT
def global_pointer(
self, cls, binary, identifier, offset=0, level=0, srv_check=True):
"""Search for a global pointer and wrap the it."""
manager_logger.log_debug(
'Retrieving global pointer for {}...'.format(cls.__name__))
# Get the binary
binary = find_binary(binary, srv_check)
# Get the global pointer
ptr = binary.find_pointer(identifier, offset, level)
# Raise an error if the pointer is invalid
if not ptr:
raise ValueError('Unable to find the global pointer.')
# Wrap the pointer using the given class and save the instance
ptr = self.global_pointers[cls.__name__] = make_object(cls, ptr)
return ptr with this code: def _global_pointer_for_entity_factory(self, cls):
# Credits to https://github.com/alliedmodders/sourcemod/blob/e34e9b9869915bd2f82446cc64ddedf06586722d/extensions/sdktools/vhelpers.cpp#L742
manager_logger.log_debug("(Hacky) Retrieving global pointer for EntityFactoryDictionary...")
# EntityFactoryCaller
ent_caller_sig = b"\x55\x89\xE5\x53\x83\xEC\x14\x8B\x5D\x08\xE8\x2A\x2A\x2A\x2A\x85\xC0\x74\x2A\xE8"
# EntityFactoryCallOffset
ent_call_offset = 11
binary = find_binary('server', srv_check=False)
func_offset = binary.find_pointer(ent_caller_sig, ent_call_offset, 1)
addr = binary[ent_caller_sig] + (ent_call_offset + 4 + int(func_offset))
func = addr.make_function(
Convention.CDECL,
[],
DataType.POINTER
)
manager_logger.log_debug("(Hacky) Calling a function...")
ptr = func()
manager_logger.log_debug("(Hacky) We're still here, saving the object.")
self.global_pointers[cls.__name__] = make_object(cls, ptr)
return ptr
def global_pointer(
self, cls, binary, identifier, offset=0, level=0, srv_check=True):
"""Search for a global pointer and wrap the it."""
manager_logger.log_debug(
'Retrieving global pointer for {}...'.format(cls.__name__))
# TODO: Remove this ASAP
from core import PLATFORM, GAME_NAME
if (PLATFORM, GAME_NAME, cls.__name__) == ('linux', 'csgo', 'EntityFactoryDictionary'):
return self._global_pointer_for_entity_factory(cls)
# Get the binary
binary = find_binary(binary, srv_check)
# Get the global pointer
ptr = binary.find_pointer(identifier, offset, level)
# Raise an error if the pointer is invalid
if not ptr:
raise ValueError('Unable to find the global pointer.')
# Wrap the pointer using the given class and save the instance
ptr = self.global_pointers[cls.__name__] = make_object(cls, ptr)
return ptr This is a very dirty fix and we should wait for a full solution, but at least this should get you back up. |
@KirillMysnik Thank you, Kirill. I'll try it. I knew it that issue in EntityFactoryDictionary and its offset but don't have enough experience in CS modding/hacking. |
It's working!!! Thank you very much |
I don't have a file ./addons/source-python/packages/source-python/manager/memory.py |
memory/manager.py - it's correct |
Yes. But I would do it a little bit differently |
As if everything was done as it is said, but the server is not used |
Can you give me your file for me to replace. Maybe I'm doing something wrong? |
In your screenshot all is correct. Did you replace signatures? |
[Source.Python] Loading... File "/srv/csgo/addons/source-python/packages/source-python/init.py", line 82, in load File "/srv/csgo/addons/source-python/packages/source-python/init.py", line 204, in setup_core_settings File "/srv/csgo/addons/source-python/packages/source-python/core/settings.py", line 47, in load File "/srv/csgo/addons/source-python/packages/source-python/core/settings.py", line 68, in _check_settings File "/srv/csgo/addons/source-python/packages/source-python/core/settings.py", line 199, in _check_auth_settings File "/srv/csgo/addons/source-python/packages/source-python/auth/manager.py", line 19, in File "/srv/csgo/addons/source-python/packages/source-python/listeners/init.py", line 29, in File "/srv/csgo/addons/source-python/packages/source-python/entities/helpers.py", line 54, in File "/srv/csgo/addons/source-python/packages/source-python/memory/manager.py", line 724
IndentationError: unindent does not match any outer indentation level File "/srv/csgo/addons/source-python/packages/source-python/init.py", line 99, in unload File "/srv/csgo/addons/source-python/packages/source-python/init.py", line 441, in unload_plugins File "/srv/csgo/addons/source-python/packages/source-python/plugins/manager.py", line 29, in File "/srv/csgo/addons/source-python/packages/source-python/listeners/init.py", line 29, in File "/srv/csgo/addons/source-python/packages/source-python/entities/helpers.py", line 54, in File "/srv/csgo/addons/source-python/packages/source-python/memory/manager.py", line 724
IndentationError: unindent does not match any outer indentation level |
laughing out loud. The indent was incorrect. sorry everything worked |
Thank you all for your input and sorry for the late reply. I guess all of us were quite busy in the last few days. Also thank you @jordanbriere for supplying the final fix. A new release will be published in a few hours when I'm back home. |
Uh oh!
There was an error while loading. Please reload this page.
ValueError: Could not find signature: 5589e583ec28803d2a2a2a2a00742ac9b82a2a2a2ac38d76008dbc2700000000c704242a2a2a2ae82a2a2a2
a85c0742ac704242a2a2a2ae82a2a2a2ac704242a2a2a2ae82a2a2a2ac74424082a2a2a2ac74424042a2a2a2ac704242a2a2a2ae82a2a2a2ab82a2a2a2ac9 c38945f4c704242a2a2a2ae82a2a2a2a8b45f4890424e82a2a2a2a908d76008dbc27000000005589e557
The text was updated successfully, but these errors were encountered: