Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину.
Support Gameru!
3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Модификация игры Метро Исход
autistic
сообщение 28.02.2019, 23:05
Сообщение #1


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


DaaGuda, мне кидай, ему и так неплохо живется в северной америке biggrin.gif Я коньяк предпочитаю, Remi Martin, если что smile.gif
Ну а если серьезно, подумываю о том чтобы отучить игру читать ресурсы из архивов, только тсс! ph34r.gif


--------------------
nop
Перейти в начало страницы
 
DaaGuda
сообщение 28.02.2019, 23:09
Сообщение #2


Опытный Игрок
****

Репутация:   5  
Группа: Участник
Сообщений: 53
Регистрация: 05.02.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, блин, ну коньяк дороговато. А может попробовать распаковать все архивы, удалить их - распакованные файлы оставить в папке content и попробовать запустить игру?


--------------------
Перейти в начало страницы
 
autistic
сообщение 28.02.2019, 23:21
Сообщение #3


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(DaaGuda @ 01.03.2019, 01:09) *
А может попробовать распаковать все архивы, удалить их - распакованные файлы оставить в папке content и попробовать запустить игру?

Это первое что я попробовал. Да и не я даже, hiker, еще десять лет назад попытался, перечитай тему про вскрытие Metro 2033.
Пока на уме вариант внедрить в адресное пространство метра свой код, который читал бы из файлов, а не из архивов. А в нужном месте, в metroexodus.exe, пропатчить вызов ф-ии чтения из архива на суррогатную. В принципе должно получиться, но посмотрим.
https://hastebin.com/diguvumese.m

\З.Ы. эх, не хотел больше светиться тут, но коньяк проклятый развязал язык biggrin.gif

Сообщение отредактировал autistic - 01.03.2019, 00:06


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 28.02.2019, 23:40
Сообщение #4


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, а денува не помешает?
Перейти в начало страницы
 
autistic
сообщение 28.02.2019, 23:46
Сообщение #5


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 01.03.2019, 01:40) *
а денува не помешает?

Дебажу уже несколько дней по вечерам, полет нормальный.




--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 02.03.2019, 00:03
Сообщение #6


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(zubr14 @ 02.03.2019, 00:30) *
Прямой вопрос - что из этого выйдет в перспективе? Всё таки модить на метрохе или все утащить в нашу классику?

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

Цитата(zubr14 @ 02.03.2019, 00:30) *
Я нихрена не понимаю в извлечении ресурсов и в целом в построении мода

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


--------------------
nop
Перейти в начало страницы
 
zubr14
сообщение 02.03.2019, 00:14
Сообщение #7


Игровой Эксперт
***************

Репутация:   328  
Группа: Участник
Сообщений: 2399
Награды: 5
Регистрация: 09.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


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

А вопрос вполне был прост - мне было интересно услышать, народ планирует ресурсы метро утащить по модам в сталкер или всё таки модить метро ( для этого его и вскрыли), а сталкеру дать покой временный smile.gif


И Почему тогда столько времени не могли вскрыть ресурсы? Три игры вышли! Некому было написать распаковщик или конкретно полуоткрытый мир взбудоражил умы? Мне реально интересно, я не в курсе.


iOrange, ты чего агришься? Не прав. Я честно написал, что я не шарю в модинге. Вы тут копаетесь, делаете что-то интересное и новое - молодцы. Чем тебя обидело моё "я нихрена не понимаю" - я вот не знаю. По моему вполне политкорректно. А так как, я не понимаю - я и пришел узнать, что за движуха намечается и какие перспективы.

Сообщение отредактировал zubr14 - 02.03.2019, 00:20


--------------------
Фотография - это единственный язык, который понятен в любой точке мира. (С)
http://zubr14.livejournal.com/
Перейти в начало страницы
 
autistic
сообщение 02.03.2019, 00:27
Сообщение #8


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(zubr14 @ 02.03.2019, 02:14) *
мне было интересно услышать, народ планирует ресурсы метро утащить по модам в сталкер или всё таки модить метро

Имхо, перво-наперво надо реализовать возможность поднимать игру из распакованных ресурсов, это даст возможность делать моды. Появится возможность - будут и моды.


--------------------
nop
Перейти в начало страницы
 
DaaGuda
сообщение 02.03.2019, 00:41
Сообщение #9


Опытный Игрок
****

Репутация:   5  
Группа: Участник
Сообщений: 53
Регистрация: 05.02.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Чего плохого в том, что объекты растащат в сталкер? По мне хоть какое-то будет разнообразие, своё толком не делают, а пыс уже сильно приелось. Вот как будет более стабильный экспорт - я с радостью многое возьму для сталкера...


--------------------
Перейти в начало страницы
 
autistic
сообщение 02.03.2019, 00:54
Сообщение #10


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


DaaGuda, из плохих новостей только одна - сталкер свое отжил. Нужно идти в ногу со временем и искать вкусности среди свежих игр.


--------------------
nop
Перейти в начало страницы
 
DaaGuda
сообщение 02.03.2019, 01:01
Сообщение #11


Опытный Игрок
****

Репутация:   5  
Группа: Участник
Сообщений: 53
Регистрация: 05.02.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


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

Цитата(kiperenok @ 02.03.2019, 00:57) *
Но к моддингу самого Метро это ни как не относится.


Ошибаетесь, как раз имеет прямое отношение. Данными утилитами человек дает возможность прикоснутся к ресурсам игры - без чего моддинг не возможен. И как уже писалось давно - у автора есть планах написать упаковщик контента в формат игры...

Сообщение отредактировал DaaGuda - 02.03.2019, 01:02


--------------------
Перейти в начало страницы
 
kiperenok
сообщение 02.03.2019, 01:04
Сообщение #12


Игровой Эксперт
***************

Репутация:   623  
Группа: Участник
Сообщений: 2474
Награды: 5
Регистрация: 14.02.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(DaaGuda @ 02.03.2019, 01:01) *
autistic, извините, но не все могут играть в современные игры, хотя бы на минимальных. И уж тем более на данном этапе метро в плане моддинга не интересен, я люблю сталкер за рпг - шутер не хочу делать) Я не против моддинга на метро, наоборот - это очень хорошо, но он не заменит сталкер (в плане моддинга).

Цитата(kiperenok @ 02.03.2019, 00:57) *
Но к моддингу самого Метро это ни как не относится.


Ошибаетесь, как раз имеет прямое отношение. Данными утилитами человек дает возможность прикоснутся к ресурсам игры - без чего моддинг не возможен. И как уже писалось давно - у автора есть планах написать упаковщик контента в формат игры...

Я еще раз повторяю, все эти утилиты он делал и для первых двух игр. Я что то модов на них не видел. Утилиты нужные, но не для Метро. А для того, чтобы его ресурсы использовать в модах для сталка !


--------------------
Тушкан сцуко личность !
http://img.gameru.net/?v=19a26.jpg


Ado3е3be
Перейти в начало страницы
 
DaaGuda
сообщение 02.03.2019, 01:07
Сообщение #13


Опытный Игрок
****

Репутация:   5  
Группа: Участник
Сообщений: 53
Регистрация: 05.02.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


kiperenok, предыдущие метро кто-то смог заставить читать контент из папки или написали запаковщик?


--------------------
Перейти в начало страницы
 
kiperenok
сообщение 02.03.2019, 01:14
Сообщение #14


Игровой Эксперт
***************

Репутация:   623  
Группа: Участник
Сообщений: 2474
Награды: 5
Регистрация: 14.02.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(DaaGuda @ 02.03.2019, 01:07) *
kiperenok, предыдущие метро кто-то смог заставить читать контент из папки или написали запаковщик?

Ты думаешь это было невозможно сделать ? Просто этим ни кто не занимался, так как это ни кому не нужно. Всем были нужны ресурсы из игры.
Единственный мод который я помню, это где обложки книг Метро 2033 заменили на Анну Семенович. Там по моему заставили игру грузить ее ресурсы в распакованном виде.


--------------------
Тушкан сцуко личность !
http://img.gameru.net/?v=19a26.jpg


Ado3е3be
Перейти в начало страницы
 
Stalker_Monolit
сообщение 02.03.2019, 03:21
Сообщение #15


Опытный Геймер
*******

Репутация:   17  
Группа: Участник
Сообщений: 161
Награды: 3
Регистрация: 08.03.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 02.03.2019, 00:54) *
DaaGuda, из плохих новостей только одна - сталкер свое отжил. Нужно идти в ногу со временем и искать вкусности среди свежих игр.

Он отживет свое когда перестанут в него играть, а hl и кс1.6 перестали играть что ли? Игре 20 годиков скоро, а стулкеру уже больше десятка как то твои аргументы "отжил" не клюется с сегодняшними реалиями.


--------------------

Перейти в начало страницы
 
JackieR
сообщение 02.03.2019, 09:05
Сообщение #16


Ветеран
*****

Репутация:   10  
Группа: Участник
Сообщений: 99
Регистрация: 28.11.2018




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(DaaGuda @ 02.03.2019, 01:07) *
kiperenok, предыдущие метро кто-то смог заставить читать контент из папки или написали запаковщик?

Для 2033 написали.


--------------------
Перейти в начало страницы
 
autistic
сообщение 02.03.2019, 13:34
Сообщение #17


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(JackieR @ 02.03.2019, 11:05) *
Для 2033 написали.
А где-нибудь сохранились наработки, можно взглянуть?

Попробовал внедриться в адресное пространство метра, вроде работает


Осталось только найти адрес нужной ф-ии и подменить ее вызов на свою ф-ию при помощи вот такой вот техники https://github.com/TsudaKageyu/minhook


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 02.03.2019, 14:54
Сообщение #18


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 02.03.2019, 13:34) *
А где-нибудь сохранились наработки, можно взглянуть?

https://yadi.sk/public?hash=gbDUcaFxnr52Ug9...vQgKreGL%2BI%3D
Запаковщик написан на quickbms и батнике. laugh.gif

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

Сообщение отредактировал Modera - 02.03.2019, 14:57
Перейти в начало страницы
 
autistic
сообщение 02.03.2019, 14:59
Сообщение #19


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, о, круто, спасибо!

Цитата(Modera @ 02.03.2019, 16:54) *
Запаковщик написан на quickbms и батнике.

Это не важно на чем написано, важно знать куда и что писать wink_old.gif


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 02.03.2019, 15:06
Сообщение #20


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 02.03.2019, 14:54) *
Да, ещё в пиратке была такая штука pack.exe. При установке сначала папка content извлекалась из инсталятора в распакованном виде, а потом уже собиралась в игровые архивы. Не знаю это в оригинале так было или пираты для лучше сжатия изобрели.

Конечно в оригинале не было smile.gif
Про это писали у нас на форуме: https://www.gameru.net/forum/index.php?show...st&p=964813

А в чем вообще проблема с запаковкой?
Создаются новые patch_*.vfx и vfs. В vfs можно файлы так класть, не сжимая.

Сообщение отредактировал abramcumner - 02.03.2019, 15:10
Перейти в начало страницы
 
autistic
сообщение 02.03.2019, 15:25
Сообщение #21


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


abramcumner, если все срастется с чтением ресурсов из папки, то в конечном итоге хотелось бы иметь возможность модифицировать игру по следующей схеме:
- распаковка игровых ресурсов в папку
- модификация ресурсов с возможностью сразу запустить игру и проверить результат
- запаковка ресурсов обратно

Вот с последним пунктом неясно пока, либо все ресурсы с учетом изменений паковать как было в оригинале, либо только измененные ресурсы в патчи.

Сообщение отредактировал autistic - 02.03.2019, 15:25


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 02.03.2019, 15:33
Сообщение #22


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 02.03.2019, 15:25) *
abramcumner, если все срастется с чтением ресурсов из папки,

По идее не должно срастись. Иначе я не понимаю, чем денува вообще занимается? smile.gif И почему еще не сдампили в нормальный кряк.

Цитата
Вот с последним пунктом неясно пока, либо все ресурсы с учетом изменений паковать как было в оригинале, либо только измененные ресурсы в патчи.

В оригинале не было паковки всех ресурсов, только измененные.

Вот мод на 2033: http://www.playground.ru/files/metro_2033_...drobovik-30798/
Запакован только измененный level.bin

Сообщение отредактировал abramcumner - 02.03.2019, 15:35
Перейти в начало страницы
 
autistic
сообщение 03.03.2019, 14:43
Сообщение #23


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Почитал что за зверь этот Denuvo, оказывается это VMProtect обыкновенный. Исходя из того что про него пишут VMProtect'ом обычно весь код не защищают, только какие-то важные его участки. Вот и в случае с Исходом ф-ии чтения архивов похоже не защищены, вот к примеру код ф-ии, которая на вход принимает имя файла, а на выходе возвращает файловый дескриптор
+

Смещение 0x114ADC7C


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


--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 11.03.2019, 00:17
Сообщение #24


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


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

Краткая инструкция по сборке
Для сборки необходима Visual Studio 2013 (v12.0)
Если в системе кроме нее установлена более свежая версия, то при первом запуске система попросит обновить инструменты сборки, необходимо этот шаг пропустить.


Краткая инструкция по отладке
Путь к папке с игрой для запуска под отладчиком задается макросом GAME_DIRECTORY в файле common.h
В свойствах проекта MetroExodusLauncher необходимо в качестве рабочей директории прописать путь к папке в которую собираются бинари

Чтобы сработала точка останова на внедренной ф-ии, необходимо установить ее на 82 строке в dllmain.cpp. Затем установить точку останова на строку 288 в winmain.cpp запустить приложение под отладчиком и встать на нее. Далее нужно подцепиться отладчиком к процессу MetroExodus.exe и продолжить выполнение вплоть до срабатывания точки останова в dllmain.cpp

Если в процессе отладки что-то пошло не так, значит вы долго возились и истекло время таймаута, оно задается макросом TIMEOUT в common.h

Что еще
Поиск нужной ф-ии для подмены осуществляется ф-ией FindTargetFunctionAddress в адресном пространстве, в которое загружен MetroExodus.exe. Ф-ия осуществляет поиск по первым нескольким байтам машинного кода нужной ф-ии. Чтобы получить указатель на какую-то другую функцию нужно определить и по аналогии с существующим кодом захардкодить ее первые несколько байт


Сообщение отредактировал autistic - 11.03.2019, 00:19


--------------------
nop
Перейти в начало страницы
 
iOrange
сообщение 11.03.2019, 07:33
Сообщение #25


Половина землекопа
**************

Репутация:   247  
Группа: Припаркованный аккаунт
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Могу посоветовать обратить внимание на этот хукер - https://github.com/elishacloud/Hooking
Используется для многих патчеров / фиксеров.
В частности у нас в Silent Hill Widescreen Fix


--------------------
Hello worlds!
Перейти в начало страницы
 
autistic
сообщение 11.03.2019, 15:17
Сообщение #26


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(iOrange @ 11.03.2019, 09:33) *
Могу посоветовать обратить внимание на этот хукер - https://github.com/elishacloud/Hooking

Спасибо. Бегло просмотрел исходники, там вроде бы основной функционал нацелен на работу с таблицей экспорта из PE файла, в нашем случае от этого проку мало т.к. ф-ии которые хотелось бы похукать конечно же в таблицу экспорта не попали.
Ну и кроме того, есть подозрение, что в x64 битном адресном пространстве этот патчер работать не будет
Код
// Set HotPatch hook

        *patch_address = 0xE9; // jmp (4-byte relative)

        *((DWORD *)(patch_address + 1)) = (DWORD)hookproc - (DWORD)patch_address - 5; // relative address

        *((WORD *)apiproc) = 0xF9EB; // should be atomic write (jmp $-5)



Существует официальная библиотека от Microsoft которая позволяет вешать хуки, думаю ее опробовать и сравнить результат
https://github.com/microsoft/detours

Сообщение отредактировал autistic - 11.03.2019, 15:21


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 11.03.2019, 15:25
Сообщение #27


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 11.03.2019, 15:17) *

Там же х64 был за мегабабки. х86 на ластлайте работал отлично.

Опенсорс. Прикольно...

Сообщение отредактировал abramcumner - 11.03.2019, 15:27
Перейти в начало страницы
 
autistic
сообщение 11.03.2019, 15:31
Сообщение #28


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 11.03.2019, 17:25) *
х86 на ластлайте работал отлично.

Ну там как повезет, если смещение между адресами меньше чем 2^32 - считай повезло smile.gif


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 11.03.2019, 15:53
Сообщение #29


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


На х86 всегда везет, там смещений больше 2^32 не бывает smile.gif
Перейти в начало страницы
 
autistic
сообщение 11.03.2019, 15:58
Сообщение #30


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


А, ну для х86 приложения - да, Я думал речь про джамп по 32 разрядному смещению в х64 приложениях. Оно иногда срабатывает, иногда нет, в зависимости от smile.gif


--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 12.03.2019, 16:01
Сообщение #31


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Кажется понял что произошло. Т.к. хук устанавливается не просто на ф-ию, а на метод класса-наследника, похоже я сломал таблицу виртуальных ф-ий при присвоениии результата членам класса. Проверю позже.
Немного теории тут: https://github.com/gfreivasc/VMTHook


--------------------
nop
Перейти в начало страницы
 
jamakasi
сообщение 12.03.2019, 18:32
Сообщение #32


Доктор Игровых Наук
*******************

Репутация:   544  
Группа: Участник
Сообщений: 3657
Награды: 9
Регистрация: 12.07.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


А в форточках есть способ делать аналоги линуксовых pipe и filedescriptor в фс?
Перейти в начало страницы
 
autistic
сообщение 12.03.2019, 21:38
Сообщение #33


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


К сожалению никакой виртуальной таблицей там и не пахнет, дело в чем-то другом sad.gif

Цитата(jamakasi @ 12.03.2019, 20:32) *
А в форточках есть способ делать аналоги линуксовых pipe

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

Цитата(jamakasi @ 12.03.2019, 20:32) *
и filedescriptor в фс?

Microsoft POSIX subsystem была введена одновременно с началом развития семейства Windows NT


--------------------
nop
Перейти в начало страницы
 
jamakasi
сообщение 12.03.2019, 21:42
Сообщение #34


Доктор Игровых Наук
*******************

Репутация:   544  
Группа: Участник
Сообщений: 3657
Награды: 9
Регистрация: 12.07.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, тогда можно дескриптор\пайп сунуть на архив игры и написать маленькую прослойку проксирующую чтение файла. Будет гораздо проще разобрать как чтение файла происходит и соответственно понять структуры.
Перейти в начало страницы
 
autistic
сообщение 12.03.2019, 21:50
Сообщение #35


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(jamakasi @ 12.03.2019, 23:42) *
можно дескриптор\пайп сунуть на архив игры и написать маленькую прослойку проксирующую чтение файла. Будет гораздо проще разобрать как чтение файла происходит и соответственно понять структуры.

Не очень понятно о чем конкретно идет речь, объясни подробней, пожалуйста. А общая суть понятна, нечто подобное (прослойку) я и пытаюсь реализовать, чтобы упростить разбор форматов и абстрагироваться от виртуальной файловой системы.


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 12.03.2019, 22:28
Сообщение #36


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, а можно эту твою штуковину MinGW собрать, или студия онли?
Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 09:26
Сообщение #37


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, собрать-то может и можно, но будет ли работать? В комплекте с MinGW идет своя библиотека поддержки языка, которая несовместима на двоичном уровне со студийными msvcrt.dll По сути мы делаем безусловный переход из ф-ии собранной определенным компилятором в другую ф-ию, которая по идее должна быть собрана таким же. Я бы даже не рискнул использовать версию Visual Studio, отличную от той которой собирали игру. Установи VS2013 Community Edition, делов-то на 15 минут.

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

Сообщение отредактировал autistic - 13.03.2019, 09:31


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 13.03.2019, 15:29
Сообщение #38


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, современный MinGW, который называется MinGW-w64 как-раз использует msvcrt.dll, это студия использует всякие там api-ms-win-блаблабла.dll.

Всё таки собрал, что-то оно у меня не находило функцию по начальным байтам. Вообще не совсем понял зачем так делать, можно же адрес функции получить гораздо проще LPBYTE(GetModuleHandle("metroexodus.exe"))+смещение_функции_относительно_imagebase.


Для эксперимента сделал вместо подмены функции открытия файла обёртку над функцией открытия скрипта, которая печатает имя скрипта в консоль и вызывает оригинальную функцию. Вполне себе работает, даже меню загрузилось.

Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 16:03
Сообщение #39


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 13.03.2019, 17:29) *
Всё таки собрал, что-то оно у меня не находило функцию по начальным байтам. Вообще не совсем понял зачем так делать

Странно, должно находить. Сделал так из лени, чтоб переделать когда-нибудь потом, неохота было смещение высчитывать.

Цитата(Modera @ 13.03.2019, 17:29) *
Для эксперимента сделал вместо подмены функции открытия файла обёртку над функцией открытия скрипта, которая печатает имя скрипта в консоль и вызывает оригинальную функцию. Вполне себе работает, даже меню загрузилось.

Имхо, оно потому и не крешится, что оригинальную ф-ию позвал. А вот если открыть при помощи _open и вернуть дескриптор будет работать?
Изначальная ф-ия имеется в виду, ее легко найти по брейкпоинту на NtCreateFile


Сообщение отредактировал autistic - 13.03.2019, 16:12


--------------------
nop
Перейти в начало страницы
 
iOrange
сообщение 13.03.2019, 16:37
Сообщение #40


Половина землекопа
**************

Репутация:   247  
Группа: Припаркованный аккаунт
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 13.03.2019, 14:29) *
печатает имя скрипта в консоль

Интересно что на вашем скрине куча файлов в папке "content/scripts" лежит, в то время как я в архиве только 2 файлика вижу huh.gif
"content/scripts/material.bin" бы мне очень пригодился


--------------------
Hello worlds!
Перейти в начало страницы
 
Modera
сообщение 13.03.2019, 17:04
Сообщение #41


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 13.03.2019, 16:03) *
Изначальная ф-ия имеется в виду, ее легко найти по брейкпоинту на NtCreateFile

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

Цитата(iOrange @ 13.03.2019, 16:37) *
Интересно что на вашем скрине куча файлов в папке "content/scripts" лежит, в то время как я в архиве только 2 файлика вижу huh.gif
"content/scripts/material.bin" бы мне очень пригодился

Они в config.bin на самом деле. Формат config.bin такой же как у scripts.bin в Метро 2033, так что разбить его на отдельные файлы не так уж трудно. Вопрос что с ними дальше делать, т.к. это конфиги, такие же как скелет, и почти все без отладочных данных.
Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 17:16
Сообщение #42


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 13.03.2019, 19:04) *
ашел эту функцию, у меня она немного подругому выглядит чем твоём коде.

Можешь выложить MD5 хэш MetroExodus.exe? Например вот этой тулзой можно посчитать. Я вечером сверю со своим бинарем.


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 13.03.2019, 17:24
Сообщение #43


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, 810d30f4e11bb047024261719aab1186
Перейти в начало страницы
 
iOrange
сообщение 13.03.2019, 17:29
Сообщение #44


Половина землекопа
**************

Репутация:   247  
Группа: Припаркованный аккаунт
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 13.03.2019, 16:04) *
Они в config.bin на самом деле

Спасибо, загляну.

Цитата(Modera @ 13.03.2019, 16:04) *
Вопрос что с ними дальше делать

Потихоньку ковырять. Я вон скелет уже поковырял немного (много).
Мне сейчас материалы нужны. Попробую вытянуть из config.bin и поковырять.


--------------------
Hello worlds!
Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 21:28
Сообщение #45


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, разные у нас с тобой бинари.
+
MD5: e86a1c884d453db946e2668289c590a7
Version Code = 491191
Version Content = 491177
time date stamp Fri Feb 22 16:50:39 2019
12.00 linker version
6.00 operating system version
165D8000 size of image
600 size of headers
Размер файла: 347 МБ (364 583 424 байт)


--------------------
nop
Перейти в начало страницы
 
iOrange
сообщение 13.03.2019, 21:33
Сообщение #46


Половина землекопа
**************

Репутация:   247  
Группа: Припаркованный аккаунт
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


У меня такой же. Epic Store v0.1.0.13
Код
e86a1c884d453db946e2668289c590a7 *MetroExodus.exe


Может у Modera стим версия?

Сообщение отредактировал iOrange - 13.03.2019, 21:34


--------------------
Hello worlds!
Перейти в начало страницы
 
Modera
сообщение 13.03.2019, 21:37
Сообщение #47


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, То что FilePointer в подменяемой функции никак не инициализируется это так и должно быть?

Сообщение отредактировал autistic - 13.03.2019, 21:45
Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 21:44
Сообщение #48


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, структура уже проинициализированная приходит { -1, 0, 0 } но интересно другое: в дизассемблере оригинальной ф-ии и в суррогатной функции ф-ия open вызывается из разных источников. Думаю все-таки коррапт из-за разных библиотек/настроек компилятора.


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 13.03.2019, 21:50
Сообщение #49


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, так посмотри из какой библиотеки игра использует эту функцию, получи её хендл с помощью GetModuleHandle а потом по нему адрес функции с помощью GetProcAddress, и будет работать с любой версией студии. Настройки компилятора не тоже доллжны повлиять.
Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 21:56
Сообщение #50


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, ну я так и планировал, времени пока нет свободного. Из разных ли библиотек пока не знаю, но соглашения о вызовах разные. В моей версии CRT open объявлена как:
Код
extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) _CRTIMP int __cdecl _open(_In_z_ const char * _Filename, _In_ int _Openflag, _In_ int _PermissionMode = 0);

В то время как в метро используется cdecl при вызове этой ф-ии


--------------------
nop
Перейти в начало страницы
 
Modera
сообщение 13.03.2019, 22:03
Сообщение #51


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


autistic, на x64 ключевые слова __cdecl, __stdcall и т.д. ничего не значат, всегда используется одно и то же соглашение.
Перейти в начало страницы
 
autistic
сообщение 13.03.2019, 22:06
Сообщение #52


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, я имею в виду манглинг, в метро эта ф-ия вызывается как ф-ия Си.


--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 17.03.2019, 19:34
Сообщение #53


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


В общем причина по которой игра с установленным хуком не хотела запускаться установлена.

Цитата
When you pass C Run-time (CRT) objects such as file handles, locales, and environment variables into or out of a DLL (function calls across the DLL boundary), unexpected behavior can occur if the DLL, as well as the files calling into the DLL, use different copies of the CRT libraries.

Нельзя передавать файловые дескрипторы между модулями игры и внедренной DLL т.к. версии CRT различаются, это приводит к вылетам. Игра, как выяснилось посредством ProcessExplorer'a, использует библиотеки поддержки языка из набора инструментов платформы v140.



В общем, чтобы не ходить вокруг да около - лаунчер нужно собирать VS2015 SP3, тогда все будет работать как часы.
Следующим шагом нужно определить где и как игра запрашивает ресурсы из архивов и можно ли установить хук таким образом, чтобы подсунуть эти ресурсы из дисковых файлов.

Сообщение отредактировал autistic - 17.03.2019, 19:57


--------------------
nop
Перейти в начало страницы
 
iOrange
сообщение 17.03.2019, 20:48
Сообщение #54


Половина землекопа
**************

Репутация:   247  
Группа: Припаркованный аккаунт
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 17.03.2019, 18:34) *
Игра, как выяснилось посредством ProcessExplorer'a, использует библиотеки поддержки языка из набора инструментов платформы v140.

Цитата(autistic @ 17.03.2019, 18:34) *
лаунчер нужно собирать VS2015 SP3

Зачем такие сложности?

Эти dll-ки лежат в папке с игрой, тут даже исследовать не нужно. При запуске просто хукайте их и без разницы чем вы собираете свою программу.

Если с этим нужна какая помощь - обращайтесь.



--------------------
Hello worlds!
Перейти в начало страницы
 
autistic
сообщение 17.03.2019, 21:13
Сообщение #55


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(iOrange @ 17.03.2019, 22:48) *
Зачем такие сложности?

Никаких проблем, у меня платная подписка на MSDN, спасибо текущему работодателю.

Цитата(iOrange @ 17.03.2019, 22:48) *
При запуске просто хукайте их и без разницы чем вы собираете свою программу.

Их не нужно хукать, если собрать внедряемую библиотеку с правильно настроенным окружением, то после загрузки в адресное пространство MetroExodus.exe она будет использовать именно эти библиотеки из папки с игрой.


--------------------
nop
Перейти в начало страницы
 
iOrange
сообщение 17.03.2019, 21:28
Сообщение #56


Половина землекопа
**************

Репутация:   247  
Группа: Припаркованный аккаунт
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(autistic @ 17.03.2019, 20:13) *
у меня платная подписка на MSDN

Это прекрасно, поздравляю, только я писал о том что незачем было так сложно и долго выяснять какой рантайм использует игра, ведь рантайм-библиотеки лежат рядом с exe wink_old.gif

Цитата(autistic @ 17.03.2019, 20:13) *
Их не нужно хукать, если собрать внедряемую библиотеку с правильно настроенным окружением

Это если собирать так, но можно и проще - просто хукнуть эти dll и тогда собирайте хоть сигвином.


--------------------
Hello worlds!
Перейти в начало страницы
 
autistic
сообщение 17.03.2019, 21:36
Сообщение #57


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(iOrange @ 17.03.2019, 23:28) *
незачем было так сложно и долго выяснять какой рантайм использует игра, ведь рантайм-библиотеки лежат рядом с exe

Я ожидал их там увидеть меньше всего, потому что обычно рантайм библиотеки доставляют отдельным пакетом вместе с установкой продукта, а поскольку игра ставится из Эпик Стора, а не инсталлятором, разработчикам пришлось пойти на такой грязный хак. К тому же это не заняло у меня много времени wink_old.gif

Сообщение отредактировал autistic - 17.03.2019, 22:09


--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 18.03.2019, 00:22
Сообщение #58


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Кажется нащупал подходящую функцию, вот список ресурсов которые у нее запрашивает игра при загрузке главного меню: гуглдиск

Сообщение отредактировал autistic - 18.03.2019, 00:23


--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 26.03.2019, 23:13
Сообщение #59


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 13.03.2019, 17:29) *
Вообще не совсем понял зачем так делать, можно же адрес функции получить гораздо проще

Игра обновилась только что, все брейкпоинты в x64dbg слетели, а лаунчер как работал, так и работает. Смещение поменялось, а тело функции нет wink_old.gif

Кстати вот эта функция, которую предстоит модифицировать
mov qword ptr ss:[rsp+18],rbx
mov qword ptr ss:[rsp+20],rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp,30
xor r13d,r13d
mov r12d,r9d
mov r14,r8
mov rsi,rdx
mov rdi,rcx
cmp dword ptr ds:[rdx+C],r13d
je metroexodus.14F245504
mov r9,r8
mov qword ptr ss:[rsp+28],r13
mov r8,qword ptr ds:[rdx]
mov ebp,1
xor edx,edx
mov dword ptr ss:[rsp+20],ebp
mov rcx,rsi
call metroexodus.140A32830
mov rbx,rax
test rax,rax
je metroexodus.14F245504
movzx ecx,word ptr ds:[rax+6]
mov qword ptr ss:[rsp+60],r15
mov qword ptr ss:[rsp+68],r13
lea rdx,qword ptr ds:[rcx+rcx*2]
shl rdx,4
lea rcx,qword ptr ds:[1415D7990]
add rsi,rdx
call qword ptr ds:[<&RtlEnterCriticalSection>]
mov rdx,qword ptr ss:[rsp+80]
test rdx,rdx
je metroexodus.14F245438
mov eax,dword ptr ds:[rbx+8]
cmp eax,dword ptr ds:[rbx+C]
cmove eax,r13d
mov dword ptr ds:[rdx],eax
lea rcx,qword ptr ds:[rsi+D0]
call metroexodus.140A32770
mov edx,dword ptr ds:[rbx+10]
xor r8d,r8d
mov r15,rax
mov ecx,dword ptr ds:[rax]
call qword ptr ds:[<&_lseek>]
cmp eax,FFFFFFFF
je metroexodus.14F245460
mov dword ptr ds:[r15+4],eax
jmp metroexodus.14F245468
mov rcx,r14
call metroexodus.140A34090
test r12d,r12d
je metroexodus.14F245475
mov esi,dword ptr ds:[rbx+C]
mov r8d,r13d
jmp metroexodus.14F24547C
mov esi,dword ptr ds:[rbx+8]
mov r8d,dword ptr ds:[rbx+C]
mov edx,esi
mov rcx,r15
call metroexodus.140A2CC90 <<<<<=====
mov r15,rax
call metroexodus.140A26030
mov rcx,rax
mov r14,rax
inc dword ptr ds:[rax+140]
call qword ptr ds:[<&RtlEnterCriticalSection>]
mov rcx,qword ptr ds:[r14+30]
mov edx,30
call metroexodus.140A28630
mov rbx,rax
test rax,rax
jne metroexodus.14F2454BB
call metroexodus.140A25E40
mov rcx,r14
call qword ptr ds:[<&RtlLeaveCriticalSection>]
mov qword ptr ds:[rbx+8],r13
lea rax,qword ptr ds:[1413432D0]
mov dword ptr ds:[rbx+10],r13d
lea rcx,qword ptr ds:[1415D7990]
mov dword ptr ds:[rbx+14],r13d
mov qword ptr ds:[rbx+18],r15
mov dword ptr ds:[rbx+20],r13d
mov dword ptr ds:[rbx+24],esi
mov dword ptr ds:[rbx+28],r13d
mov qword ptr ds:[rbx],rax
call qword ptr ds:[<&RtlLeaveCriticalSection>]
mov qword ptr ds:[rdi],rbx
lock add dword ptr ds:[rbx+14],ebp
mov r15,qword ptr ss:[rsp+60]
jg metroexodus.14F245507
mov qword ptr ds:[rdi],r13
mov rbx,qword ptr ss:[rsp+70]
mov rax,rdi
mov rbp,qword ptr ss:[rsp+78]
add rsp,30
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret


Стрелочкой отмечена функция, которая возвращает буфер с содержимым запрашиваемого файла, вместо нее будет вызываться другая ф-ия, которая будет читать содержимое дискового файла.

P.S.
Тут кстати маленькая неприятная проблемка нарисовалась, Defender посчитал, что я злоумышленник ph34r.gif




--------------------
nop
Перейти в начало страницы
 
autistic
сообщение 27.03.2019, 00:28
Сообщение #60


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


К другим новостям: я таки посмотрел таблицу экспорта d3dcompiler_46.dll / d3dcompiler_47.dll и вот что за ф-ии оттуда экспортируются:

+

1 0 0009DE90 D3DAssemble
3 1 0009DB60 D3DCompile
4 2 0009DBE0 D3DCompile2
5 3 0009DCE0 D3DCompileFromFile
6 4 000A0700 D3DCompressShaders
7 5 0009C710 D3DCreateBlob
8 6 000A0AA0 D3DDecompressShaders
9 7 0009C560 D3DDisassemble
10 8 000B4CE0 D3DDisassemble10Effect
11 9 0009C640 D3DDisassemble11Trace
12 A 0009C5A0 D3DDisassembleRegion
13 B 0009F830 D3DGetBlobPart
14 C 0009FB50 D3DGetDebugInfo
15 D 0009FBB0 D3DGetInputAndOutputSignatureBlob
16 E 0009FB70 D3DGetInputSignatureBlob
17 F 0009FB90 D3DGetOutputSignatureBlob
18 10 0009C600 D3DGetTraceInstructionOffsets
19 11 0009F0C0 D3DPreprocess
20 12 0009C730 D3DReadFileToBlob
21 13 0009C680 D3DReflect
22 14 002F5F50 D3DReturnFailure1
23 15 0009F850 D3DSetBlobPart
24 16 0009FBD0 D3DStripShader
25 17 0009C940 D3DWriteBlobToFile
2 18 002AEBD0 DebugSetMute


Как видно, там есть ф-ии D3DCompile, D3DCompile2, D3DDisassemble
Есть в планах следующий эксперимент:

1) Переименовать оригинальные DLL
2) Собрать проксирующие DLL которые реализуют точно такой же интерфейс
3) В DllMain проксирующих DLL при помощи LoadLibrary загружать оригинальные DLL и получать указатели на оригинальные ф-ии
4) При вызове прокси собрать передаваемые аргументы, сдампить их в файлы, и вызвать оригинальные ф-ии

Но на такой эксперимент времени пока нет, а выходные слишком короткие. Так что если меня кто-то "опередит" в этом деле и проведет такой анализ, сильно огорчаться не буду, главное результатами не забыть поделиться с общественностью wink_old.gif


Дополнительно можно посмотреть что за аргументы приходят сюда. Это метод компонента ID3D11Device который находится в d3d11.dll. Проксировать эту библиотеку самостоятельно не нужно, на гитхабах можно полно уже готовых проксей найти, даже в этой теме ссылку постили выше.


--------------------
nop
Перейти в начало страницы
 

3 страниц V   1 2 3 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 11.03.2026, 13:09