Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.16;
Скачать: CL | DM;

Вниз

Speed Gear - ускоритель или замедлитель 3D игр - принцип работы   Найти похожие ветки 

 
Кто б сомневался ©   (2009-06-18 20:07) [0]

Здравствуйте.
Есть программа, под названием Speed Gear (http://www.softcows.com/speed_gear.htm), она умеет изменять скорость движения в мире игры.
Или ускорять, либо замедлять.
К примеру при запуске шутера, включив ускорение, весь мир вокруг в игре ускоряется, оружие быстро стреляет, противники быстро передвигаются, гг начинает быстро бегать итп.
В Readmу написано что only changes the CPU speed. Но возможно кто-то знает более детальнее как это сделать? Хотел бы сделать бесплатный аналог это программы, да и целом интересны детали реализации.
программа работает и на x32 и на x64.

В папке программы лежат следующие файлы (возможно натолкнут кого-
нибудь на мысль как это работает):
hook.dll
inproc.dll
NTPerf.dll
PSAPI.DLL
WinIO.dll

Буду очень благодарен за любую информацию по этому поводу.


 
@!!ex ©   (2009-06-18 20:25) [1]

Перехват виндовых функций GetTickCount QueryPerfomanceCounter, также возможно перехват функций создания таймера(с целью уменьшить период таймера).

Довольно просто делается.


 
Кто б сомневался ©   (2009-06-18 20:32) [2]

возможно ты знаешь ссылки на обсуждения этой темы?
Было бы неплохо.


 
@!!ex ©   (2009-06-18 20:48) [3]

нет, не знаю. я знаю как это работает.
на этом форуме мы обсуждали как делать перехват методов.
Я недавно выкладывал код для JumpHook
Гугли Dll инъекции, сплайсинг и JumpHook


 
Кто б сомневался ©   (2009-06-18 20:52) [4]

Можешь вкратце описать ход работы программы? И для чего jumpHook здесь?


 
Кто б сомневался ©   (2009-06-18 20:54) [5]

Ex как ты считаешь, как Game dev. - могут ли крэшится игры от этого, все ли игры будут замедляться\ускоряться?


 
@!!ex ©   (2009-06-18 20:55) [6]

По шагам(для примера на GetTickCount):
-Внедряем Длл в нужный нам процесс
-Получаем адрес функции GetTickCount
-Ставим JumpHook на эту функцию

теперь при попытке вызвать GetTickCount управление получим мы, а не реальная функця.
В функции перехватчике
-снимаем JumpHook
-вызываем настоящий метод
-результат умножаем на кожфициент
-возвращаем результат процессу


 
@!!ex ©   (2009-06-18 20:56) [7]

> [5] Кто б сомневался ©   (18.06.09 20:54)

Если грамотно сделать - то не могут.
Если конечно игра не использует какую-то сильно специфичную логику.


 
@!!ex ©   (2009-06-18 20:56) [8]

P.S.
мультиплеер сломается полюбому.


 
@!!ex ©   (2009-06-18 20:57) [9]

забыл один пункт:
В функции перехватчике
-снимаем JumpHook
-вызываем настоящий метод
-возвращаем JumpHook на место


 
Кто б сомневался ©   (2009-06-18 21:02) [10]

Я с Hook ами еще не работал, (не пришлось просто) поэтому вопрос, а чем отличаеся jumphook от обычного хука?


 
@!!ex ©   (2009-06-18 21:04) [11]

> [10] Кто б сомневался ©   (18.06.09 21:02)

А что такое обычный хук?
Имеещь ввиду SetWindowsHook?
Это принципиально разные вещи.
WindowsHook - это перехват событиый
JumpHook - это перехват вызова функций


 
Пит   (2009-06-19 11:20) [12]


> В функции перехватчике
> -снимаем JumpHook
> -вызываем настоящий метод
> -возвращаем JumpHook на место

ничего не надо возвращать, снимать... Классический код есть у Рихтера.

Надо с одной стороны переправлять таблицы импорта, с другой стороны перехватывать GetProcAddress, LoadLibrary и прочее. И для всего подгружаемого делать точно также.

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


 
Пит   (2009-06-19 11:22) [13]

>Кто б сомневался

подскажи плиз хорошие треки псай-транса, такие, которые всем нравятся обычно. Которые на open-air звучат и т.д. Astral Projection не предлагать )


 
@!!ex ©   (2009-06-19 11:43) [14]

> [12] Пит   (19.06.09 11:20)

Это не универсальный подход.
Например для COM не работает.


 
@!!ex ©   (2009-06-19 11:44) [15]

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


 
Пит   (2009-06-19 12:33) [16]


> Это не универсальный подход.
> Например для COM не работает


а ты что предлагаешь? Изменить начало кода функции, сделав JMP?

Может не сработать по причине отсутствия прав. Это ведь секция кода, она может быть защищена?


 
Sapersky   (2009-06-19 16:31) [17]

Если хочется по-простому, по-быстрому и только для себя, то можно посмотреть madCodeHook, она всё (в смысле внедрения/перехвата) сама делает. Хотя не знаю, как там с правами и прочими тонкостями - я пробовал ещё на 98-м.


 
Кто б сомневался ©   (2009-06-19 20:50) [18]


> Если хочется по-простому, по-быстрому и только для себя,
>  то можно посмотреть madCodeHook,


Тоже идея. Но мне пора уже разобраться вплотную с хуками. Давно пора :)
Да и бесплатная программа не помешает. А то куда это 30 баксов за мелочь такую..

По поводу качественного Psychedelic Goa :
Послушай следующих исполнителей:

1200 Micrograms
Amithaba Buddha
Bamboo Forest
Blue Planet Corporation
Chi-A.D - Virtual Spirit (1997)
Electric Universe - Cosmic Experience (2004)
Etheogenic - не совсем гоа
GMS - выборочно
Hallucinogen - старый добрый галюциноген, рекомендую (только не альбом InDub)
Logic Bomb - выборочно, трэк Halojaner один из лучших
Man with No Name
Pleiadians
Yahel - у него много хорошего именно в этом стиле
Cosmosis - выборочно.

XP Voodoo (dj только сводит) - The Mystery of XP (2002)
сборники Transient

и в целом goa 90 года, - он мелодичный и разнообразный, не то что сейчас.


 
NailMan ©   (2009-06-19 20:58) [19]

И Aerosis с Agneton-ом тоже надо послушать! Забористый быстрый Гоа

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13



Страницы: 1 вся ветка

Текущий архив: 2009.08.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
15-1245270610
Юрий
2009-06-18 00:30
2009.08.16
С днем рождения ! 18 июня 2009 четверг


15-1245406780
Styx_
2009-06-19 14:19
2009.08.16
3D collision detection


2-1245498247
Mouse
2009-06-20 15:44
2009.08.16
Количество нажатий кнопки мыши


3-1221819683
Igor
2008-09-19 14:21
2009.08.16
Выгрузка данных из таблицы в Oracle


15-1244723703
dmk
2009-06-11 16:35
2009.08.16
Сомнения по работе