- Сообщения
- 61
- Реакции
- 8
Сегодня пытался реверсить wf, но наткнулся на какую-то дичь, которую раньше не встречал.
Ну как обычно делается - сунул в иду Game.exe, но она чёт понты начала какие-то крутить, никаких почти функций, а на старте jmp PSM_0 впрочем то jmp в никуда так сказать. Далее дошло что PSM_0 это экспорт с ocevogyv.dll, но когда решил глянуть что в нём то PSM_0 оказалось какой-то бредовый массив который я позже ундефайнул и он просто распался в db ??. Позже погуглив выяснилось, чтобы адекватно ида разобрала код надо делать дампы. Вроде продвинулся, но вопросы из этого выдвинулись многие:
1) Как определяется значение PSM_0 если игра на своём старте сразу делает на него jmp? Я предполагал что из DllMain какого-нибудь или DllEntryPoint который по непонятным причинам не помечается идой что она используются, хотелось бы узнать почему.
2) Как реализовать такой п****ц в своём коде?
3) Чем мыло или крайтеки или кто там собрали свой код? Что-то мне шепчет что это не VS.
4) Почему не могу найти где подгружается в игру mrac.dll и запускается pcnsl.exe? чекал вызовы LoadLibrary в Game.exe но там и намёка на мрак нет, в стрингах тоже глухо... pcnsl в строках тоже не упоминается, мб я плохо ищу или что...? Ну подумал мб там в других файлах подгружаются или что.. прочекал всю папку с игрой хексом, и никакого упоминания мрака или pcnsl не нашёл. Уже ощущение что у меня крыша едет... Хотя известно что mrac.dll на экране загрузки вф подгружается.
5) На этом моменте мой зад уже начал гореть и я решил запустить отладчик. Я вобщем-то уже и не ждал успеха и догадывался что будет... Да. "я запустил меня послали". pcnsl.exe который я пытался найти вежливо послал меня с такой отладкой. Ок. Запускаю дебаг ещё раз и хожу по одной инструкции, дело доходит до инструкции ocevogyv.dll: iret и опять пкнсл плачет. Вот и вопрос: Можно ли как-то обойти это, и конечно-же как такое реализовать в своём коде?
6) Нашёл я где-то как находить так называемый SSystemGlobalEnvironment, который вроде-бы часть cry engine 3 и эту структуру менять нельзя, но сигнатура в игре и документации не совпадает, вообще хотелось бы просто комментариев насчёт этого.
Ну как обычно делается - сунул в иду Game.exe, но она чёт понты начала какие-то крутить, никаких почти функций, а на старте jmp PSM_0 впрочем то jmp в никуда так сказать. Далее дошло что PSM_0 это экспорт с ocevogyv.dll, но когда решил глянуть что в нём то PSM_0 оказалось какой-то бредовый массив который я позже ундефайнул и он просто распался в db ??. Позже погуглив выяснилось, чтобы адекватно ида разобрала код надо делать дампы. Вроде продвинулся, но вопросы из этого выдвинулись многие:
1) Как определяется значение PSM_0 если игра на своём старте сразу делает на него jmp? Я предполагал что из DllMain какого-нибудь или DllEntryPoint который по непонятным причинам не помечается идой что она используются, хотелось бы узнать почему.
2) Как реализовать такой п****ц в своём коде?
3) Чем мыло или крайтеки или кто там собрали свой код? Что-то мне шепчет что это не VS.
4) Почему не могу найти где подгружается в игру mrac.dll и запускается pcnsl.exe? чекал вызовы LoadLibrary в Game.exe но там и намёка на мрак нет, в стрингах тоже глухо... pcnsl в строках тоже не упоминается, мб я плохо ищу или что...? Ну подумал мб там в других файлах подгружаются или что.. прочекал всю папку с игрой хексом, и никакого упоминания мрака или pcnsl не нашёл. Уже ощущение что у меня крыша едет... Хотя известно что mrac.dll на экране загрузки вф подгружается.
5) На этом моменте мой зад уже начал гореть и я решил запустить отладчик. Я вобщем-то уже и не ждал успеха и догадывался что будет... Да. "я запустил меня послали". pcnsl.exe который я пытался найти вежливо послал меня с такой отладкой. Ок. Запускаю дебаг ещё раз и хожу по одной инструкции, дело доходит до инструкции ocevogyv.dll: iret и опять пкнсл плачет. Вот и вопрос: Можно ли как-то обойти это, и конечно-же как такое реализовать в своём коде?
6) Нашёл я где-то как находить так называемый SSystemGlobalEnvironment, который вроде-бы часть cry engine 3 и эту структуру менять нельзя, но сигнатура в игре и документации не совпадает, вообще хотелось бы просто комментариев насчёт этого.