x330122
Участник
- Сообщения
- 357
- Реакции
- 152
Это не совсем гайд, а скорее всего лишь пошаговая инструкция того как я патчил байты в инструкции server.so файла для того, чтобы игроков не обезоруживало от удара кулаков на ПКМ в CSGO
Для чего это надо ?
Для меня лично это лучше чем компилить Extension и патчить сошку(.SO) напрямую.
Что вам понадобится:
Ida(6.8+)
PyCharm
HxD
Шаг первый
Для начала надо определится что конкретно надо пропатчить и какую инструкцию, заменить JE на JMP или еще что.
В моем случае я хотел отключить обезоруживание игроков от удара кулаками.
Окей, открываем Ida Pro, закидываем туда server.so файл, прыгаем на нужную инструкцию.
В моем случае было вот это:
Я хочу заменить jz на jmp loc_C4202F
Выделяем нужную вам инструкцию и затем переходим в Text View и выделяем адрес на котором находится данная инструкция(В моем случае адрес находится на 00C42915)
Шаг второй
Открываем HxD, закидываем туда нашу сошку, затем из полученного ранее адреса(00C42915), переходим на этот адрес.
Результ:
Окей, прыгнули на нужные нам байты, теперь надо выделить какой участок байтов мы можем пропатчить.
В HxD кликаем на UInt64 получаем :
Видим выделился участок который мы можем спокойно пропатчить просто поменяв число через плагин.
Одно но, если вы пропатчите байты которые выходят за предел этой границы, возможен Segmentation Fault
.
Окей, определились что мы можем пропатчить.
Шаг третий
Начинаем менять инструкцию в иде.
Я поменял вот так
Окей, байты поменялись, теперь открываем Hex View в иде и смотрим какие байты поменялись.
Вот что получилось.
Теперь мы прыгаем назад в HxD, начинаем по байту вводить изменения
Запомните значения UInt64 до и после, это будет необходимо.
Значение Было - это то, что плагин будет искать чтобы пропатчить, а значение Стало - это то, что плагин запишет вместо этого значения(пропатчит типа)
Шаг четвертый
Разжуйте все то что вы сделали, вникните в суть(если сможете, этот этап можно пропустить)
Запишите себе в блокнотик следующие:
Место где находится эта инструкция(адрес): 0x00C42915
Значения До и После из 3-го шага.
Молимся, потом начинаем писать плагин.
Сохраняем, закидываем в плагин папку, загружаем плагин(sp plugin load <имя плагина которое вы указали>)
Радуемся !
Результик:
Накинь на дошик если твой 1337 scripting скилл увеличился на 1%:
Qiwi +79232709034
Для чего это надо ?
Для меня лично это лучше чем компилить Extension и патчить сошку(.SO) напрямую.
Что вам понадобится:
Ida(6.8+)
PyCharm
HxD
Шаг первый
Для начала надо определится что конкретно надо пропатчить и какую инструкцию, заменить JE на JMP или еще что.
В моем случае я хотел отключить обезоруживание игроков от удара кулаками.
Окей, открываем Ida Pro, закидываем туда server.so файл, прыгаем на нужную инструкцию.
В моем случае было вот это:
Я хочу заменить jz на jmp loc_C4202F
Выделяем нужную вам инструкцию и затем переходим в Text View и выделяем адрес на котором находится данная инструкция(В моем случае адрес находится на 00C42915)
Шаг второй
Открываем HxD, закидываем туда нашу сошку, затем из полученного ранее адреса(00C42915), переходим на этот адрес.
Результ:
Окей, прыгнули на нужные нам байты, теперь надо выделить какой участок байтов мы можем пропатчить.
В HxD кликаем на UInt64 получаем :
Видим выделился участок который мы можем спокойно пропатчить просто поменяв число через плагин.
Одно но, если вы пропатчите байты которые выходят за предел этой границы, возможен Segmentation Fault

Окей, определились что мы можем пропатчить.
Шаг третий
Начинаем менять инструкцию в иде.
Я поменял вот так
Окей, байты поменялись, теперь открываем Hex View в иде и смотрим какие байты поменялись.
Теперь мы прыгаем назад в HxD, начинаем по байту вводить изменения
Запомните значения UInt64 до и после, это будет необходимо.
Значение Было - это то, что плагин будет искать чтобы пропатчить, а значение Стало - это то, что плагин запишет вместо этого значения(пропатчит типа)
Шаг четвертый
Разжуйте все то что вы сделали, вникните в суть(если сможете, этот этап можно пропустить)
Запишите себе в блокнотик следующие:
Место где находится эта инструкция(адрес): 0x00C42915
Значения До и После из 3-го шага.
Молимся, потом начинаем писать плагин.
Быдлокод:
from memory import *
from memory.hooks import *
from memory.manager import TypeManager
func = find_binary('server.so')[b'']#Тут мы берем нашу сошку, с ней мы будем работать OFC(KFC)
#0x00C42915 - это адрес инструкции в сошке
(func + 0x00C42915).unprotect(8)#Очень важная строка которую я искал целый день, если её не будет, Segmentation fault вам обеспечен.(Спс челику
#https://steamcommunity.com/id/hhrhhrhrhr/)
val = func.get_ulong_long(0x00C42915)#Проверяем что значение ДО совпало с этим адресом.
print('Значение до' + str(val))#Да, вот смотреть вот сюда надо.
val = func.set_ulong_long(16206362688278173161, 0x00C42915)#Если все чики пуки, то начинаем менять значение на то которое нужно(Значение После)
print(val)#Если написало None, то поздравляю, вы пропатчили байты.
Сохраняем, закидываем в плагин папку, загружаем плагин(sp plugin load <имя плагина которое вы указали>)
Радуемся !
Результик:
Qiwi +79232709034