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

partoftheworlD

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

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

  • Посещение

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

    172

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

  1. Автоматический поиск указателей не гарантирует нахождение указателей, он просто перебирает смещения, поэтому в зависимости от игры он может работать, а может не работать, на это влияет множество факторов от правильности пути по которому будет сохраняться результат до всяких прав доступа к памяти. Ручной поиск хоть и дольше, но результат гарантирован(если не потеряться в ответвлениях структур).
  2. игру(Assembly-CSharp.dll) открываешь через dnSpy. ищешь упоминания лески/натяжений/катушки, в классе FishingLine(леска) будет метод UpdateTension(обновление натяжения), теперь необходимо получить адрес значения натяжения, быстро пробежавшись по дизассемблеру и коду в dnSpy можно найти инструкцию, которая работает с натяжением. Дальше ищешь рабочую инструкцию с этим же смещением, если эта не срабатывает. Получаешь адрес значения натяжения Теперь устанавливаешь на этот адрес брейкпоинт на запись, и ждешь пока рыба клюнет: После подсечки появятся еще 4 инструкции, скрипты нужно будет написать на первые 2 с обнулением xmm5. И скрипт
  3. Пока люди проектируют системы - сломать можно все. Есть несколько способов, да разработчики могут повесить множество защит и проверок на определенные значения, но могут существовать различные бонусы или, к примеру способности, влияющие на множитель, который участвует (на прямую или косвенно) в вычислении нужного значения, изменив которые сможешь изменить все что тебе захочется. Ну а второй, просто подделывать транзакцию, к примеру при завершении задания за которое дают опыт, голду и т.д, существует метод, который говорит серверу, что игрок завершил задание и надо ему что-нибудь дать, но раз его может вызывать игра, то и человек сможет данный метод приручить. В целом проблема с "серверными" играми в том, что на исследование (реверс, понимание механики игры, понимание работы между клиентом и сервером) нужно очень много времени, даже скорее больше, чем уйдет на фаззинг и поиск бага в коде, который позволит, к примеру дюпать голду(хотя даже это проблематично со всеми этими новыми безопасными яп).
  4. Если справка выводится локальная - удалить её, если вызывает URL с инфой, то сломать ShellExecute внутри CE Эти функции патчишь ret и больше никакой справки cheatengine-i386 : 55 89 E5 8D 64 24 C8 53 56 57 66 89 D6 cheatengine-x86_64: 55 48 89 E5 48 8D 64 24 ? 48 89 5D C8 48 89 7D D0 48 89 75 D8 66 89 D3 Можно и от F1 отвязку сделать, но мне лень, патч по идее должен сработать.
  5. Ищи редакторы на форумах мододелов, либо пиши свой редактор на основе функций игры, иначе никак.
  6. Составление темы в разделе вопросов без вопроса, вот что круто.
  7. Нужно выйти на структуру игрока и смотреть все вложенные структуры минимум в 2-3 уровнях.
  8. Нужно смотреть на код, как расставляешь и проверяешь доступность hwbp, а так же как отлавливаешь исключения
  9. Размер указывается для определенных типов брейкпоинта, чтобы зацепить изменения в адресе, только на запись и на чтение, если брейкпоинт на выполнение, то размер игнорируется. Получение значений регистров через асм вставки не должно было вызвать проблем, но правильнее было бы открыть поток, получить контекст, из контекста выбрать нужные регистры. auto threadID = GetCurrentThreadId(); auto hThread = OpenThread(THREAD_GET_CONTEXT | THREAD_SET_CONTEXT | THREAD_SUSPEND_RESUME | THREAD_QUERY_INFORMATION, FALSE, threadID); CONTEXT ctx = { 0 }; ctx.ContextFlags = CONTEXT_FULL; GetThreadContext(hThread , &ctx); Удивительно, это ведь обычный mid hook.
  10. Если времени мало, стоит определить для начала для чего нужен асм, если в целом для программирования на асм, то лучше The Art of Assembly Language, 2nd Edition Randall Hyde пока ничего не находил, если для отладки, то куда быстрее будет заняться реверсом, а так же иметь под рукой документацию по асму, решать всякие crackme/keygenme, для начала даже можно самому компилировать простые программки, учиться по ним читать и понимать асм.
  11. Навряд ли, скорее просто проверка инициализировалась ли память под структуру нового предмета. Во-первых обратить внимание на то, как происходит подбор, если без касания к предмету(т.е. гг проезжает мимо и лут собирается) это идеальные условия. Для начала стоит попробовать более простой способ поиска, например, попытаться найти дистанцию между предметом и гг. Если такое значение найдется, считай 75% дела уже сделано и останется как по учебнику повесить бряк на доступ и после подобрать предмет, таким образом ты найдешь инструкцию, которая сравнивает дистанцию между предметами, и если она меньше определенного статического значения, то будет подбор. А дальше на любителя, либо отключить проверку, чтобы подбор было по всей локации, либо увеличить дистанцию.
  12. Функция принимает D3DXVECTOR3, а ты передаешь ей float Так же, твой Vector2D является Vec3, а возвращаемое значение WorldToScreen имеет тип D3DXVECTOR2. Написать перегрузку WorldToScreen, судя по исходникам с этим не должно возникнуть проблем. Или написать шаблон WorldToScreen.
  13. Потому что эта функция может использоваться любыми программами и даже системой, если что пойдет не так будут проблемы. Да и это достаточно глупо, можно сравнить например, вот возникла трещина в кости, а врачи вместо гипса, конечность отрезали, по сути проблема решена, но стоило ли оно того. Вот и тут так же, поэтому прежде чем что-то внедрять в winapi надо понимать последствия и на их основе уже оценивать необходимость такого подхода.
  14. Мне кажется она будет бесполезна на memcmp, возможно, memcmp будет использоваться какой-нибудь из программ из-за чего трейс будет постоянно не того что нужно, лучше по стеку руками пройтись и в заметках восстановить все.
  15. Если нужны данные, просто выходишь по стеку вызовов на пользовательский код, там вешаешь скрипт и перехватываешь нужные буферы, которые передаются в функцию memcmp как аргументы, регистрируешь глобально символы на них, а дальше делаешь с ними что хочешь, например дамп всех значений в блоке, через lua. Хотя лучше потратить чуть больше времени, и восстановить алгоритм получения указателей на блоки, хотя бы до инструкции работающей с массивами и уже на этом куске кода вешать скрипт.
  16. Чем придумывать велосипед из палок и грязи, просто проиндексируй массив и обращайся к значениям по их индексу. Оу, поспешил, вы что тут вообще творите? Это ведь WinAPi выйди по стеку в пользовательский код и уже там сравнивай. За внедрение кода в winapi обычно по рукам бьют. И код ничего не пишет, уж это можно было загуглить.
  17. Это не будет работать без описания перегрузки, типа
  18. Нет, мне кажется даже глупо спрашивать о таком. Язык лишь инструмент автоматизации, а не супер-пупер инструмент позволяющий взламывать игры. В интернете их полно, тем более для CSS, каждый кому не лень пишет и выкладывает esp. Первый результат в поиске. Не самый разумный подход, если есть желания и дальше продолжать в этой области, надо знать возможности языка, чтобы использовать именно так как тебе нужно. А если это спонтанное желание у которого нет будущего, то проще посмотреть на исходники читов на гитхабе и не тратить впустую время. И с чего у всех какие-то странные временные отрезки по изучению языка в 5 лет, тот же C++ и за 10 лет выучить не удастся, и изучить все его возможности.
  19. 4C 8B 35 это конструкция mov r14, [rip] или mov r14, cs:[0], следующие 4 байта, указывают на смещение относительно этой инструкции.
  20. Не загоняйся по ерунде, на практике все равно будешь использовать 5-10 основных опкодов и инструкций, плюс есть утилиты и онлайн дизассемблеры, где можно посмотреть байты и какие инструкции они представляют для любой архитектуры, если уж так сильно захочется.. это двойной опкод, С6 87 - mov byte rdi, в таблице интеловских доков написано ведь.
  21. Для того чтобы читать табличку, советую использовать интеловские доки (глава 3) там объясняется, что все это значит. Да и вообще интеловские доки, являются некой библией для каждого реверсера, так что, если думаешь серьезно заняться реверсом, советую прочитать их и использовать как справочник.
×
×
  • Создать...

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

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