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