partoftheworlD
-
Постов
2 687 -
Зарегистрирован
-
Посещение
-
Победитель дней
172
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные partoftheworlD
-
-
Только что, User32 сказал:
Вообще, насколько мне известно, для преобразования используют две матрицы.
Зачем тебе матрица проекции для преобразования 2-х мерных есп боксов? Или это такой новый тренд, придавать всему двухмерному объем? Просто, у меня были знакомые девушки, которые так делали.
- 1
-
7 минут назад, User32 сказал:
но для этого и нужно знать как их преобразовывать
Спойлерbool world_to_screen(vector3 vOrigin, vector3 &vScreen) { auto& matrix = g_pEngine->WorldToScreenMatrix(); int ScrW, ScrH; g_pEngine->GetScreenSize(ScrW, ScrH); float w = matrix[3][0] * vOrigin[0] + matrix[3][1] * vOrigin[1] + matrix[3][2] * vOrigin[2] + matrix[3][3]; if (w > 0.01) { float inverseWidth = 1 / w; vScreen.x = (ScrW / 2) + (0.5 * ((matrix[0][0] * vOrigin[0] + matrix[0][1] * vOrigin[1] + matrix[0][2] * vOrigin[2] + matrix[0][3]) * inverseWidth) * ScrW + 0.5); vScreen.y = (ScrH / 2) - (0.5 * ((matrix[1][0] * vOrigin[0] + matrix[1][1] * vOrigin[1] + matrix[1][2] * vOrigin[2] + matrix[1][3]) * inverseWidth) * ScrH + 0.5); vScreen.z = 0; return true; } return false; }
Способы нахождения матрицы:
- Реверс функции, которая рисует кадр
- Мотание камеры и поиск неизвестного значения, какого значения не известно, все зависит от движка, в шутерах в основном это значения от -1 до 1, в играх от третьего лица, может быть все что угодно, но обычно значение среднее, что-то около -5 до 5.
Единственное что общее это изменение 16 значений, при повороте камеры на фиксированное значение от -1 до 1, -5 до 5 и т.д. -
18 минут назад, User32 сказал:
Может кто нибудь подскажет хотя бы как найти матрицу вида и матрицу проекции и как они выглядят в памяти игры?
Игра не указана ведь. Чтобы был ответ, который реально тебе поможет, стоит заполнять первый пост подробней. Что уже есть, что хочешь от созданной тобой темы? Восстанавливай функцию, которая рендерит кадр, восстановишь функцию - найдешь указатель на массив 4х4 это и будет видовая матрица.
18 минут назад, User32 сказал:Какой смысл в этом посте?
Это ответ на поставленный тобой вопрос, где-то в первом посте ты упоминал о видовой матрице и что тебе надо именно её найти? Или отвечающие на тему должны читать мысли?
- 1
-
typedef struct { char array[32]; }t_array; mem.Read<t_array>(baseAddress + 0x105FA0);
Вроде бы так должно заработать.
- 1
-
19 минут назад, fastmailsend сказал:
Думал вдруг существует определенные метод позволяющий хоть гиг загрузить
Существует, напрямую выделять необходимое количество байт при необходимости используя один и тот же буфер, но с разным размером.
19 минут назад, fastmailsend сказал:Почему-то на ютубе/cocoscope все пользуются Сишным стилем, а никто толком и не объясняет)
Сишный стиль для некоторых удобней, но как всегда есть либо удобный способ, либо правильный.
- 1
-
31 минуту назад, fastmailsend сказал:
Ну, всмысле, чем это лучше моего способа?
C шный стиль перебирает все виды преобразований и выбирает оптимальный, а использование reinterpret_cast, что-то типа строгого преобразования в определенный тип, а значит быстрее и мы ведь пишем на C++, так почему бы не воспользоваться его прелестями. А если ты про, типы, то LPCVOID это указатель на константу любого типа, но зачем нам любой тип, если мы точно знаем, что нам нужен указатель на байты. Опять же работает, чуть-чуть быстрее. Да и LPCVOID, может себя неадекватно вести, у меня такое было на практике, а PBYTE никогда не подводил ещё.
34 минуты назад, fastmailsend сказал:Получается надо брать массив с размером
Нет, я не видел ещё задач где бы не хватало массива размером 1024 байта, обычно 64 байта хватает для всего.
-
Советую начать с 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;
-
Так все, разобрался с этим lua, не нужно было лезть в vm вообще, оказалось там создается все так же как на обычном движке (ООП), просто все это не подписано и неизвестно как перебирать классы
Спойлерпоиск значений и брутфорс чтобы найти ближайшие адреса класс к найденному значению???
, и где они хранятся. Если в деталях, то после того как инициализировался интерфейс, надо обратится к адресу интерфейса на доступ, выбрать любую понравившуюся инструкцию и передать вызову функции по виртуальной таблицы любой индекс, так мы получим адрес на какой-то класс, после этого осталось просто найти в поиске значений, где используется этот адрес, так мы найдем к примеру все оружие на карте, обращаясь к классу CWeapon. А дальше, все как по учебнику, ищем какую-нибудь инструкцию работающую с массивами и использующую адрес оружия, и восстанавливаем смещения.
Инициализация класса:
Класс:
Ах, да из проблем нашлось то, что наверное 60% функции декомпилируются не правильно, а от этого приходится декомпилировать все самому, снеговик и r2dec бесполезны.
- 2
-
5 минут назад, fastmailsend сказал:
Cheat Engine сама определяет размер строки
sizeof ?
-
1 минуту назад, srg91 сказал:
спасибо за разъяснение, с такой магией вообще не сталкивался, поэтому отчаливаю
-
26 минут назад, srg91 сказал:
Ты хочешь просто создать отдельный lua-state и работать в нем или всё же использовать уже существующий?
Я хочу понять как виртуалка инициализируется, потому что в игре есть много строк, но в итоге найти вызов где начинает выполнение виртуалка не могу из-за цикличности, будто бы попал внутрь интерпретатора. Луа модулей не подгружается, в импорте тоже ничего нет от чего можно было оттолкнуться. Из всего что доступно это лишь адреса интерфейсов, которые выводят меня в цикл. Вот так, происходит взятие указатель на интерфейсы:
.rsrc:0000000143187C72 lea rcx, [r14+r14*2] //индекс .rsrc:0000000143187C76 mov rax, cs:array_0 //массив .rsrc:0000000143187C7D mov eax, [rax+rcx*8+0Ch]
-
Ни у кого не завалялось статейки об устройстве и инициализации виртуальной машины LUA внутри другой программы?
-
Устрой контролируемый бсод и сделай мини-дамп.
-
-
А теперь надо почитать статью в блоге. Про работу с сигнатурами, на примере гта 5.
-
4 часа назад, ЛАГАРИУМ сказал:
А есть способ автоматический поиск базового адреса ?
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"
-
Найди массив инвентаря, посмотри кто использует указатель на инвентарь, так выйдешь на функцию, которая рисует вещи из инвентаря, смотришь на стек вызовов и находишь функцию отображающую инвентарь.
Пишешь прототип функции, смотришь как заполняются и чем аргументы функции, повторяешь в своей программе/скрипте вызываешь используя поток. Профит. -
Ну, как бы первый вертолет заскриптован в игре, а остальные нет. Тут нет никакой зависимости от урона или ещё чего, просто, пока не перейдешь определенный триггер вертолет сбить нельзя, даже если он горит и из него выпали пилоты.
- 1
-
1 минуту назад, Cillstrik сказал:
ну грубо говоря мне надо так mov[чтототут+чтототам],"значение из указателя"
-
26 минут назад, Nyasha сказал:
И потом: mov [ebp+24],[esi+XX]
Так нельзя
30 минут назад, Cillstrik сказал:mov [ebp+24] ,(значение) как сделать чтобы заместо этого значения был указатель и значение бралось из него?
Не совсем понятно про что ты.
Если про ebp+24, то найти нормальную инструкцию. Ведь по сути ebp+24 это выделенная переменная в стеке для твоей функции, но ведь она как-то заполняется, найдешь инструкцию, где заполняется [ebp+24], то сможешь использовать реверсивный поиск указателей, либо ручной и получишь указатель.Если нет, то нужны подробности.
-
Ссылка на видео Xipho и Keng, там почти все. Позже будет ссылка на торрент.
https://mega.nz/#!0pMBVKZC!Zu5O7V-wUfdQvkrqx_b4WwFK4eF1fAMMHZ1WhfyrCboСпасибо @Stigmaer, @ЛАГАРИУМ и @Krinkels за предоставленные видео во славу восстановления утерянных трудов русскоязычного геймхак комУнити, во времена безжалостной ютуб тирании. Троекратное /dev/null в честь героев.
А так же список видео которые есть на данный момент и доступны по ссылке
Спойлер\xipho\разное Взлом Bulletstorm Как я взламывал FarCry 4. Часть 1 Спонтанный стрим GameHackLab[RU]. Часть вторая \xipho\с++ трейнер 01. Создаем наше первое окно 02. Начинаем создание класса ProcessManager 03. Создаем метод чтения из памяти целевого процесса 04. Создаем метод записи в память 05. Пишем сканер сигнатур 06. Создаем методы выделения и освобождения памяти Программирование трейнеров. 00. Введение \xipho\уроки 01. Типы поиска. Поиск точного и неизвестного значения 02. Типы данных. Представление float и int (4 байта) 03. Указатели. Автоматизированный поиск 04. Указатели. Подробное объяснение 05. Указатели. Реверсивный поиск 06. Отладчик, брейкпоинты и регистры процессора 07. Начинаем отладку. Взлом через _nop_ 08. Пишем первый скрипт 09. Флаги и однократное выполнение 10. Фильтр свой чужой 11. Взлом шифрованных значений 12. Новый уровень при каждом убийстве 13. Делаем телепорт типа Save_Restore Position (сохранение и восстановление позиции) Ром хакинг 01. Взлом жизней в Battle City 17. Урок от MasterGH. Супер-прыжок на примере игры S.T.A.L.K.E.R. Зов Припяти \keng [gamehacking] Более грамотный способ работы со структурами [gamehacking] Взлом по заявкам - PoP_ SoT, бессмертие [gamehacking] Делаем rapid-fire для Call of Duty [gamehacking] Делаем трейнер в Cheat Engine \keng\Делаем ESP-хак [gamehacking] Делаем ESP-hack. Часть 1 [gamehacking] Делаем ESP-hack. Часть 2 [gamehacking] Делаем ESP-hack. Часть 3 [gamehacking] Делаем ESP-hack. Часть 4, заключительная \keng\Обучение взлому [gamehacking] Map Hack своими руками! [gamehacking] Видеоурок по взлому игр №1 [gamehacking] Видеоурок по взлому игр №2 [gamehacking] Видеоурок по взлому игр №3 [gamehacking] Видеоурок по взлому игр №4 [gamehacking] Видеоурок по взлому игр №5 - Часть вторая [gamehacking] Видеоурок по взлому игр №5 - Часть первая [gamehacking] Видеоурок по взлому игр №6 [gamehacking] Видеоурок по взлому игр №7 Часть вторая [gamehacking] Видеоурок по взлому игр №8 [gamehacking] Видеоурок по взлому игр №9_ Телепорт [gamehacking] Мгновенная постройка только для игрока \keng\Перезагрузка [gamehacking] Перезагрузка. Урок 0. Введение [gamehacking] Перезагрузка. Урок 1. Поиск точных значений [gamehacking] Перезагрузка. Урок 2. Поиск неизвестного значения [gamehacking] Перезагрузка. Урок 3. Что такое DMA_ [gamehacking] Перезагрузка. Урок 4. Встречаем - Мистер Отладчик! [gamehacking] Перезагрузка. Урок 5. Боремся с DMA - Ручной поиск указателей [gamehacking] Перезагрузка. Урок 6. Автоматизированный поиск указателей \keng\Пишем D3D-хук [gamehacking] D3D9 hook - Chameleon Wallhack [gamehacking] D3D9 hook - Загрузчик на C++ [gamehacking] D3D9 hook - Часть 0 [gamehacking] D3D9 hook - Часть 1 [gamehacking] D3D9 hook - Часть 2 [gamehacking] D3D9 hook - Часть 3 [gamehacking] Начинаем курочить наше D3D-приложение \keng\Пишем трейнер на C# [gamehacking] Делаем трейнер на C# - Часть 1 [gamehacking] Делаем трейнер на C# - Часть 2 [gamehacking] Пишем трейнер на C# - Инъекции кода. Часть 1 [gamehacking] Сканер сигнатур на C# - что это и как это сделать [gamehacking] Читаем указатели в C#
- 1
-
49 минут назад, Stigmaer сказал:
подожди у мея ещё толькол процентов 30 первого файла. или может потом дольёшь ведь и кроме меня ещё приносить будут. а у меня 5 файлов примерно по гигу по мере готовности буду тоже кидать сюда
Добавлю тогда потом к общему архиву, по мере появления видео буду обновлять торрент.
- 1
-
2 часа назад, ЛАГАРИУМ сказал:
вот силка https://yadi.sk/d/6LdHm45NsVbySA
Скачал
7 минут назад, sector83 сказал:Это видео уроки с канала Ken'a https://yadi.sk/d/5x3fq5WZh8N66w
Cкачиваю
Как докачается, переберу видео, удалю повторяющиеся и кину ссылку на торрент файл. Сегодня буду на раздаче до 4 утра, думаю все успеют скачать.
- 2
-
1 час назад, Stigmaer сказал:
на уроки нагло скачанные с ютуба разных авторов. Не для воровства а для того чтоб офлайн можно было пересматривать. И вот пригодилось!
Но ссылка ведет на плагин
- 1
[Dragon Age 2] Преобразование координат
in Вопросы по созданию читов в одиночных играх
Опубликовано
Это немного не так работает, даже если ты будешь рисовать 3-х мерный бокс, делать это все равно придётся в 2-х мерном пространстве. Матрица проекции нужна скорее для создания выпуклостей/впуклостей, что-то типа линзы "рыбьего глаза"