mrPTyshnik
-
Постов
79 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные mrPTyshnik
-
-
"Find out what writes to this address" если это не данные, а код который исполняется, думаю тут ничего отображаться и не будет.
Надо реверсить игру, смотреть как работает код который ты патчишь -
Если ты при вызове хука каждый раз патчишь функцию, то проблемы могут возникнуть даже без выгрузки, а например когда 2 и более потока вызывают хукнутую функцию
Но если ты устанавливаешь хук так:
1) Определить длины начальных инструкций в целевой функции через дизассемблер длин2) Выделить буфер под трамплин и настроить его: скопировать байты из проанализированной функции в конец буфера с трамплином. Настроить адрес функции myDllFunc и рассчитать адрес прыжка в тело оригинальной функции с учетом скопированных байтов.
3) Заменить скопированные байты в оригинальной функции для прыжка на трамплин
тело трамплина:trampoline: call myDllFunc(); orig_intructions jmp original_func_addr+sizeof(orig_intructions)
То проблем быть не должно
-
Чтобы сделать сигнатуру, тебе одного CE хватит за глаза
-
В 15.04.2020 в 16:36, edx сказал:
Чего я не так делаю?
1) найди код в игре который вызывает эту функцию и хорошенько присмотрись
2) через asm вставки(если работаешь на x32) ИЛИ через отдельный *.asm файл(если в x64) повтори один в один вызов этой функции из своей DLLПараметры функции могут передаваться через стек, а могут через регистры. Возможно ты что-то упускаешь
+ Еще вариант:
Поставь бряк на эту функцию и посмотри как туда передаются параметры с реальными данными когда сама игра вызывает эту функцию -
но лучше конечно использовать инжектируемую библиотеку в процесс.
По поводу передачи данных - обычный FileMapping
1) Создаешь FileMapping в основном приложении
2) При инжекте, инжектируемая dll открывает этот FileMapping
3) Читаешь/пишешь в цикле, тут главное согласовать структуры данных, например:
typedef struct MyRedneckProtocol {BYTE ControlCode;
Vector3 Coord1;Vector3 Coord2;
int resultCode;}
эта структуру одинакова в dll и в основном приложении.
Метод грубый и лучше бы конечно использовать пайп.
-
Попробуй ScyllaHide
-
uses CheatsHolder_FULL; begin WriteLn( CryptSign('90 90 90 90 90 90 90 90 90', 'AnyConst'));//получаем шифрованное значение - JniLo^|t1wy3xnc}A^?C_wsdJn //расшифровываем: WriteLn( DecryptSign('JniLo^|t1wy3xnc}A^?C_wsdJn', 'AnyConst'));//выведет 90 90 90 90 90 90 o0 90 90 ReadLn; end.
в реальном трейнере необходимо оставить только часть которая расшифровывает сигнатуру(строку):uses CheatsHolder_FULL; begin WriteLn( DecryptSign('JniLo^|t1wy3xnc}A^?C_wsdJn', 'AnyConst'));//вывод на экран 90 90 90 90 90 90 o0 90 90 ReadLn; end.
DecryptSign с байтами FF FF работает некорректно, в расшифрованной строке аномалии(если будешь использовать, придется фиксить)
Ну и приглядитесь к выводу "90 90 90 90 90 90 o0 90 90" ? -
-
Канал Кенга (https://www.youtube.com/channel/UCmyAh5Rwmr-migt1SyVd5Mw) тоже выпилили
Возможные аналоги для просвещения народа: https://vimeo.com , https://viuly.io
канал Dmitry K. пока держится -
5 минут назад, Senpai сказал:
https://cloud.mail.ru/public/5XUN/Nm3JbMGn4 этот юзал инжектор? (там сурс)
Инжектор собрал из этого сорца, верно
Если ты собирал инжектор под x64 то в D7 нету возможности компилить под x64 - отсюда невозможность загрузить либу - так я думал пока не столкнулся с проблемой загрузки твой x32 библиотеки в x32 процесс(любой). Хотя библиотеки, которые собирал я у себя(под x32 и под x64) в DLP 10.2 Berlin работают отлично при таком инжекте.
Отсюда вытекает:
Скорее всего настройки компилятора D7 надо рытьПри инжекте твоей либы попытка вызова адреса 0D9646B0
-
скомпилил инжектор x64 Release (VS 2017)
скомпилил твой код для DLP x64 Release (DLP 10.2)
внедрил в RustClient.exe(x64) -
защита от отладки некст ген
-
1) читать через системные процессы которые имеют хендл с нужными правами(system, svchost.exe, lsass.exe, csrss.exe)
2) каким-то образом загрузить либу в процесс и читать напрямую
3) драйвера(свой или юзать уязвимые). Тут много вариаций:
MmCopyVirtualMemory
KeStackAttachProcess + RtlCopyMemoryMmMapIoSpace
Замаппить в юзермод приложение \Device\PhysicalMemory ну или просто изменить header_Object у этого объекта чтобы из юзера можно было бы открыть.
Скорее всего, на Win8 + эти RPM/WPM никак не трогают(я имею ввиду нету ядерных хуков, так как KPP). Возможно ставят каллбак на открытие процесса ->> OpenProcess не имеет должных привилегий, поэтому и RPM/WPM не могут работать.
Можно нейтрализовать калбеки и вызывать функции без проблем, либо из драйвера(своего или чужого) получить хендл для процесса игры с нужными правами(в идеале с PROCESS_ALL_ACCESS) и спокойно работать(malwarefox driver) - хоть и не так безопасно. -
7 часов назад, partoftheworlD сказал:
привет 2007 год. Сейчас у большинства мультиплеерных игр файлы подписываются цифровой подписью.
Не могу понять, причем здесь это. Речь шла о подмене dll которая не разрабатывается крайтековцами, а именно ddraw.dll. То есть, подмена системной библиотеки которая не имеет цифровой подписи.
Такой метод работает и его продают. Могу предположить что MailRuALLOWCheat проверяет по имени либу и пропускает дальше. А могли бы запоминать хеши оригинала и проверять при старте.- 1
-
Недавно в телеге YCT слили один "приват". Суть обхода этого "привата" - как говорил один классик "надо что бы игра грузила dll-ки читов как свои" ?. Це методика имеет название dll-hijacking. Переименовываешь либу хака в ddraw.dll и кладешь рядом с игрой Warface\Bin32Release, запуск. Мб уже пофиксили, пробуй
-
1 минуту назад, maks17990 сказал:
Подскажи как мне его найти то что меня интересует через что именно искать через Cheat Engine или же dnSpy
ахахах
а я откуда могу знать что тебя интересует?
Мб ты хочешь свою еспу, а мб просто взлом монеток, или же сниф, или же подгрузить в игру своих моделей и текстур.
Дальше сам -
12 минут назад, maks17990 сказал:
Скрин а дальше что то не понял что сделать
Запустилось норм
Ну то что игра вроде как работает(если я тебя правильно понял) - очень хорошо, даже странно.
Теперь тебе надо найти тот метод, который тебя интересует и запатчить. Чистый код перед тобой, вперед!))
-
6 минут назад, maks17990 сказал:
Просто нужно научится искать самому добавлять или убирать что нужно . Вы же поможете мне научится ? Пожалуйста!!!
Всё есть в интернете, учить никогда не собираюсь, т.к. сам плаваю на поверхности этой темы. Гугли
-
1 минуту назад, maks17990 сказал:
Скрин Немного все равно не понял. Но не беда ючусь и очень хочу научиться
скрин не несет никакой полезной информации
ты ту либу, которую я скинул по ссылке закинь в папку с игрой и переименуй в Assembly-CSharp.dll, а старую ACSH.dll сохрани, мало ли что. И попробуй запустить игру.
Даже интересно стало, скушает лоадер юнити такое или нет)) -
тут мало одного деча
а вообще не совсем удобно без реф либ на которые ссылается ассамблея.попробуй вот этот файлик, совмневаюсь что будет работать, но код там чище, для ориентирования пойдет.
- 1
-
4 минуты назад, partoftheworlD сказал:
почему бы не деобфусцировать файл для того чтобы можно было получить читаемый код? Что за извращения?
не до конца))
-
7 минут назад, maks17990 сказал:
что это означает
Это значит что файл защищен.
Ты же не думаешь что в проекте будут ориентироваться по таким названиям:
Это рандомные названия для запутывания "исследователей"- 1
-
10 минут назад, maks17990 сказал:
мужики помогите найти
Чтобы убрать рывки в protected void iopfpikoelk(float bhnhmifomaf)
удалить this.cddbhkkppaj(bhnhmifomaf);Помогите безрукому
либа запрочена
скорее всего это Confuser/Ex не под фулл настройками -
3 часа назад, Xipho сказал:
Имелось в виду, наверное, AssemblyCSharp.dll (вроде так), которая присутствует во всех юнити играх.
да, я допустил ошибку в аббревиатуре. Все верно. В большинстве случаев, достаточно просто анализа кода на С# и иногда моно диссектора.
Crash DrawIndexedPrimitive Hook
in Вопросы по взлому FPS игр
Опубликовано
В таком случае:
1) смотри как работает защита и обходи
2) переписывай хук