darthmaul Опубликовано 22 января, 2016 Поделиться Опубликовано 22 января, 2016 На гитхабе нашел проект, называется sourcecmd, который выполняет консольные команды в играх типа CS:GO, CS:S и т.д. Но для работы как я понял нужно обновить сигнатуру. Так вот как через cheatengine найти сигнатуру на выполнение консольных команд? if ( ::ReadProcessMemory( mhProcess, hmEngine, dump, size, NULL ) ) { // Do a sigscan for CEngineClient::ExecuteClientCmd // (old) Pattern: 8B 44 24 04 50 E8 ? ? ? ? 68 ? ? ? ? E8 ? ? ? ? 83 C4 08 E8 ? ? ? ? C2 04 00 // (old) Pattern: 55 8B EC 8B 45 08 50 E8 ? ? ? ? 68 ? ? ? ? E8 ? ? ? ? 83 C4 08 5D C2 04 00 // Pattern: 55 8B EC 8B 45 08 50 E8 ? ? ? ? 83 C4 04 5D C2 04 00 if ( void* p = FindPattern( dump, size, "\x55\x8B\xEC\x8B\x45\x08\x50\xE8\x00\x00\x00\x00\x83\xC4\x04\x5D\xC2\x04\x00", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF" ) ) Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 января, 2016 Поделиться Опубликовано 22 января, 2016 (изменено) Для того чтобы получить адрес буфера CEngineClient::ExecuteClientCmd, тебе надо либо пользоваться виртуальной таблицей, либо искать вызов этой функции в дизассемблере где-то около вызова cvar-команд или самый простой способ найти engine.dylib для MAC OS нужной тебе игры, там каждая функция подписана. Изменено 22 января, 2016 пользователем partoftheworlD 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 22 января, 2016 Поделиться Опубликовано 22 января, 2016 darthmaul, самый простой способ, который я знаю. Ищешь все значения сперва 1 или 0 , включаешь нужный чит и отсеиваешь 0 или 1, выключаешь чит и отсеиваешь 1 или 0, и так несколько раз до нужного значения. Узнаёшь при помощи брекпойта на запись и чтение нужный адрес и на основе этого адреса делаешь сигнатуру. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 23 января, 2016 Поделиться Опубликовано 23 января, 2016 (изменено) Найти это не сложно, сигнатуру сам думаю сделаешь. В общем полазив немного по коду. .text:000B3ED0 ExecuteCmd proc near ; DATA XREF: .rdata:003067E4o.text:000B3ED0 push ebp.text:000B3ED1 mov ebp, esp.text:000B3ED3 push dword ptr [ebp+8].text:000B3ED6 call Cbuf_AddText ; STR: "Cbuf_AddText: buffer overflow".text:000B3EDB add esp, 4.text:000B3EDE call Cbuf_Execute .text:000B3EE3 pop ebp.text:000B3EE4 retn 4.text:000B3EE4 ExecuteCmd endpЯ искал с помощью engine.dylib как в первом посте описывал, ExecuteCmd это 106 индекс в виртуальной таблице CEngineClient. Если будешь искать не по виртуальной таблице, то для начала надо найти строку "Cbuf_AddText: buffer overflow" эта строка находится в функции "Сbuf_Addtext", дальше смотришь откуда вызывается она, переходишь по этим ссылкам и ищешь примерно похожий код. Если будет время, возможно вечером запишу как это работает Изменено 23 января, 2016 пользователем partoftheworlD 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
darthmaul Опубликовано 23 января, 2016 Автор Поделиться Опубликовано 23 января, 2016 Найти это не сложно, сигнатуру сам думаю сделаешь. В общем полазив немного по коду. .text:000B3ED0 ExecuteCmd proc near ; DATA XREF: .rdata:003067E4o.text:000B3ED0 push ebp.text:000B3ED1 mov ebp, esp.text:000B3ED3 push dword ptr [ebp+8].text:000B3ED6 call Cbuf_AddText ; STR: "Cbuf_AddText: buffer overflow".text:000B3EDB add esp, 4.text:000B3EDE call Cbuf_Execute .text:000B3EE3 pop ebp.text:000B3EE4 retn 4.text:000B3EE4 ExecuteCmd endpЯ искал с помощью engine.dylib как в первом посте описывал, ExecuteCmd это 106 индекс в виртуальной таблице CEngineClient. Если будешь искать не по виртуальной таблице, то для начала надо найти строку "Cbuf_AddText: buffer overflow" эта строка находится в функции "Сbuf_Addtext", дальше смотришь откуда вызывается она, переходишь по этим ссылкам и ищешь примерно похожий код. Если будет время, возможно вечером запишу как это работает а у меня в папке с игрой только client.dylib и server.dylib Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения