Speed hack и им подобные

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Speed hack и им подобные

Сообщение Gotha » 27.04.2006 (Чт) 17:26

Кто-нибудь когда-нибудь имел дело с данными технологиями на vb?
Для меня vb основной язык программирования и хотелось бы попробовать слепить сие на vb. Далее выложу как это делается на C

Код: Выделить всё
DWORD last_real=0;
DWORD last_fake=0;
DWORD last_ticks=0;
DWORD speed_ticks_left=0;
DWORD phase_ticks_left=0;
//DWORD speed_runtime=0;

DWORD qp_orig_offset;

//=========================================================
typedef BOOL    (WINAPI *QueryPerformanceCounterFunc)(LARGE_INTEGER*);
QueryPerformanceCounterFunc QueryPerformanceCounterPtr=NULL;
BOOL WINAPI newQueryPerformanceCounter(LARGE_INTEGER *lp)
{
        BOOL  ret       = (*QueryPerformanceCounterPtr)(lp);
       
      DWORD cur_ticks = timeGetTime();
       
        DWORD new_real  = lp->LowPart;
        if(!last_real){ last_real = last_fake = new_real; return ret; }

        // determine wether we are allowed to use speed hack (speed_ticks_left)
        DWORD ticks_passed = cur_ticks-last_ticks;      last_ticks = cur_ticks;
        if (phase_ticks_left>ticks_passed) // phase running
        {
                phase_ticks_left -= ticks_passed;
                if(cvar.speed>1)
                {
                        // consume speed ticks
                        if(speed_ticks_left>ticks_passed) { speed_ticks_left -= ticks_passed; }
                        else                              { speed_ticks_left =0;              }
                }
        } else { // phase not running or just timed out

                if(cvar.speed>1)
                {   // setup a new phase
                        speed_ticks_left = cvar.speedon;
                        phase_ticks_left = cvar.speedon+cvar.speedoff;
                } else {
                        phase_ticks_left = 0;           
                }
        }

        //===================
        double factor = (cvar.speed<1 ? 1:cvar.speed);
        if(!speed_ticks_left) { factor = 1.0; }

        DWORD diff_real = (DWORD)(new_real-last_real);
        DWORD diff_fake = (DWORD)(factor * double(diff_real));
        lp->LowPart     = last_fake + diff_fake;
       

        last_fake += diff_fake;
        last_real += diff_real;

        return ret;
}

гуру, помогите :wink:
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 17:33

Смысл выложенного неполноценного обрубка кода в чём?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 27.04.2006 (Чт) 17:40

я так понял что идет подмена функции и возврат другого значения от чего расчет времени в процессах идет по другому.. (кусочек кода кинул тем, кто про спидхаки слышит впервые) шибко не ругайте, я на форуме недавно, да и не супер програмер я
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 27.04.2006 (Чт) 18:01

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

можно конечно тупо перевести, но что такое например cvar?
Весь мир матрица, а мы в нем потоки байтов!

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 27.04.2006 (Чт) 18:50

вот исходничок одной утилиты для КС, она включает в себя спидхак
Вложения
ogc-9-source.zip
(256.27 Кб) Скачиваний: 26
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 27.04.2006 (Чт) 19:04

Gotha
1) Если ты не знаешь, как это сделать, то тебе это не надо.
2) Перехвать API на VB - вещь трудная, глючная и неблагодарная, перехват лучше написать на асме и проводить коммуникацию с основной прогой через SendMessage.
Изображение

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 27.04.2006 (Чт) 19:37

keks-n
ОЧЕНЬ нато, но в асме я ни в дуб зубом (
я копал пример с месаджбоксом от Темыча, но увы..
если кто поможет с частью на асме - буду очень благодарен :oops:

чую придется самому асм терзать :cry:
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 27.04.2006 (Чт) 19:42

я просто пишу одну вещь и хочется туда еще спидхак прикрутить...
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 27.04.2006 (Чт) 20:48

Gotha
Ай-ай-ай....читерить нехорошо.....
Но за сорцы ogc спасиюо =))

Я понял что он хочет сделать - увеличить системный тик, используемый в играх для корректного передвижения моделей. Спид Хак это читерский способ заставить модели двигатся быстрее.

ну...все кто хоть раз имел дело с играми - поймёт.
Лучше думать чем жевать.

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 27.04.2006 (Чт) 20:53

ну как сказать читерить... скажем так автоматизирую нудные однообразные действия :wink:

теме ап :D , она все еще очень актуальна ибо будет первым полезным применением отлова апи функций (если помогут конечно :D )
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 27.04.2006 (Чт) 22:41

Будет время-напишу, и даже без IPC.
Изображение

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 27.04.2006 (Чт) 23:43

а что ты имеешь в виду под IPC (просто вечер и я туплю уже, спать охота) :oops:
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 9:26

InterProcess Communication
Изображение

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 28.04.2006 (Пт) 9:35

Gotha
IPC - InterProcess Communication.
В принципе можно реализовать через shared memory или COM
Лучше думать чем жевать.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 9:41

Я думаю, что запрос у основного процесса-вещь лишняя. Всё настройки будут заданы, при установке перехвата. Сейчас начал писать, и, если не будет форс-мажорных обстоятельств, то Gotha получит свою DLL.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 11:10

Написал.
Инструкция:
1. Как смотреть пример
Запускаешь exe. Он просто вызывает функцию и показывает результат. Запускаешь проект. Вводишь в окошко Process ID(в заголовке exe выведен) и жмёшь "поставить хук". Чудо! Вызывающая прога показывает другое значение
2. Как юзать
Находишь нужный PID.Вызываешь SetGlobalHook True, PID . Ставишь, с помощью SetTime значение, которое будет возвращаться. SetTime можно вызывать, когда угодно.
Чуть не забыл - перехват распространяется ТОЛЬКО на 1 процесс =)
Вложения
SpeedHack.rar
(5.91 Кб) Скачиваний: 45
Изображение

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 28.04.2006 (Пт) 12:30

keks-n
огромное спасибо! не перевелись еще гуру :wink:
мааленькая просьба - нельзя ли исходнички библиотеки? :oops:
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 13:17

Ушли на мыло.
Изображение

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 28.04.2006 (Пт) 13:31

:)
Гоше дал, а нам (Хакеру, Флексу, Мне) зажал....чудной человек :)
Лучше думать чем жевать.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 13:39

Дык, это... Никто и не просил... А если чего надо-всегда пожалуйста.
Просто тот же Хакер ничего интересного не предлагал(предлагал узнать температуру ЦП, а у меня датчикофф нету :( )
Изображение

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 28.04.2006 (Пт) 14:53

спасибо, все супер, только я заметил тенденцию библиотеки иногда не "подхватывать" приложение и значение ф-ции не подменяется - от чего бы это могло быть?
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 15:05

От использования GetTickCount(Я лично тока его и пользую. А о QueryPerformance... от тебя в первый раз услышал =) ). Ты сам просил для него не делать.
Изображение

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 28.04.2006 (Пт) 15:24

а как нато поменять сорец библы чтобы и ГетТикКаунт меняло отдельно?
(кстати за библу спасибо - теперь ее мучаю, экспрементирую,пытаюсь геттиккаунт добавить)
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 16:20

Замени на это:
Код: Выделить всё
SetTime proc li:DWORD
m2m  li1,li
xor eax,eax
ret
SetTime endp

Intercept_F proc
mov eax, li1
ret
Intercept_F endp


И вверху поставь:
Код: Выделить всё
sFunctnName      db   "GetTickCount", 0h



Соответсвенно параметры SetTime: (ByVal T as Long)

А чтобы ничего не напутал-вот библа для GetTickCount.
Вложения
gtchook.rar
(1.04 Кб) Скачиваний: 19
Изображение

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 28.04.2006 (Пт) 16:42

спасибо! :cheers:
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 28.04.2006 (Пт) 17:53

а как с помощью этой библиотечки заставить компонент таймера в vb "тикать" быстрее?
в ide я пробовал с помощью Load/Free library получать PID и хучить библиотеку vba60.dll а потом менять значение времени... тикает он как и раньше :cry: хук на msvbvm60.dll тоже ничего не изменил

в чем загвоздка? может у меня руки кривые? :oops:
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 28.04.2006 (Пт) 18:03

Gotha
PID -идентификатор процесса
Если всё делать своими ручками, они скоро отвалятся !

Gotha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 106
Зарегистрирован: 20.04.2006 (Чт) 10:55
Откуда: Красногорск

Сообщение Gotha » 28.04.2006 (Пт) 18:37

Kovu
прости мну за здоровый нубизм, но ведь сам контрол таймера кроется в msvbvm60? а не в самой программе, там он только наследуется, значит рыть нужно в msvbvm, или я не прав? а значит как получить pid msvbvm?

LoadLibrary function maps the specified executable module into the address space of the calling process.


в общем я заблудился
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 19:02

Однако...
Контрол то в библе, но она висит в АП процесса, следовательно все изменения его памяти её касаются, следовательно передав PID процесса ты получаешь перехват вызовов со ВСЕХ загруженных библиотек.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.04.2006 (Пт) 19:04

И еще... Таймер юзает функцию CreateTimer, создающую системный таймер, вызов callback функции которого, если не ошибаюсь никак не зависит от этих 2 функций.
Изображение

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 197

    TopList  
cron