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

partoftheworlD

Помогаторы
  • Публикаций

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

  • Посещение

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

    164

partoftheworlD стал победителем дня 26 ноября

partoftheworlD имел наиболее популярный контент!

Репутация

797 Advanced Gamehacker

Информация о partoftheworlD

  • Звание
    инженер проектирующий свалки

Посетители профиля

12300 просмотров профиля
  1. Статья должна была выйти вместе с видео, но мне лень было её писать. В прошлом видео я показывал, как это работает и настало время для того, чтобы рассказать, как это делалось. Да можно было писать свое значение на прямую в значение разблокировки замка, но это скучно и вообще какой-то дет.сад. На деле все оказалось довольно странно, вместо обычной генерации рандомного значения, в скайриме используется двухуровневая т.е. сначала одна функция генерирует одно значение, результат которой влияет на результат второй функции. Рассмотрим код, хотя в нем особо комментировать нечего, я разделил его на блоки, чтобы проще воспринимались стадии работы алгоритма. Дальше можно в ручную уже посчитать текущее значение для открытия замка: v5 = 9.615000725f * 0.5; // 4.8075003625 v6 = v5 - 90.f; // -85.1924996375 v7 = 90.f - v5; // 85.1924996375 link = &qword_7FF6A0CEED70 LockPick->unlock_Value = ( v7 - v6 ) * (GenerateRandomValue(link, 0xFFFFFFFF) * 2.328306437E-10) + v6; LockPick->unlock_Value = 170.38 * (0xAE504DB6 * 2.328306437E-10) + -85.1924996375 LockPick->unlock_Value = 170.38 * (2924498432.00 * 2.328306437E-10) + -85.1924996375 LockPick->unlock_Value = 170.38 * (0.68) + -85.1924996375 LockPick->unlock_Value = 30.82 И проверяем в отладчике: Генератор отмычек готов.
  2. Функция принимает D3DXVECTOR3, а ты передаешь ей float Так же, твой Vector2D является Vec3, а возвращаемое значение WorldToScreen имеет тип D3DXVECTOR2. Написать перегрузку WorldToScreen, судя по исходникам с этим не должно возникнуть проблем. Или написать шаблон WorldToScreen.
  3. partoftheworlD

    Книги

    Треть на русском(по cpp, регуляркам, патернам, глубокому обучению). Так что давай начинай плюсы учить. Начиная с книги Страуструпа, после Рихтер с winapi и закрепить все это полным справочником по cpp.
  4. partoftheworlD

    Книги

    Немного обновил и упорядочил книги из личного хранилища, может кому пригодятся. (Возможно это считается за пиратством, так что ссылку буду выдавать в личных сообщениях, на форуме или в дискорде) В архив входят:
  5. Потому что эта функция может использоваться любыми программами и даже системой, если что пойдет не так будут проблемы. Да и это достаточно глупо, можно сравнить например, вот возникла трещина в кости, а врачи вместо гипса, конечность отрезали, по сути проблема решена, но стоило ли оно того. Вот и тут так же, поэтому прежде чем что-то внедрять в winapi надо понимать последствия и на их основе уже оценивать необходимость такого подхода.
  6. Мне кажется она будет бесполезна на memcmp, возможно, memcmp будет использоваться какой-нибудь из программ из-за чего трейс будет постоянно не того что нужно, лучше по стеку руками пройтись и в заметках восстановить все.
  7. Если нужны данные, просто выходишь по стеку вызовов на пользовательский код, там вешаешь скрипт и перехватываешь нужные буферы, которые передаются в функцию memcmp как аргументы, регистрируешь глобально символы на них, а дальше делаешь с ними что хочешь, например дамп всех значений в блоке, через lua. Хотя лучше потратить чуть больше времени, и восстановить алгоритм получения указателей на блоки, хотя бы до инструкции работающей с массивами и уже на этом куске кода вешать скрипт.
  8. Чем придумывать велосипед из палок и грязи, просто проиндексируй массив и обращайся к значениям по их индексу. Оу, поспешил, вы что тут вообще творите? Это ведь WinAPi выйди по стеку в пользовательский код и уже там сравнивай. За внедрение кода в winapi обычно по рукам бьют. И код ничего не пишет, уж это можно было загуглить.
  9. Это не будет работать без описания перегрузки, типа
  10. Нет, мне кажется даже глупо спрашивать о таком. Язык лишь инструмент автоматизации, а не супер-пупер инструмент позволяющий взламывать игры. В интернете их полно, тем более для CSS, каждый кому не лень пишет и выкладывает esp. Первый результат в поиске. Не самый разумный подход, если есть желания и дальше продолжать в этой области, надо знать возможности языка, чтобы использовать именно так как тебе нужно. А если это спонтанное желание у которого нет будущего, то проще посмотреть на исходники читов на гитхабе и не тратить впустую время. И с чего у всех какие-то странные временные отрезки по изучению языка в 5 лет, тот же C++ и за 10 лет выучить не удастся, и изучить все его возможности.
  11. 4C 8B 35 это конструкция mov r14, [rip] или mov r14, cs:[0], следующие 4 байта, указывают на смещение относительно этой инструкции.
  12. Не загоняйся по ерунде, на практике все равно будешь использовать 5-10 основных опкодов и инструкций, плюс есть утилиты и онлайн дизассемблеры, где можно посмотреть байты и какие инструкции они представляют для любой архитектуры, если уж так сильно захочется..
  13. Для того чтобы читать табличку, советую использовать интеловские доки (глава 3) там объясняется, что все это значит. Да и вообще интеловские доки, являются некой библией для каждого реверсера, так что, если думаешь серьезно заняться реверсом, советую прочитать их и использовать как справочник.
  14. Разный в зависимости от компиляции, вообще push размером в 1 байт это зарезервированные опкоды от 50 до 57 50 push rax 51 push rcx 52 push rdx 53 push rbx 54 push rsp 55 push rbp 56 push rsi 57 push rdi Ну и табличка:
×

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

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