eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: gurololicon (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Патчинг разрешения в EXE
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Статус: Участник

Создано: 4 февраля 2018 22:14 New!
Цитата · Личное сообщение · #1

Исследую Exe 3D игры,
Хочу добиться статичного разрешения, т.е. чтобы со стороны программы не было влияния на этот характер.
Что было предпринято мной?
0. exe не запакован ничем. Т.е. после печки Visual Studio 08 года
Во первых поиск по HEX результата не дало, скорее всего функция забивается в память и выполняется из памяти.
Во вторых ollyDbg также желаемого результата не даёт. Плох тот момент что нельзя отследить по методу message box, т.е. разрешение меняется через 3 секунды в меню игры и соответственно не за что отследить, разве что как то угадать по времени.

Вопрос, какие шаги мне следует предпринять? Создавать дамп памяти, или лучше поискать функцию которая собственно меняет разрешение, но как сделать это эффективно?
Благодарю.

Ранг: 15.3 (новичок)
Статус: Участник

Создано: 4 февраля 2018 23:00 New!
Цитата · Личное сообщение · #2

Вам вряд ли кто-то сможет помочь с таким описанием проблемы и без файла.

Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 4 февраля 2018 23:24 · Поправил: dosprog New!
Цитата · Личное сообщение · #3

Если отменить установку разрешения экрана, которую делает для себя программа,
то скорей всего она не будет работать или станет глючить. Там же не зря такое сделано.


Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 5 февраля 2018 11:42 New!
Цитата · Личное сообщение · #4

ainuribn пишет:
Хочу добиться статичного разрешения, т.е. чтобы со стороны программы не было влияния на этот характер.

так для начала необходимо найти соответствующие вызовы
или winapi:
Code:
  1. LONG ChangeDisplaySettings(
  2.   _In_ DEVMODE *lpDevMode,
  3.   _In_ DWORD   dwflags
  4. );

или DirectX:
Code:
  1. d3d9->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_mainWindow,
  2.                vp, &d3dpp, &m_pDevice)))
  3.  D3DDISPLAYMODE DisplayMode;
  4.             d3d9->EnumAdapterModes( D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, iMode, &DisplayMode );
  5. ...
  6.  d3d9->Release();

если виндовс игрушка, то DirectX очевидно

| Сообщение посчитали полезным: Gideon Vi


Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 5 февраля 2018 14:30 · Поправил: unknownproject New!
Цитата · Личное сообщение · #5

CreateWindowExA(W). И выставлять в качестве аргументов ширины и высоты любое из того, что требуется. Таким путем даже во всяком OpenGL говне можно разрешение входное менять, минуя конфиги.
Ну, а если хочется, чтобы разрешение было совсем статичным, то искать функцию, которая читает конфиг, и выпиливать из нее параметры разрешения, тогда уже наверняка заполнения нужной пары параметров ненужными данными не будет.
Большинство движков работают по такому принципу:
-Создали окно нужного разрешения;
-Развернули на полный экран (некоторые движки создают стандартное окно, а потом переключают его в полноэкранный режим);
-Создали и нарисовали ddraw/d3d объект;
-Поехали рисовать все остальное и извлекать в память скрипты, видосики и прочие шняги.

| Сообщение посчитали полезным: Gideon Vi


Ранг: 382.5 (мудрец)
Статус: Участник

Создано: 5 февраля 2018 15:01 New!
Цитата · Личное сообщение · #6

Ну, будет у игрули отображаться только четверть поля, или вся она будет на четверти окна, в лучшем случае - что толку?

Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 5 февраля 2018 15:02 · Поправил: unknownproject New!
Цитата · Личное сообщение · #7

Это от движка зависит. К совсем говеным старым играм подход другой нужен в этом плане. Более или менее адекватные движки нормально все воспримут, а если будут мессаджбоксы а-ля -разрешение не поддерживается вашей картой (такое я встречал на старых двиглах), то это патчится все достаточно легко, включая битность цветов и т.д. В частном случае можно даже аэро интерфейс форсировать у неподдерживаемой игры, если хочется играть в оконном режиме. Я бы не стал все это писать, если бы оно не было проверено на практике, и далеко не на одной игре. И я делаю патчи под все ос обычно. Геймеры это любят

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

Ранг: 105.1 (ветеран)
Статус: Участник

Создано: 5 февраля 2018 16:01 New!
Цитата · Личное сообщение · #8

В целом unknownproject правильно все говорит. В свое время делал фиксы для widescreen формата играм нативно его не поддерживающим.
Вообще было бы проще, если бы знать о какой именно игре мы тут "рассуждаем"

Ранг: 1.6 (гость)
Статус: Участник

Создано: 6 февраля 2018 23:47 · Поправил: ainuribn New!
Цитата · Личное сообщение · #9

Lambda,
unknownproject,
VOLKOFF,
http://multi-up.com/1186232

Ранг: 1.6 (гость)
Статус: Участник

Создано: 8 февраля 2018 16:44 · Поправил: ainuribn New!
Цитата · Личное сообщение · #10

ELF_7719116 пишет:
или DirectX:
Code:
  1. Code:
  2. d3d9->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_mainWindow,
  3.                vp, &d3dpp, &m_pDevice)))
  4.  D3DDISPLAYMODE DisplayMode;
  5.             d3d9->EnumAdapterModes( D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, iMode, &DisplayMode );
  6. ...
  7.  d3d9->Release();

Пока не нашёл подобие этого..

Скачавшие, кому-то удалось ещё найти это место?

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 8 февраля 2018 19:20 New!
Цитата · Личное сообщение · #11

Есть Direct3DCreate9 и строка DX9DisplaySettings:
Code:
  1. .text:009FB1EE                 push    offset aDx9displaysett ; "DX9DisplaySettings"
  2. .text:009FB1F3                 push    eax 
  3. ...
  4. .text:009FB26D                 push    20h             ; SDKVersion
  5. .text:009FB26F                 call    Direct3DCreate9

а там можно ловить, какие функи вызываются в d3dx10_42 и d3dx9_42


Ранг: 265.0 (наставник)
Статус: Участник

Создано: 8 февраля 2018 20:23 New!
Цитата · Личное сообщение · #12

> Хочу добиться статичного разрешения, т.е. чтобы со стороны программы не было влияния на этот характер.

Тут походу не важно что вдуть, это всё равно останется не понятным. Пожалейте мой разум

Ранг: 0.0 (гость)
Статус: Участник

Создано: 8 февраля 2018 20:53 New!
Цитата · Личное сообщение · #13

difexacaw пишет: Тут походу не важно что вдуть, это всё равно останется не понятным

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

Ранг: 1.8 (гость)
Статус: Участник

Создано: 8 февраля 2018 22:47 · Поправил: 0xC3 New!
Цитата · Личное сообщение · #14

КлероИндеопять после раеабилитации неадекват? ))

Ранг: 15.3 (новичок)
Статус: Участник

Создано: 9 февраля 2018 05:13 New!
Цитата · Личное сообщение · #15

0xC3, кто бы говорил. Лучше расскажи как ты кидал людей и почему ты все время пытаешься задеть Indy? =)

Ранг: 1.6 (гость)
Статус: Участник

Создано: 9 февраля 2018 12:21 New!
Цитата · Личное сообщение · #16

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

Всем удачи
 eXeL@B —› Вопросы новичков —› Патчинг разрешения в EXE
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS