Форум: "Прочее";
Текущий архив: 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