

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" Дальше входишь в эту функцию, и смотришь куда ведет тебя имя команды и минимальное значение, входишь снова в функцию, которая принимает эти значения. Так как можно предположить, что принимаемые аргументы не просто так прописаны, можно сделать вывод, что по имени команды каким-то образом вычисляется положение блока памяти, которое относится к передаваемой команде. А значит надо присмотреться к циклам и массивам. В этой статье что-то похожее рассматривал уже.