Гость abbateur Опубликовано 29 апреля, 2016 Поделиться Опубликовано 29 апреля, 2016 Относительно недавно накодил триггербот для Team Fortress 2 (самый простой, только чтение памяти и эмуляция клацания левой кнопки через через mouse_event , через сравнение команды игрока в прицеле со своей командой) и понял,что для снайпера такой триггербот почти бесполезен, а следовательно есть мотивация изучать более продвинутые вещи Естественно полез шарить по гитхабу и гуглу и нашел вот это: https://github.com/OlivierStAmour/CSGO_aimbot/tree/master/source - исходник аимбота,который умеет выцеливать определенные "кости" игрока(голову, туловище, ноги итд) С пониманием кода никаких проблем не возникло, но возник вопрос - как искать эти самые смещения на "кости"? Через Cheat engine это не провернуть, туториалов по тому как это сделать в IDA/Ollydbg/x64dbg не нашел. Есть конечно предположение,что копать нужно в сторону sdk,но как использовать его для получения нужных указателей и вообще работать с ним? Может кто сталкивался и может подкинуть статей по поиску смещений через sdk, или иной вариант получения нужных указателей? Любые ссылки по теме - приветствуются, как и любая помощь Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 29 апреля, 2016 Поделиться Опубликовано 29 апреля, 2016 (изменено) Так у тебя будет вместо 12-ой виртуальной функции, 37 вроде бы точно сейчас не скажу. В IDA можно уточнить скачав плагин Class informer и игру под macos, там все функции с отладочной информацией идут т.е подписаны. или искать C_BaseAnimating::SetupBones это будет начало функции и смотреть по коду, если в асме разбираешься, восстановишь функцию и быстро найдешь.(SDK в помощь) Инструкция будет выглядеть как-то так: mov [esi+смещение], eax(ecx было в соурс) EntityBase(esi) + смещение = C_BaseAnimating::SetupBones Изменено 29 апреля, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость abbateur Опубликовано 30 апреля, 2016 Поделиться Опубликовано 30 апреля, 2016 (изменено) Нашел как разреверсить функцию вот тут,буквально вчера: http://guidedhacking.com/showthread.php?5210-tut-on-reversing-quot-C_BaseAnimating-SetupBones-quot/page2&highlight=bone Насколько я понял там по факту нужно искать не столько определенный регистр, сколько последовательность mov которая вносит данные по смещениям (так как похоже, что компилятор использует разные регистры для каждого билда), а именно такую последовательность: Цитата mov dword ptr ds:[регистр+смещение],0 mov dword ptr ds:[регистр+смещение2],0 movss dword ptr ds:[регистр+смещение3],xmm0 https://github.com/ValveSoftware/source-sdk-2013/blob/master/mp/src/game/client/c_baseanimating.cpp Цитата bool C_BaseAnimating::SetupBones( matrix3x4_t *pBoneToWorldOut, int nMaxBones, int boneMask, float currentTime ) Получил вот это: Цитата 1E962197 | C7 83 B0 05 00 00 00 00 | mov dword ptr ds:[ebx+5B0],0 | 1E9621A1 | C7 83 B4 05 00 00 00 00 | mov dword ptr ds:[ebx+5B4],0 | 1E9621AB | F3 0F 11 83 5C 08 00 00 | movss dword ptr ds:[ebx+85C],xmm0| Первое смещение похоже на правильное: Чуть позже проверю чуть более детально. Изменено 30 апреля, 2016 пользователем abbateur Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения