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

partoftheworlD

Пользователи+
  • Постов

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

  • Посещение

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

    172

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

  1. Лучше тут https://github.com/ctfs/ Например, https://github.com/ctfs/write-ups-2018/tree/master/nsec-2018/reverse Вообще пароли это дело сложное, из самого легкого могу предложить канал LiveOverflow и конкретно Опять же, на английском. На русском вообще мало уроков по реверсу, можно сказать почти нет.Так что, если с этим проблемы, то стоит начать с английского, развить хотя бы до уровня понимания технической литературы. Либо пиши самостоятельно программы без оптимизации и реверсь, для начала сойдет, а после уже будет проще.
  2. Нет, тебе надо просто научиться читать ассемблерный код, больше практики, знание работы стека/кучи, winapi функций. Можешь почитать Образ мышления - дизассемблер IDA, но это прям основы-основы. Так же для начала настроить компилятор, чтобы он не оптимизировал код, на первых парах будет легче ориентироваться в коде. Посмотреть как другие люди решают такие задачи (в гугле "blog reverse writeup". Многие команды играющие в CTF выкладывают статьи по ходу решения с объяснениями.
  3. А разве для этого не видовая матрица используется? Не знаю, я гуманитарий, поэтому использую, то что есть у разработчиков.
  4. Это немного не так работает, даже если ты будешь рисовать 3-х мерный бокс, делать это все равно придётся в 2-х мерном пространстве. Матрица проекции нужна скорее для создания выпуклостей/впуклостей, что-то типа линзы "рыбьего глаза"
  5. Зачем тебе матрица проекции для преобразования 2-х мерных есп боксов? Или это такой новый тренд, придавать всему двухмерному объем? Просто, у меня были знакомые девушки, которые так делали.
  6. Способы нахождения матрицы: - Реверс функции, которая рисует кадр - Мотание камеры и поиск неизвестного значения, какого значения не известно, все зависит от движка, в шутерах в основном это значения от -1 до 1, в играх от третьего лица, может быть все что угодно, но обычно значение среднее, что-то около -5 до 5. Единственное что общее это изменение 16 значений, при повороте камеры на фиксированное значение от -1 до 1, -5 до 5 и т.д.
  7. Игра не указана ведь. Чтобы был ответ, который реально тебе поможет, стоит заполнять первый пост подробней. Что уже есть, что хочешь от созданной тобой темы? Восстанавливай функцию, которая рендерит кадр, восстановишь функцию - найдешь указатель на массив 4х4 это и будет видовая матрица. Это ответ на поставленный тобой вопрос, где-то в первом посте ты упоминал о видовой матрице и что тебе надо именно её найти? Или отвечающие на тему должны читать мысли?
  8. typedef struct { char array[32]; }t_array; mem.Read<t_array>(baseAddress + 0x105FA0); Вроде бы так должно заработать.
  9. Существует, напрямую выделять необходимое количество байт при необходимости используя один и тот же буфер, но с разным размером. Сишный стиль для некоторых удобней, но как всегда есть либо удобный способ, либо правильный.
  10. C шный стиль перебирает все виды преобразований и выбирает оптимальный, а использование reinterpret_cast, что-то типа строгого преобразования в определенный тип, а значит быстрее и мы ведь пишем на C++, так почему бы не воспользоваться его прелестями. А если ты про, типы, то LPCVOID это указатель на константу любого типа, но зачем нам любой тип, если мы точно знаем, что нам нужен указатель на байты. Опять же работает, чуть-чуть быстрее. Да и LPCVOID, может себя неадекватно вести, у меня такое было на практике, а PBYTE никогда не подводил ещё. Нет, я не видел ещё задач где бы не хватало массива размером 1024 байта, обычно 64 байта хватает для всего.
  11. Советую начать с https://msdn.microsoft.com/ru-ru/library/3bstk3k5.aspx char buf[24]; ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(baseAddress + 0x105FA0), &buf, sizeof(buf), 0); count << buf << endl;
  12. Так все, разобрался с этим lua, не нужно было лезть в vm вообще, оказалось там создается все так же как на обычном движке (ООП), просто все это не подписано и неизвестно как перебирать классы , и где они хранятся. Если в деталях, то после того как инициализировался интерфейс, надо обратится к адресу интерфейса на доступ, выбрать любую понравившуюся инструкцию и передать вызову функции по виртуальной таблицы любой индекс, так мы получим адрес на какой-то класс, после этого осталось просто найти в поиске значений, где используется этот адрес, так мы найдем к примеру все оружие на карте, обращаясь к классу CWeapon. А дальше, все как по учебнику, ищем какую-нибудь инструкцию работающую с массивами и использующую адрес оружия, и восстанавливаем смещения. Инициализация класса: Класс: Ах, да из проблем нашлось то, что наверное 60% функции декомпилируются не правильно, а от этого приходится декомпилировать все самому, снеговик и r2dec бесполезны.
  13. Я хочу понять как виртуалка инициализируется, потому что в игре есть много строк, но в итоге найти вызов где начинает выполнение виртуалка не могу из-за цикличности, будто бы попал внутрь интерпретатора. Луа модулей не подгружается, в импорте тоже ничего нет от чего можно было оттолкнуться. Из всего что доступно это лишь адреса интерфейсов, которые выводят меня в цикл. Вот так, происходит взятие указатель на интерфейсы: .rsrc:0000000143187C72 lea rcx, [r14+r14*2] //индекс .rsrc:0000000143187C76 mov rax, cs:array_0 //массив .rsrc:0000000143187C7D mov eax, [rax+rcx*8+0Ch]
  14. Ни у кого не завалялось статейки об устройстве и инициализации виртуальной машины LUA внутри другой программы?
  15. Устрой контролируемый бсод и сделай мини-дамп.
  16. Когда заходишь через кнопку форума что появляется? Название канала дискорда или кнопки со входом и регистрацией? Если первое, но не можешь войти, проверяй в настройках аккаунта форума связан ли он с аккаунтом дискорда, если второе восстанавливай пароль и просто входи.
  17. А теперь надо почитать статью в блоге. Про работу с сигнатурами, на примере гта 5.
  18. char* WorldPTR_sign = "\x48\x8B\x05\x00\x00\x00\x00\x45\x00\x00\x00\x00\x48\x8B\x48\x08\x48\x85\xC9\x74\x07"; char* WorldPTR_mask = "xxx????x????xxxxxxxxx"
  19. Найди массив инвентаря, посмотри кто использует указатель на инвентарь, так выйдешь на функцию, которая рисует вещи из инвентаря, смотришь на стек вызовов и находишь функцию отображающую инвентарь. Пишешь прототип функции, смотришь как заполняются и чем аргументы функции, повторяешь в своей программе/скрипте вызываешь используя поток. Профит.
  20. Ну, как бы первый вертолет заскриптован в игре, а остальные нет. Тут нет никакой зависимости от урона или ещё чего, просто, пока не перейдешь определенный триггер вертолет сбить нельзя, даже если он горит и из него выпали пилоты.
  21. Так нельзя Не совсем понятно про что ты. Если про ebp+24, то найти нормальную инструкцию. Ведь по сути ebp+24 это выделенная переменная в стеке для твоей функции, но ведь она как-то заполняется, найдешь инструкцию, где заполняется [ebp+24], то сможешь использовать реверсивный поиск указателей, либо ручной и получишь указатель. Если нет, то нужны подробности.
  22. Ссылка на видео Xipho и Keng, там почти все. Позже будет ссылка на торрент. https://mega.nz/#!0pMBVKZC!Zu5O7V-wUfdQvkrqx_b4WwFK4eF1fAMMHZ1WhfyrCbo Спасибо @Stigmaer, @ЛАГАРИУМ и @Krinkels за предоставленные видео во славу восстановления утерянных трудов русскоязычного геймхак комУнити, во времена безжалостной ютуб тирании. Троекратное /dev/null в честь героев. А так же список видео которые есть на данный момент и доступны по ссылке
×
×
  • Создать...

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

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