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

partoftheworlD

Помогаторы
  • Публикаций

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

  • Посещение

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

    150

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

  1. Все что тебе нужно. https://docs.microsoft.com/ru-ru/windows/desktop/Debug/debugging-functions Рецепт такой. 1.Ищешь с помощью CE многоуровневый указатель на этот адрес по которому лежит твое значение. 2.И считываешь по уровням указатели с помощью ReadProcessMemory, если это внешний чит или с помощью указателей, если это внутренний чит. Пример. 0xAAAABBBB -> 0xDEADBE00 + FE -> 0xFEEDFA00+CE -> значение DWORD tmp = 0; DWORD base_address = 0xAAAABBBB; unsigned int buffer = 1337; ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(base_address), &tmp, sizeof(DWORD), 0); // 1 уровень (0xAAAABBBB -> 0xDEADBE00) ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(tmp + 0xFE), &tmp, sizeof(DWORD), 0); // 2 уровень (0xDEADBE00 + 0xEF -> 0xFEEDFA00) ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(tmp + 0xCE), &tmp, sizeof(DWORD), 0); // 3 уровень (0xFEEDFA00 + 0xCE -> 0xFEEDFACE) 0xFEEDFACE адрес по которому лежит наше значение. WriteProcessMemory(hProcess, reinterpret_cast<PBYTE*>(tmp), &buffer, sizeof(buffer), 0); // Запись по адресу значения 3. Профит. Как получить адрес модуля это сам ищи, статей и уроков по этому лежит в интернете туева хуча.
  2. Думаю с получением бесплатной игры у многих могут зачесаться руки. Вот и набросал отключалку проверки целостности. Приятного взлома. Желательно запускать, после полной загрузки игры. ACU_bypass.7z
  3. Время от времени заметил в программе баг, когда терялся один из процессов. Предлагаю вам попробовать свои силы в нахождении этого бага. Вот кусок кода: PSYSTEM_PROCESS_INFORMATION process = PROCESS_INFORMATION_FIRST_PROCESS(SystemProcessInfo); while(process = PROCESS_INFORMATION_NEXT_PROCESS(process)) { if (process->UniqueProcessId == reinterpret_cast<HANDLE>(process_id)) break; } Мне даже стыдно за подобные баги.
  4. partoftheworlD

    CrySearch <3

    Сегодня поговорим про CrySearch и причины по которым я его выбрал. 1. Чистый код. Если сравнить репозитории CE и CrySearch вы поймете про что я. 2. Скорость сканирования. После того как я впервые воспользовался CrySearch для поиска неизвестного, я удивился и не мог поверить, что поиск может занимать так мало времени. 3. Встроенные защиты от анти-читов. Рандомные заголовки, разные методы внедрения, чтения, записи в память, открытия потока, запрет на чтение физически не поддерживаемой памяти. 4. Все под рукой. Посмотрите на интерфейс, в нем нет ничего лишнего, а если что-то мешает, всегда можно отключить. 5. Интересный TODO лист Много чего интересного ожидается, т.е автор собирается добавлять действительно нужные плюшки для взлома, а не делать из программы для сканирования памяти комбайн, который вроде бы и работает, но часть функционала сделана слишком не удобно для использования.
  5. Решил тут сделать кастомные пресеты для подсветки, но в софте производителя такой возможности не было, были стандартные, ограниченные. Как же я не люблю ограничения, ну что ж...приступим к исследованию. Для начала необходимо понять как софт общается с клавиатурой, для этого запускаем Wireshark. При изменении яркости, происходит отправка пакета по USB. Отлично, это уже что-то. Выполним еще пару действий, чтобы сделать шаблон для данных. //Стандартные настройки : 11 ff 0c 3a 00 01 ff 00 00 02 00 00 00 00 00 00 00 00 00 00 //Изменение яркости : 11 ff 0c 3a 00 01 f5 00 00 02 00 00 00 00 00 00 00 00 00 00 //Включение пресета : 11 ff 0c 3a 00 02 ff 00 00 10 40 00 64 00 00 00 00 00 00 00 //Изменение скорости пресета: 11 ff 0c 3a 00 02 ff 00 00 05 c7 00 64 00 00 00 00 00 00 00 Открываем 010 Editor и делаем шаблон. Шаблон: Шаблон можно будет использовать для программирования клавиатуры. Для программирования будем обращаться по имени HID устройства, чтобы с помощью CreateFile получить хендл и общаться с клавиатурой. Не самый лучший способ, но быстрый, хотя я бы выбрал хуки. Все есть файл. (ну почти) Посмотрим под отладчиком, что говорит софт логитека клавиатуре. Ставим бряк на WriteFile и бдыщ. Дальше остается использовать CreateFile, Read/WriteFile, чтобы сделать основу для собственных пресетов. Один из плюсов всего этого, это уменьшение размера программы с 200 мб до 10кб. Как раз вот-вот уже выходные, в планах привязать изменение подсветки клавиатуры в зависимости от готовности кофе в кофеварке. А до следующей статьи, можно будет разобрать как расширить функционал встроенных скриптов в клавиатуре и можно ли, туда прописать что-то действительно полезное, и что может пойти не так. И разобрать, за что отвечают последние 4 байта.
  6. partoftheworlD

    DDG яндекс фикс

    В любой блокировщик рекламы как кастомный фильтр. Удаляет мусор от яндекса в уточке. duckduckgo.com##.result.results_links_deep.highlight_d:-abp-contains(/(data-domain\=)|(.*yandex.*|.*ya\.ru)/)
  7. partoftheworlD

    создание сигнатуры

    Нужно, но с телефона копировать правила, прежде чем выдать пред не удобно, а модераторов/админов почти нет.
  8. partoftheworlD

    создание сигнатуры

    Читаем правила. Пункт 1.5 Любой код, цитата и прочее - должны быть обернуты специальными тэгами. Кроме того, если фрагмент кода достаточно большой (более 10 строк кода), то его необходимо также обернуть тэгом спойлера (скрытый текст). Надо знать какой вид сигнатуры студия принимает, поэтому и написал обратиться на форум студии. Сигнатура 8B 90 88 04 00 00 - правильная, просто может быть студия принимает \x8B\x90\x88\x04\x00\x00 или 8B 90 8B 90 88 04 00 00 или сигнатуре нужна маска.
  9. partoftheworlD

    создание сигнатуры

    Ха Место инжекта Прыжок на метку newmem по адресу 048E2A62 Может тогда лучше там и узнавать? Я не думаю, что кто-то на этом форуме пользуется этой студией. Кто делает трейнеры, у них своих исходники для сборки трейнеров.
  10. Преды не за не опытность, а за не правильное оформление тем.
  11. Находишь прозрачность любого игрока, находишь список игроков, имея смещение прозрачности и структуру игроков с помощью цикла перебираешь всех и устанавливаешь значение по смещению прозрачности.
  12. В чем преимущество этой сборки, перед тем же CrySearch?
  13. Нет, только 3-й пункт, остальное сам. Да
  14. 1. Находишь адрес нужного участка памяти по которому находится место инжекта 2. Делаешь копию этого участка 3. Перенаправляешь оригинальный участок памяти на копию за счет изменения EIP/RIP. 4. Делаешь с копией все что угодно. или можешь просто убить проверку.
  15. Все для того, чтобы картинки не отваливались в случае чего.
  16. partoftheworlD

    Небольшой опрос по блогу

    Не повредит, темы ведь будут оформляться так же, просто контент будет в дополнение к статье идти, отдельным файлом на какое-нибудь облако, на случай, если картинки пропадут или текст поедет. Я примерно так себе это представляю.
  17. partoftheworlD

    Небольшой опрос по блогу

    Раньше изредка, там достаточно легкий английский, минимум незнакомых слов. Сейчас может быть их перевели, надо поискать.
  18. partoftheworlD

    Небольшой опрос по блогу

    Не нашел на форуме, так что вот загрузил. Книги.7z
  19. partoftheworlD

    Небольшой опрос по блогу

    о твоей мотивации программирования Тут все достаточно просто, раньше я играл в Counter-Strike: Source и меня достали читеры, вот решил сделать свой чит и тут понеслось. о твоем стаже программирования Стаж С++ на данный момент уже 7-й год, большая часть проектов это специфичные читы(в которых пробую что-то новое и полезное, без различных свистоперделок), пара проектов работы с сетями (прокси серверы), дампер, инжектор, RTTI парсер, нейронка для аимбота, и вот новый проект универсальный фаззер для восстановления SDK для любых игр. Python 2 года, но на нем я ничего сложного не делаю, так простой язык для автоматизации мелких действий, например работы с дизассемблерами и отладчиками, поднятии прокси серверов с возможностью парсинга и интерпретацией данных пакетов в структуры. Ну и по мелочи Java, Pascal, VB, Javascript, Php, Ruby, Go, HTML/CSS, Lua, Rust, Perl, C#, SQL. какие книги по программированию ты изучал По С++: WINAPI Рихтера, Бьерн Страуструп. Язык программирования С++ и еще можно почитать Полный справочник по C++ 4-е издание. Герберт Шилдт По Python: Gray Hat Python Justin Seitz и Gray Hat Hacking 3nd какие книги показались сложными, какие бесполезными От таких сразу избавляюсь, поэтому сходу вспомнить не могу. какие книги ты бы посоветовал изучать, и в каком порядке У меня есть своя библиотека, я даже где-то на форуме её скидывал, там собраны все необходимые книги, для того чтобы получить полное понимание устройства работы программ, которые можно изучать в любом порядке. какой язык программирования тебе нравится больше и почему Вообще не люблю программировать. Но если по языкам, то без сомнений это C++, приятный синтаксис и универсальный язык для любых задач. какой язык программирования для тебя самый сложный Эзотерические ЯП — реально сложно. отзыв об учреждении в котором обучался, об объеме и пользе знаний, которые там приобрел Пустая трата времени, объем и польза по нулям. Поэтому и в университет не пошел, во-первых университетов со специальностью связанной с информационной безопасностью можно на пальцах одной руки пересчитать, во-вторых не уверен в том, что мне могу дать какие-то новые знания, а сидеть 4-5 лет, чтобы мне рассасывали, те знания которые у меня есть это 1. Бесполезно. 2. Дорого. 3. Слишком много времени уйдет в пустую, даже относительно заочного обучения. Да и с появлением интернета, весь материал изучаемый в университетах есть в сети, а единственное, что мешает самообразованию это лень.
  20. обычно с запасом по краям карты невидимые текстуры расположены, так что это будет не совсем край карты, локации уже давно в виде коробки не делают.
  21. Похожая статья уже была, но тут "новый" инструмент и не просто подмена рандомного значения. Что ж, для начала надо запихнуть исполняемый файл под дизассемблер, ищем что-нибудь связанное с лицензией, реверсим. Привели к читаемому виду, а теперь разбираемся что же тут происходит. Часть 1, проверка, чтобы имя пользователя было не длиннее, чем 20 символов. IVar1 = __picsymbolstub4::_objc_retain(param_3,param_2,(_NSZone *)param_3); lenth = __picsymbolstub4::_objc_msgSend(IVar1,"length"); if (lenth < 20) { bResult._0_1_ = 0; } Часть 2. Считываем введенное имя пользователя с 12 по 16 символ. uname = __picsymbolstub4::_objc_msgSend(inpurt_username,"substringWithRange:",12,16); user_name = __picsymbolstub4::AutoreleasedReturnValue(uname); Часть 3. Получение серийного номера устройства. SerialNumber = __picsymbolstub4::_objc_msgSend(&ATTweakClient,"getSerialNumber"); serial_number = __picsymbolstub4::AutoreleasedReturnValue(SerialNumber); Часть 4. Составление строки из соли, серийного номера и имени пользователя. _complite_string = __picsymbolstub4::_objc_msgSend (&_OBJC_CLASS_$_NSString,"stringWithFormat:",&cf_%@%@%@, & cf_kyf6jFJYT8aawe[we]D+F-s4JYI3jsaDp69jsdq123sDdflkDuF3sgvlkd3asfKLFDGhjalsddgasd ,serial_number,user_name); complite_string = __picsymbolstub4::AutoreleasedReturnValue(_complite_string); Часть 5. Хеширование полученной строки. hash = __picsymbolstub4::_objc_msgSend(&Utils,"sha1:",complite_string); IVar1 = __picsymbolstub4::AutoreleasedReturnValue(hash); Часть 6. Узнаем, что приходит от сервера. (Формат ключа) Начинаем писать кейген. #Импортируем модуль для работы с хеш-функциями from hashlib import sha1 #Задаем серийный номер аппарата serial = b"QTW6NR7XXP7M" #Задаем имя пользователя == 16 знакам name = b"partoftheworlD16" #Задаем соль salt = b"kyf6jFJYT8aawe[we]D+F-s4JYI3jsaDp69jsdq123sDdflkDuF3sgvlkd3asfKLFDGhjalsddgasd" def generate_license_file(): #Хешируем и переводим хеш в hex license_hash = sha1(salt + serial + name).hexdigest() #Формируем ключ key = license_hash[:12]+name.decode("utf-8")+license_hash[12:] #Формируем лицензионный файл print("{\"validated\":true,\"key\":\""+key+"\",\"create_time\":\"00:00:00 Apr 10, 2019 MSK\"}") generate_license_file() На выходе получаем. {"validated":true,"key":"2ebb4e00950epartoftheworlD16cff6343256a724d56eb6506173ec","create_time":"00:00:00 Apr 10, 2019 MSK"} Теперь необходимо этот ключ как-то скормить программе. 1. Способ, поместить ключ прямо в папку с программой 2. Скормить, через ответ с сервера. Я выбрал второй, просто потому, что мне лень по папкам лазить, чтобы создать файл. Пусть за меня это делает программа, я что её зря взламывал? Заходим в Burp Suite, вкладка Proxy, Options. Переходим в программу и запрашиваем лицензию. Ах да, я забыл снова включить прокси. Все, после запроса, срабатывает подмена ответа с сервера и в Burp Suite видим. А на экране телефона, успешно загруженную лицензию.
  22. partoftheworlD

    Fiddler vs Burp Suite

    Ну что ж, случайно на последнем CTF узнал, что Burp умеет сертификаты генерировать для прослушки HTTPS. Раньше я писал скрип для подмены запроса для mouse sensitivity в Fiddler, а тут оказалось, ничего писать не надо, составил регулярку для поиска и написал в окошечко на что заменить. Да и инструмент более гибкий, имеющий кучу плюшек. Это же прелесть. А баг так и не по фиксили.
  23. partoftheworlD

    Игровой фаззер

    В общем начал разрабатывать игровой фазер, предназначенный для восстановления классов и смещений для не виртуальных функций. На данный момент я представляю это как отдельный проект, возможно написанный с нуля, но думаю использовать готовые дизассемблерные библиотеки, чтобы сэкономить время, который будет представлять из себя универсальный дампер SDK для любых игр. Хотя использовать x64dbg для подобного будет очень даже уместно т.к. функциональное ядро будет готово. На первом этапе вешаем бряк на инструкцию. Получаем стек вызовов и восстанавливаем путь от 1-й функции вызванной клиентом до последней в которой находимся мы. На втором этапе будет создаваться каркас из классов, функций и ответвлений, я думаю воспользоваться перекрестными ссылками. На третьем этапе начнется интерпретация и парсинг инструкций основного древа без ответвлений кода, чтобы восстановить используемые в коде смещения и типы данных, отслеживая поведение инструкций. На четвертом этапе будет проводиться тоже самое, но только для ответвлений имея на руках уже найденные адреса и значения, я думаю это эффективней работы с ответвлениями начиная с нуля. На пятом этапе представлять в графическом виде все древо. На шестом генерировать таблицу рекласса. Красным веделен четвертый этап, черным третий. Основная проблема в том, что мы не знаем точный размер структур. И пока я не представляю, как можно получить размер динамически выделяемой памяти. Как вариант, пятым этапом вешать бряки на функции освобождающие память, фильтруя по всем найденным начальным адресам структур и после убивать процесс, чтобы перехватить размер. А после обрезать структуры по размеру, но концепция "ищи, чтобы удалить" мне не очень нравится. Плюсы данного проекта в том, что ничего не надо делать самому(пфф, что-то там руками искать в 2019), а так же можно прилепить на один из этапов "рекурсивное" восстановление, т.е начинаешь с инструкции патрон и чем больше смещений восстановится, тем к большему числу классов получаешь доступ для восстановления и так будет продолжаться, пока файл не восстановится полностью. (нет это не нейронная сеть, хотя кто знает)
×

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

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