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

keng

Ветераны
  • Постов

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

  • Посещение

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

    55

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

  1. keng

    TrainMe by RisimO lvl.0

    /*---------------------------------------------------------------------------*/ Привет! Я потыкал, увидел пакер, потыкал его. Не люблю пакеры, ибо это получается unpackme, а не trainme. Вообще, честно сказать, не вижу особого смысла в таких программах. /*---------------------------------------------------------------------------*/
  2. /*---------------------------------------------------------------------------*/ Тэк-с. Давай я немного освобожусь (ремонт дома делаю, мусор убираю) и через полчасика напишу, с чего начать. Сделаем окошко шаг за шагом, а дальше уже картинку будем выводить. /*---------------------------------------------------------------------------*/
  3. /*---------------------------------------------------------------------------*/ Привет! Для начала, ты не привёл ни строчки кода, в котором сидел и пытался, глядя в жуткий мсдн, залепить на окошко картинку. У всех сразу же возникло противное подозрение, будто нужно написать весь код за тебя, а этого никто не любит и делать не собирается, иначе тема звучала бы как "Помогите сделать окно на C++". Следовательно, что? Верно. Давай пойдём по порядку и напишем код создания простого окна. /*---------------------------------------------------------------------------*/
  4. /*---------------------------------------------------------------------------*/ Попробуй: HWND hwnd = FindWindowA("0", "asdfg"); И проверь в свойствах проекта, как он относится к юникоду. /*---------------------------------------------------------------------------*/
  5. /*---------------------------------------------------------------------------*/ Если игра может различить игрока от врага, то в её коде это указано. Исключений не бывает. Просто посиди подольше и поищи как следует. /*---------------------------------------------------------------------------*/
  6. /*---------------------------------------------------------------------------*/ Привет! В комплекте с Cheat Engine в той же папочке валяется Tutorial.exe. Это программка-обучалка работе с CE, в которой рассматривается в том числе и работа со структурами. Пройди её, она крутая, весёлая и полезная, ещё и с авторскими объяснениями. Там есть и работа со структурами. Оригинал - на английском, но можно поискать и на русском. /*---------------------------------------------------------------------------*/
  7. /*---------------------------------------------------------------------------*/ Ты можешь посмотреть у меня в уроках, как это на C# делается. Принцип абсолютно тот же самый, различий между ним и C++ там минимум - только в синтаксисе. /*---------------------------------------------------------------------------*/
  8. /*---------------------------------------------------------------------------*/ С чтением указателей вся фишка в том, что их нужно читать по очереди. Типа, есть цепочка: 0x1234567 + 0x12 + 0x15 + 0x20 = значение. Порядок такой: 1. Прочитали 0x1234567 - там будет лежать адрес. 2. Прибавили к прочитанному адресу 0x12 (первое смещение) - получили новый адрес. 3. Прочитали значение нового адреса - опять получаем адрес. 4. Прибавили к новому прочитанному адресу второе смещение (0x15), опять получили новый адрес. 5. Прочитали. 6. Прибавили. 7. Прочитали. 8. Смещения кончились - значит мы прочитали уже значение указателя, а не очередной его адрес из цепочки. /*---------------------------------------------------------------------------*/
  9. /*---------------------------------------------------------------------------*/ RPM читает в свой третий аргумент: _Out_ LPVOID lpBuffer, Указатель искать нужно каким-нибудь сканером памяти, вроде Cheat Engine, или же я тебя неправильно понял. /*---------------------------------------------------------------------------*/
  10. /*---------------------------------------------------------------------------*/ Привет! Есть две функции - [WriteProcessMemory] и [ReadProcessMemory]. Первая, значит, пишет в память, а вторая её читает. В аргументах разобраться достаточно просто, нужен хэндл целевого процесса, откуда читать\писать будешь, адрес (адресного пространства процесса), куда будешь писать\читать, буфер, что писать или в который читать, да и всё, в общем-то. Как найти хэндл процесса я объяснять сейчас не буду, это ещё проще. Поясню немного разве что про чтение указателей. Допустим, тебе нужно прочитать указатель (возьму твой пример): 1. Читаешь "CPed + B6F5C0", получаешь DWORD (4 байта, адрес). 2. Прибавляешь к нему 0x30, т.е. смещение. 3. Читаешь ещё раз получившееся, опять получаешь DWORD. 4. Когда смещения кончились, ты прочитал уже значение - приводишь его к нужному типу. Т.е. прочитал адрес, прибавил смещение, прочитал, прибавил следующее, прочитал и так далее, пока не прочитал уже само значение указателя. Примеры есть на форуме (на плюсах - от [Coder], на шарпе можно у меня поискать (ссылка в подписи или в местном разделе видео). Как-то так. /*---------------------------------------------------------------------------*/
  11. /*---------------------------------------------------------------------------*/ Надо внимательнее писать код. Буковка "u" означает "unsigned", с английского - беззнаковый. IntPtr - Integer Pointer - знаковый указатель, UIntPtr - Unsigned Integer Pointer - беззнаковый указатель. WriteProcessMemory от тебя требует IntPtr, а ты перепутал буковку. Если не уверен, то всякий раз сверяйся с [pinvoke.net]. В частности, там я и брал все описания функций для своих видеоуроков. PS: 1001-е сообщение на форуме, уии! /*---------------------------------------------------------------------------*/
  12. /*---------------------------------------------------------------------------*/ Привет! Разгрёб работу, нашлось время - вот и решил заглянуть. Автору - не забивай лучше себе голову крутыми дизассемблерами и прочим, а почитай, как отлаживаются программы при помощи Olly Debugger. Там же найдёшь и ответ на свой вопрос, если сядешь и чуток подумаешь. /*---------------------------------------------------------------------------*/
  13. /*---------------------------------------------------------------------------*/ В моих, вроде как, нет, но планируется. По поводу программ - наверняка есть, но когда ты можешь написать такую программу, то обычно проще\быстрее получается руками отладить. /*---------------------------------------------------------------------------*/
  14. /*---------------------------------------------------------------------------*/ Находят что-то, относящееся к этому адресу, а дальше читают\отлаживают код. /*---------------------------------------------------------------------------*/
  15. /*---------------------------------------------------------------------------*/ В чужом трейнере можно посмотреть, что записывается и по какому адресу, а вот как автор до такой жизни этого дошёл - нет. Лучше спроси на форуме, как делается та или иная опция, если не в общих чертах - то на примере конкретной игры, может у кого-нибудь найдётся время. /*---------------------------------------------------------------------------*/
  16. /*---------------------------------------------------------------------------*/ Привет! DXHook.h: class DirectFunctions { public: HRESULT WINAPI temporaly_EndScene(LPDIRECT3DDEVICE9 pDevice); }; /*---------------------------------------------------------------------------*/
  17. /*---------------------------------------------------------------------------*/ 0. Делать так без разрешения автора - плохо. 1. У автора можно попросить скрипты \ адреса \ таблицу Cheat Engine (да хоть исходники движка трейнера, на самом деле). 2. Если пункты 0 и 1 не сработали, а совесть позволяет, то вариантом становится отладчик. /*---------------------------------------------------------------------------*/
  18. Это, внезапно, тот же сканер сигнатур. Исходники даже на форуме есть. Всё - на чистом WinAPI. Найди и вперёд.
  19. Насколько я помню, это цифры от 1 до 16, в зависимости от слота. Т.е. если карта на 4 игрока, то самый верхний слот - 1, следующий - 2 и т.д. Но это я ломал графику (урок про создание мапхака). В принципе, значение может быть и зашифровано, как и почти всё в этой игре.
  20. Ежели что, у меня есть видео и по ручному поиску и по автоматическому сканеру. Интеренсно, зачем искать статический адрес подобных вещей, которые никогда не меняются.
  21. Чуваки, откуда вы тут вообще про DMA удумали? Делаешь в трейнере таймер, в таймере проверяешь, есть ли процесс игры. Если есть - ставишь какой-нибудь gameIsActive = true, если нет - то false.
  22. Ну я же тебе описал механику. Расширяется перекрестие прицела? Шикарно же. Представь, что суженное перекрестие - это float 0, а расширенное - это 1. Вот тебе и увеличилось\уменьшилось. Найти можно абсолютно любое значение, просто нужно понять механику работы игры.
×
×
  • Создать...

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

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