Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
15-1245468521
sl8er
2009-06-20 07:28
2009.08.16
Нахождение полинома Жегалкина для булевой функции


2-1245418903
Student85236
2009-06-19 17:41
2009.08.16
ClientSocket в Таймере


15-1245044573
blurcode
2009-06-15 09:42
2009.08.16
Срубил меня остеохондроз, видимо.


2-1245399017
Б
2009-06-19 12:10
2009.08.16
Скорость алгоритма.


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский