partoftheworlD
Пользователи+- 
				
Постов
2 687 - 
				
Зарегистрирован
 - 
				
Посещение
 - 
				
Победитель дней
172 
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент partoftheworlD
- 
	Лаконичней это как в Python, все остальное это изврат.?
 - 
	Конечно, но зачем лишние костыли, когда спецификация позволяет? По мне, так это какие-то жесткие и не здоровые извращения.?
 - 
	Мне кажется, подобные задания бесполезные для практического применения. Не могу даже придумать, где бы подобный алгоритм/опыт пригодился.
 - 
	А зачем в играх на моно указатели? Я конечно понимаю, извращения там у каждого свои, но куда проще обратиться на прямую по имени функции и сказать ей "эй метод, а кому ты отдаешь все ништяки?" простой командой mov.
 - 
	Оу, так надо было выравнивать по одной стороне. Черт, я думал типичное задание с елочкой.
 - 
	вырвать прошивку из установщика программы?
 - 
	Live CD с линуксом и modem-manager-gui
 - 
	1. Открываешь рекласс 2. Указываешь адрес начала структуры 3. Устанавливаешь имя и тип переменной по выбранному смещению. После эти структуры можно генерировать в классы для C++/C# и использовать присвоив адрес структуры указателю на сгенерированный класс.
 - 
	В чем проблема посчитать? В той статье на которую я давал ссылку, есть пример как рассчитать. Если получишь 4 байта (54D26F00) относительный виртуальный адрес, достаточно будет эти 4 байта сложить с началом модуля, чтобы получить адрес указывающий на структуру. И сигнатура будет работать до тех пор, пока не изменится код функции в которой находятся эти инструкции и до тех пор пока этого не случиться у тебя будет работать скрипт. UPD в x86 даже ничего рассчитывать не надо, байты являются абсолютным адресом, достаточно просто получить их. BattleBrothers.exe+E4EF2 - A1 54D26F00 - mov eax,[BattleBrothers.exe+2FD254] BattleBrothers.exe = 0x400000 0x4E4EF2 - A1 54D26F00 - mov eax,[0x6FD254] aob(instr, 'A1 ? ? ? ? ...') ##################################################### #mov eax, instr //instr = 0x4E4EF2 (A1 54D26F00)# #inc eax // eax = 0x4E4EF3 (54D26F00) # #mov eax, [eax] // eax = 0x6FD254 # #mov ecx, [eax+100] // # #cmp ecx, [esi+0C] // # #pop ecx // # #####################################################
 - 
	Если сложно пока в одном скрипте все реализовать, то используй глобальные переменные. Первый скрипт, берет [BattleBrothers.exe+2FD254], помещает в глобальную переменную. Второй скрипт использует эту глобальную переменную. ##########Script 1########## globalAlloc(Base, $4) mov eax,[BattleBrothers.exe+2FD254] mov [Base], eax ##########Script 2########## subss xmm0,[esi+0C] push ecx mov ecx,[Base] mov ecx,[ecx+100] cmp ecx,[esi+0C] pop ecx jne
 - 
	xbindkeys решает проблему. -Главное после установки отключить в конфиге доп.бинды на клавиатуру.
 - 
	Возникла проблема с биндами кнопок на новой мыши в линуксе, т.е старая мышь работает "из коробки"(SS Sensei), а у новой(Zowie FK1+) не работают дополнительные клавиши. Чем можно посмотреть какие-нибудь идентификаторы доп. кнопок на мыши, чтобы написать конфиги с биндами?
 - 
	Да простой перебор смещений многоуровневого указателя, решается циклом.
 - 
	Магия реверса, по строкам находишь функцию регистрирующую команды, которая принимает как аргументы Имя команды "g_speed " Минимальное значение "190 " Маска 1 "0x80000000 " Маска 2 "0x7F7FFFFF " Максимальное значение "192 " Описание "bla-bla-bla" Дальше входишь в эту функцию, и смотришь куда ведет тебя имя команды и минимальное значение, входишь снова в функцию, которая принимает эти значения. Так как можно предположить, что принимаемые аргументы не просто так прописаны, можно сделать вывод, что по имени команды каким-то образом вычисляется положение блока памяти, которое относится к передаваемой команде. А значит надо присмотреться к циклам и массивам. В этой статье что-то похожее рассматривал уже.
 
![Gamehacklab[RU]](https://old.gamehacklab.ru/uploads/monthly_2022_06/1_PNG_GHL_64x.png.6d61ef42c3de6821543db4c0243672ae.png)