-
Постов
76 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные KRYPTOPUNK
-
-
Эта ошибка означает, что ты выходишь за границы массива где-то, как бы логично это не звучало.
Пройдись с отладчиком по этой функции и узнаешь, где проблема. -
13 часов назад, stcik сказал:
с чего и как лучше учить этот язык и сколько примерно времени на это уйдёт?
Начать лучше с курса SimpleCode на ютубе "Основы C++"
Времени уйдет много. Так как после синтаксиса самого языка нужно будет (да, будет нужно), изучать STL, WinApi, всякие boost'ы, DirectX'ы и прочие библиотеки.
И выучить все невозможно, ты всегда будешь узнавать что-то новое, ошибаться, пытаться вновь и так далее. Практики много нужно к тому-же.- 1
-
KatanaZero Trainer
Просмотр файла
Трейнер для игры Katana Zero. Актуален в версии игры 1.0.5
Функционал:СпойлерNUMPAD1 -- моментальное прохождение уровня
NUMPAD2 -- установление максимального значения таймера
NUMPAD3 -- GodMode или NoCollision, кому как угодно. Включается и выключается на одну и ту же кнопку. ВНИМАНИЕ! НЕ РАБОТАЕТ НА ЛУЧАХ
F4 -- сохранить позицию
F5 -- восстановить позицию
F9 -- выгрузить DLLКак пользоваться:
СпойлерОткрываем игру
Открываем "kryptoZERO.exe"
Читаем, что там написано
Если все хорошо, играем
Не переименовывайте, не удаляйте и не переносите никуда .dll
Так же после смены уровня и смерти нужно будет нажать NUMPAD0 для обновления указателя на игрока
Пароль от архиваСпойлерgamehacklab.ru
Отдельное спасибо @imaginary за подсказки.
Спасибо за внимание, приятной игры!
-
Добавил
-
Добавлено18.03.2021
-
Категория
- 1
-
-
2 минуты назад, DarthHerohito сказал:
Где научиться?
Ты троллишь что-ли? Тут целый форум об этом, а ты "где научиться?"
-
8 минут назад, DarthHerohito сказал:
А где бесплатно получить?
В центре гуманитарной помощи, естественно
- 1
-
12 часов назад, MasterGH сказал:
когда давно есть режим сбори il2cpp, превращая код в C++. Там уже никакой Mono Dissector не должен работать.
Для таких случаев есть дампер. Он создает dll-ки, которые помещаются в GameAssembly.dll и открываются в dnSpy. Так же создает скрипты для IDA и GHIDRA. Классная вещь, в общем.
Правда там нет реализации функций почти, но, для нас они в принципе и не важны. А для перехвата/вызова и прочей работы хватает всего, что он дает.- 1
- 2
- 1
-
Используй DBVM. Античит не даст тебе сканировать память стандартными способами.
А с DBVM получается. Даже, вроде, насколько я помню, не отключает от игры. -
В 30.12.2020 в 18:49, DieVis сказал:
А чтобы понять что значат подобные не понятные слова, нужно изучать asm? Или есть что-то по проще?
INC
Инкремент
DEC
Декремент
Инкремент -- прибавление на единицу
Декремент -- уменьшение на единицу.
А зачем, собственно, тебе asm учить? Ты на нем что-то серьезное писать собрался? Для того, что бы писать скрипты в CE достаточно несколько опкодов знать. Ну и принцип работы стека. Всё. Этого хватит с головой. -
Я ж тебе в личные сообщения уже ответил, как это сделать. Посмотри другие функции, читающие адрес (именно начало структуры игрока), может, в этом дело.
-
еще видовые матрицы делятся на два типа: Column-major и Row-major.
Если матрица в игре Row-major, то значения в ней так и идут: x11,x12,x13,x14 и так далее. Но могут быть и Column-major, значения в ней пойдут уже так: x11,x21,x31,x41 и так далее. Нужно это так же учитывать.
Для ознакомления: https://en.wikipedia.org/wiki/Row-_and_column-major_order -
33 минуты назад, Antonshka сказал:
Неужто игра хранит где-либо продублированный файл и при запуске проверяет его схожесть с этим. Или Hex Editor затрагивает какую-нибудь другую информацию, которая не видна в самом Hex Editor, например время создания файла или еще чего.
Хеш-сумму файлов сохранения может где-то хранить. Поэтому лучше все манипуляции производить в оперативной памяти
-
Очень туманно ты всё объяснил, конечно. Листинг из дизассемблера и/или псевдокод немного помогли бы понять суть проблемы. Из того, что ты описал, имеется возможность занопить операторы сравнения или операторы присваивания при прохождении проверки. Или нет?
-
Сайты, которые полезно будет почитать, если все таки займешься подобным: r0 crew, guidedhacking и secret club.
А вообще, написание вирусов не рентабельная тема, по крайней мере если не в корпоративных масштабах. А такой информацией в паблике никто сорить не будет. Изучай сам всё, начиная от процессорных уязвимостей и до работы операционных систем. Да и ратниками уже никого не напугаешь, такие дела. -
Не проще по указателям найти?
-
Так зачем тебе это в .dll делать? Во внутреннем адресном пространстве использовать WriteProcessMemory просто нет необходимости, это как раз таки код для exe-шника. И да, не скрипт, а код на языке C++
-
Не уверен, но у тебя цикл ограничен тремя проходами, а игроки могут быть по другому смещению, насколько я знаю, в сурсе так и есть, поэтому имеет смысл сделать больше проходов и просто сделать валидацию.
UPD: А, я немного неверно прочитал исходный код, вроде бы по коду всё правильно, попробуй другое смещение до PlayerList'a или увеличь/уменьши playersCount, не уверен, что поможет, но попробуй -
Как можно попробовать обойти античит -- не использовать Cheat Engine/собрать свой Cheat Engine, использовать ScyllaHide+x32/x64dbg, попробовать отключить античит поиском потоков или внешних процессов(если не kernel), написать драйвер и через IOCTL читать/писать в память(если kernel)
-
Открыл репозиторий на гитхабе с исходником данного трейнера, кому интересно или кто хочет взяться поддерживать/допиливать, прошу:
https://github.com/KRYPTOPUNK/RiskOfRain2_hack -
А что я должен тебе ответить, если этим советом я пользуюсь сам каждый раз, как мне что-то нужно сделать с игрой? Почему ты думаешь, что у тебя будет по другому или легче? Откуда такая уверенность?
-
Ну так пожалуйста, берешь ReClass и реверсишь структуры, видишь что значения/типы повторяются, значит структура закончилась, в чем проблема то?
-
К сожалению, такой волшебной кнопочки нет. Или я о ней не знаю. А так, конец структуры видно легко, там либо начинается мусор типа 0xFFFFFF, либо нули. Как-то так.
-
Смотри, класс Control в BLOCKPOST выглядит следующим образом:
Спойлерclass Control { public: char pad_0000[12]; //0x0000 float cl_fps; //0x000C char pad_0010[12]; //0x0010 float default_speed; //0x001C float speed; //0x0020 float camheight; //0x0024 float boxheight; //0x0028 float zombieslowdown; //0x002C bool inSlow; //0x0030 bool invertmouse; //0x0031 char pad_0032[2]; //0x0032 float sens; //0x0034 float zoomsens; //0x0038 float rx; //0x003C float ry; //0x0040 float movex; //0x0044 float movez; //0x0048 float radius; //0x004C uint32_t cl_time; //0x0050 uint32_t sv_time; //0x0054 uint32_t ping; //0x0058 float fcl_time; //0x005C int32_t prevweaponinput; //0x0060 int32_t currweaponinput; //0x0064 char pad_0068[48]; //0x0068 Vector3 Velocity; //0x0098 Vector3 Vel; //0x00A4 bool inDuckKey; //0x00B0 bool inJumpKey; //0x00B1 bool inJumpPressed; //0x00B2 bool inDuck; //0x00B3 bool inAir; //0x00B4 bool inAttack; //0x00B5 bool inZoom; //0x00B6 bool inReload; //0x00B7 bool inStuck; //0x00B8 bool lockMove; //0x00B9 bool lockLook; //0x00BA bool lockAttack; //0x00BB bool manualAttack; //0x00BC char pad_00BD[3]; //0x00BD int32_t burstAttack; //0x00C0 float tBurstAttack; //0x00C4 int32_t specid; //0x00C8 Vector3 prevPos; //0x00CC Vector3 nextPos; //0x00D8 int32_t inAirFrame; //0x00E4 bool freefly; //0x00E8 char pad_00E9[3]; //0x00E9 int32_t buildmode; //0x00EC int32_t toolmode; //0x00F0 float currCamheight; //0x00F4 Vector3 currPos; //0x00F8 Vector3 Pos; //0x0104 float fcurrFrame; //0x0110 float fnextFrame; //0x0114 float fdeltatime; //0x0118 float specialtime_start; //0x011C float specialtime_end; //0x0120 float specialtime_duration; //0x0124 bool inFreeze; //0x0128 char pad_0129[3]; //0x0129 float tFreeze; //0x012C int32_t iFreeze; //0x0130 int32_t demoidx; //0x0134 class PlayerData *pl; //0x0138 char pad_013C[84]; //0x013C float reload_start; //0x0190 float reload_end; //0x0194 float reload_end_msg; //0x0198 int32_t reload_count; //0x019C float reload_active; //0x01A0 float reload_result; //0x01A4 float reload_forcept; //0x01A8 Vector3 blockCursor; //0x01AC Vector3 nullvec; //0x01B8 }; //Size: 0x01C4
Класс PlayerData так:
Спойлерclass PlayerData { public: char pad_0000[16]; //0x0000 int32_t idx; //0x0010 int32_t team; //0x0014 char *name; //0x0018 char *formatname; //0x001C int32_t clanid; //0x0020 char pad_0024[4]; //0x0024 int32_t health; //0x0028 int32_t skinstate; //0x002C char pad_0030[4]; //0x0030 Vector3 prevPos; //0x0034 char pad_0040[4]; //0x0040 Vector3 curPos; //0x0044 char pad_0050[28]; //0x0050 float nextFrame; //0x006C char pad_0070[16]; //0x0070 float tM; //0x0080 class WeaponData *currweapon; //0x0084 char pad_0088[8]; //0x0088 int32_t currset; //0x0090 char pad_0094[176]; //0x0094 int32_t wstate; //0x0144 int32_t bstate; //0x0148 int32_t lf; //0x014C int32_t la; //0x0150 float leg_limit; //0x0154 char pad_0158[4]; //0x0158 int32_t frameWaterSplash; //0x015C float tWaterSplash; //0x0160 float yWaterSplash; //0x0164 float speed; //0x0168 float drawtime; //0x016C char pad_0170[12]; //0x0170 int32_t exp; //0x017C char pad_0180[12]; //0x0180 int32_t pexp; //0x018C char pad_0190[4]; //0x0190 float spawntime; //0x0194 bool spawnprotect; //0x0198 char pad_0199[3]; //0x0199 char (*cp)[10][4]; //0x019C Vector3 restoreHead; //0x01A0 Vector3 restoreLArm; //0x01AC Vector3 restoreRArm; //0x01B8 int32_t ipx; //0x01C4 int32_t ipy; //0x01C8 int32_t ipz; //0x01CC int32_t irx; //0x01D0 int32_t iry; //0x01D4 int32_t prevbstate; //0x01D8 bool updatepos; //0x01DC bool updaterotx; //0x01DD bool updateroty; //0x01DE bool visible; //0x01DF char (*fragcount)[5][4]; //0x01E0 char pad_01E4[28]; //0x01E4 float tHeartBeat; //0x0200 char pad_0204[4]; //0x0204 }; //Size: 0x0208
В твоей игре все практически аналогично, я её смотрел, но файлы к сожалению не сохранились. Так вот, изучи то, что я тебе предоставил, и подумай, как ты можешь выйти на структуру в своей игре, и что с ней в итоге делать. И да, присоединяюсь к замечанию @Xipho, и скажу, что можно использовать Mono, это существенно ускоряет процесс, но так же можно попробовать и без него. Удачи в начинаниях.
- 2
-
3 часа назад, Mefedroman сказал:
Я возможно очень наглый, но правда, если ты можешь, то пожалуйста запиши видео, как ты это делаешь, у меня почему-то не получается, я нашел указатель да, но когда я создаю структуру и пытаюсь получать оффсет локального игрока, то в структуре все в разнобой и не понятно, что где, вот к примеру, в CS все упорядоченно, находишь значение хп, указатель, дальше структура и вот у тебя уже практически все, что нужно.
Ты вообще понимаешь, что такое структура? Какие оффсеты ты пытаешься получить? Что такое "оффсет локального игрока"? Ты понимаешь, о чем ты вообще говоришь, или все таки тебе нужно подучить основы?
- 1
-
Привет. Вообще, не знаю, почему у тебя с этим проблемы, я делал чит для другой игры очень похожей на Unity, называется BLOCKPOST, да и на Блокаду я тоже спокойно все находил автоматическим поиском указателей CE. Да, долго, да, указатель может отвалиться в любой момент, но все работало по итогу. Какие конкретно трудности тебя смущают, можешь их назвать?
5 часов назад, Mefedroman сказал:то это абсолютно не нужная информация, а знающий человек найдет все, что я нашел за одну секунду
Проблема в том, что помощь нужна тебе, а не нам. Так что это в твоих интересах, что бы ты предоставил всю информацию, что у тебя есть, что бы знающие сего форума не прошли мимо. Никто за тебя ничего делать не будет.
[Dishonored2] Не получается добраться до конечного значения по цепочке указателей
in Высокоуровневое программирование
Опубликовано
Зачем ты вручную читаешь адрес, если это можно сделать в цикле, решительно не понятно.
Сделай через цикл. Что-то вида:
только переделай под то, что у тебя external трейнер и всё.