Перейти к содержанию

partoftheworlD

Пользователи+
  • Постов

    2 687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    172

Весь контент partoftheworlD

  1. Почему бы не погуглить? Обработчик исключений был бы идеальным решением, проверки адресов. https://wiki.cheatengine.org/index.php?title=Auto_Assembler:TRY_EXCEPT Там даже пример есть. Ох уж любители костылей.
  2. Лаконичней это как в Python, все остальное это изврат.?
  3. Конечно, но зачем лишние костыли, когда спецификация позволяет? По мне, так это какие-то жесткие и не здоровые извращения.?
  4. Мне кажется, подобные задания бесполезные для практического применения. Не могу даже придумать, где бы подобный алгоритм/опыт пригодился.
  5. А зачем в играх на моно указатели? Я конечно понимаю, извращения там у каждого свои, но куда проще обратиться на прямую по имени функции и сказать ей "эй метод, а кому ты отдаешь все ништяки?" простой командой mov.
  6. Оу, так надо было выравнивать по одной стороне. Черт, я думал типичное задание с елочкой.
  7. 8. не заниматься ерундой с фильтрами, а найти инструкцию, которая работает с теми адресами, которые нужны. 9. вычислить адрес самостоятельно.
  8. вырвать прошивку из установщика программы?
  9. Угу, все правильно будет вне зависимости от разрядности системы. Специально перепроверил. x86 - абсолютный адрес(никакие вычисления не нужны) x64 - относительный адрес (нужны вычисления)
  10. 1. Открываешь рекласс 2. Указываешь адрес начала структуры 3. Устанавливаешь имя и тип переменной по выбранному смещению. После эти структуры можно генерировать в классы для C++/C# и использовать присвоив адрес структуры указателю на сгенерированный класс.
  11. Это достаточно тонкий момент как оказалось, в x64 байты представляют из себя относительный виртуальный адрес от текущего EIP., а x86 это абсолютный адрес, хотя это надо будет перепроверить, возможно это частный случай.
  12. В чем проблема посчитать? В той статье на которую я давал ссылку, есть пример как рассчитать. Если получишь 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 // # #####################################################
  13. Почему? У тебя есть сигнатура с маской, маска решает проблему с меняющимися значениями, смещениями, переменными. ИМХО Не стоит, ему надо понять как сигнатуры работают, а это лишь дополнительные проблемы создаст.
  14. Если сложно пока в одном скрипте все реализовать, то используй глобальные переменные. Первый скрипт, берет [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
  15. Для сигнатуры просто делаешь маску, типа 8B ? ? ? ?, главное чтобы она была уникальной. Дальше высчитываешь смещение от начала сигнатуры, до [game.exe+1234] и получаешь 4 байта указывающие на [game.exe+1234] Вот для примера.
  16. xbindkeys решает проблему. -Главное после установки отключить в конфиге доп.бинды на клавиатуру.
  17. Возникла проблема с биндами кнопок на новой мыши в линуксе, т.е старая мышь работает "из коробки"(SS Sensei), а у новой(Zowie FK1+) не работают дополнительные клавиши. Чем можно посмотреть какие-нибудь идентификаторы доп. кнопок на мыши, чтобы написать конфиги с биндами?
  18. Да простой перебор смещений многоуровневого указателя, решается циклом.
  19. Нет, это значение является относительным виртуальным адресом, которое всегда будет равно этому значению на текущем патче.
  20. Магия реверса, по строкам находишь функцию регистрирующую команды, которая принимает как аргументы Имя команды "g_speed " Минимальное значение "190 " Маска 1 "0x80000000 " Маска 2 "0x7F7FFFFF " Максимальное значение "192 " Описание "bla-bla-bla" Дальше входишь в эту функцию, и смотришь куда ведет тебя имя команды и минимальное значение, входишь снова в функцию, которая принимает эти значения. Так как можно предположить, что принимаемые аргументы не просто так прописаны, можно сделать вывод, что по имени команды каким-то образом вычисляется положение блока памяти, которое относится к передаваемой команде. А значит надо присмотреться к циклам и массивам. В этой статье что-то похожее рассматривал уже.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.