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

KRYPTOPUNK

Разработчики
  • Постов

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

  • Посещение

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

    9

Сообщения, опубликованные KRYPTOPUNK

  1. Зачем ты вручную читаешь адрес, если это можно сделать в цикле, решительно не понятно.
    Сделай через цикл. Что-то вида:

    Спойлер
    
    unsigned FindAddressByOffset(unsigned baseaddr, std::vector<unsigned>& offsets)
    {	
    	unsigned final_address = baseaddr;
    	for (auto el : offsets)
    	{
    		
    		__try {
    			final_address = *reinterpret_cast<unsigned*>(final_address);
    			final_address += el;
    		}
    		__except (EXCEPTION_EXECUTE_HANDLER) {
    			return 0;
    		}
    
    
    
    	}
    	return final_address;
    }

    только переделай под то, что у тебя external трейнер и всё. 

  2. 13 часов назад, stcik сказал:

    с чего и как лучше учить этот язык и сколько примерно времени на это уйдёт?

     

    Начать лучше с курса SimpleCode на ютубе "Основы C++"
    Времени уйдет много. Так как после синтаксиса самого языка нужно будет (да, будет нужно), изучать STL, WinApi, всякие boost'ы, DirectX'ы и прочие библиотеки. 
    И выучить все невозможно, ты всегда будешь узнавать что-то новое, ошибаться, пытаться вновь и так далее. Практики много нужно к тому-же.

    • Понравилось 1
  3. KatanaZero Trainer

    Просмотр файла

    Трейнер для игры Katana Zero. Актуален в версии игры 1.0.5
    Функционал:

    Спойлер

    NUMPAD1 -- моментальное прохождение уровня
    NUMPAD2 -- установление максимального значения таймера
    NUMPAD3 -- GodMode или NoCollision, кому как угодно. Включается и выключается на одну и ту же кнопку.   ВНИМАНИЕ! НЕ РАБОТАЕТ НА ЛУЧАХ
    F4 -- сохранить позицию
    F5 -- восстановить позицию
    F9 -- выгрузить DLL

    Как пользоваться:

    Спойлер

    Открываем игру
    Открываем "kryptoZERO.exe"
    Читаем, что там написано
    Если все хорошо, играем
    Не переименовывайте, не удаляйте и не переносите никуда .dll

    Так же после смены уровня и смерти нужно будет нажать NUMPAD0 для обновления указателя на игрока


    Пароль от архива

    Спойлер

    gamehacklab.ru


    Отдельное спасибо @imaginary за подсказки.
    Спасибо за внимание, приятной игры!


     

    • Плюс 1
  4. 12 часов назад, MasterGH сказал:

    когда давно есть режим сбори il2cpp, превращая код в C++. Там уже никакой Mono Dissector не должен работать.

    Для таких случаев есть дампер. Он создает dll-ки, которые помещаются в GameAssembly.dll и открываются в dnSpy. Так же создает скрипты для IDA и GHIDRA. Классная вещь, в общем. 
    Правда там нет реализации функций почти, но, для нас они в принципе и не важны. А для перехвата/вызова и прочей работы хватает всего, что он дает. 

    • Понравилось 1
    • Спасибо 2
    • Плюс 1
  5. В 30.12.2020 в 18:49, DieVis сказал:

    А чтобы понять что значат подобные не понятные слова, нужно изучать asm? Или есть что-то по проще?

    INC

    Инкремент

    DEC

    Декремент

    Инкремент -- прибавление на единицу
    Декремент -- уменьшение на единицу.

    А зачем, собственно, тебе asm учить? Ты на нем что-то серьезное писать собрался? Для того, что бы писать скрипты в CE достаточно несколько опкодов знать. Ну и принцип работы стека. Всё. Этого хватит с головой.

  6. еще видовые матрицы делятся на два типа: 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

  7. 33 минуты назад, Antonshka сказал:

    Неужто игра хранит где-либо продублированный файл и при запуске проверяет его схожесть с этим. Или Hex Editor затрагивает какую-нибудь другую информацию, которая не видна в самом Hex Editor, например время создания файла или еще чего.

    Хеш-сумму файлов сохранения может где-то хранить. Поэтому лучше все манипуляции производить в оперативной памяти

  8. Очень туманно ты всё объяснил, конечно. Листинг из дизассемблера и/или псевдокод немного помогли бы понять суть проблемы. Из того, что ты описал, имеется возможность занопить операторы сравнения или операторы присваивания при прохождении проверки. Или нет? 

  9. Сайты, которые полезно будет почитать, если все таки займешься подобным: r0 crew, guidedhacking и secret club.
    А вообще, написание вирусов не рентабельная тема, по крайней мере если не в корпоративных масштабах. А такой информацией в паблике никто сорить не будет. Изучай сам всё, начиная от процессорных уязвимостей и до работы операционных систем. Да и ратниками уже никого не напугаешь, такие дела. 

  10. Не уверен, но у тебя цикл ограничен тремя проходами, а игроки могут быть по другому смещению, насколько я знаю, в сурсе так и есть, поэтому имеет смысл сделать больше проходов и просто сделать валидацию.

    UPD: А, я немного неверно прочитал исходный код, вроде бы по коду всё правильно, попробуй другое смещение до PlayerList'a или увеличь/уменьши playersCount, не уверен, что поможет, но попробуй

  11. Как можно попробовать обойти античит -- не использовать Cheat Engine/собрать свой Cheat Engine, использовать ScyllaHide+x32/x64dbg, попробовать отключить античит поиском потоков или внешних процессов(если не kernel), написать драйвер и через IOCTL читать/писать в память(если kernel)

  12. Смотри, класс 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
  13. 3 часа назад, Mefedroman сказал:

    Я возможно очень наглый, но правда, если ты можешь, то пожалуйста запиши видео, как ты это делаешь, у меня почему-то не получается, я нашел указатель да, но когда я создаю структуру и пытаюсь получать оффсет локального игрока, то в структуре все в разнобой и не понятно, что где, вот к примеру, в CS все упорядоченно, находишь значение хп, указатель, дальше структура и вот у тебя уже практически все, что нужно.

    Ты вообще понимаешь, что такое структура? Какие оффсеты ты пытаешься получить? Что такое "оффсет локального игрока"? Ты понимаешь, о чем ты вообще говоришь, или все таки тебе нужно подучить основы? 

    • Плюс 1
  14. Привет. Вообще, не знаю, почему у тебя с этим проблемы, я делал чит для другой игры очень похожей на Unity, называется BLOCKPOST, да и на Блокаду я тоже спокойно все находил автоматическим поиском указателей CE. Да, долго, да, указатель может отвалиться в любой момент, но все работало по итогу. Какие конкретно трудности тебя смущают, можешь их назвать? 

    5 часов назад, Mefedroman сказал:

    то это абсолютно не нужная информация, а знающий человек найдет все, что я нашел за одну секунду

    Проблема в том, что помощь нужна тебе, а не нам. Так что это в твоих интересах, что бы ты предоставил всю информацию, что у тебя есть, что бы знающие сего форума не прошли мимо. Никто за тебя ничего делать не будет. 

×
×
  • Создать...

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

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