[Guide] SpeedHack for coders

04/28/2010 22:08 ADACH#1
Данный тред предназначается людям которые знают о сплайсах, таблице экспорта, типе вызова thiscall и иных заклинаниях ос Windows
Немного теории...
в dll PhysicsReq.dll есть несколько полезных ф-й
Code:
sign:?SetRunSpeed@Proxy@physics@@QAEXM@Z
def:void __thiscall physics::Proxy::SetRunSpeed(float)

sign: ?SetWalkSpeed@Proxy@physics@@QAEXM@Z
def: void __thiscall physics::Proxy::SetWalkSpeed(float)
Таким образом их можно использовать без зазрения совести, не смотря на версию игры:)

Для этого необходимо знать адреса процедур (GetProcAddress в помощь), и указатель this данного обьекта(это домашнее задание:) )

процедура спидхака
Code:
[b][color=#006699]void [/color][/b][color=#006699][/color]speedHack[b][color=#CC0000]([/color][color=#006699]bool [/color][/b][color=#006699][/color]activate[b][color=#CC0000], [/color][color=#006699]float [/color][/b][color=#006699][/color]speed[b][color=#CC0000])
{
    [/color][color=#006699]if[/color][color=#CC0000](![/color][/b][color=#CC0000][/color]thisProxyPhysics[b][color=#CC0000])
        [/color][color=#006699]goto [/color][/b][color=#006699][/color]_error[b][color=#CC0000];
    [/color][color=#006699]if[/color][color=#CC0000](![/color][/b][color=#CC0000][/color]activate [b][color=#CC0000]&& [/color][/b][color=#CC0000][/color]savedSpeed [b][color=#CC0000]< [/color][/b][color=#CC0000][/color][color=#AC00A9]1[b][/b][/color][b][color=#CC0000])
        [/color][color=#006699]goto [/color][/b][color=#006699][/color]_error[b][color=#CC0000];
    [/color][color=#006699]if[/color][color=#CC0000]([/color][/b][color=#CC0000][/color]activate[b][color=#CC0000])
    {
        [/color][/b][color=#CC0000][/color]_asm
        [b][color=#CC0000]{
            [/color][/b][color=#CC0000][/color]mov ecx[b][color=#CC0000],[[/color][/b][color=#CC0000][/color]thisProxyPhysics[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]push [b][color=#CC0000][[/color][/b][color=#CC0000][/color]speed[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]call [b][color=#CC0000][[/color][/b][color=#CC0000][/color]SetRunSpeedOrig[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]mov ecx[b][color=#CC0000],[[/color][/b][color=#CC0000][/color]thisProxyPhysics[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]push [b][color=#CC0000][[/color][/b][color=#CC0000][/color]speed[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]call [b][color=#CC0000][[/color][/b][color=#CC0000][/color]SetWalkSpeedOrig[b][color=#CC0000]]
        }
    }
    [/color][color=#006699]else
    [/color][color=#CC0000]{
        [/color][/b][color=#CC0000][/color]_asm
        [b][color=#CC0000]{
            [/color][/b][color=#CC0000][/color]mov ecx[b][color=#CC0000],[[/color][/b][color=#CC0000][/color]thisProxyPhysics[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]push [b][color=#CC0000][[/color][/b][color=#CC0000][/color]savedSpeed[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]call [b][color=#CC0000][[/color][/b][color=#CC0000][/color]SetRunSpeedOrig[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]mov ecx[b][color=#CC0000],[[/color][/b][color=#CC0000][/color]thisProxyPhysics[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]push [b][color=#CC0000][[/color][/b][color=#CC0000][/color]savedWalkSpeed[b][color=#CC0000]]
            [/color][/b][color=#CC0000][/color]call [b][color=#CC0000][[/color][/b][color=#CC0000][/color]SetWalkSpeedOrig[b][color=#CC0000]]
        }
    }
    [/color][/b][color=#CC0000][/color]speedHackEnabled [b][color=#CC0000]= [/color][/b][color=#CC0000][/color]activate[b][color=#CC0000];
    [/color][/b][color=#CC0000][/color]MessageBeep[b][color=#CC0000]([/color][/b][color=#CC0000][/color]MB_OK[b][color=#CC0000]);
    [/color][color=#006699]return[/color][color=#CC0000];
[/color][/b][color=#CC0000][/color]_error[b][color=#CC0000]:
    [/color][/b][color=#CC0000][/color]speedHackEnabled [b][color=#CC0000]= [/color][color=#006699]false[/color][color=#CC0000];
    [/color][/b][color=#CC0000][/color]MessageBeep[b][color=#CC0000]([/color][/b][color=#CC0000][/color]MB_ICONASTERISK[b][color=#CC0000]);
}[/color][/b]
Но нужно не забывать что - игра может сама устанавливать, скорость игрока.
Установив сплайсы, подобные этим, мы обезопасим себя от установки скорости игрой.
Code:
[b][color=#006699]void [/color][/b][color=#006699][/color]__declspec[b][color=#CC0000]([/color][/b][color=#CC0000][/color]naked[b][color=#CC0000]) [/color][/b][color=#CC0000][/color]SetRunSpeedSplice[b][color=#CC0000]()
{
    [/color][/b][color=#CC0000][/color]_asm
    [b][color=#CC0000]{
        [/color][color=#0000FF]xor [/color][/b][color=#0000FF][/color]eax[b][color=#CC0000],[/color][/b][color=#CC0000][/color]eax
        cmp byte ptr [b][color=#CC0000][[/color][/b][color=#CC0000][/color]speedHackEnabled[b][color=#CC0000]],[/color][/b][color=#CC0000][/color]al
            jz _origFunc
        retn [color=#AC00A9]4
[/color]_origFunc[b][color=#CC0000]:
        [/color][/b][color=#CC0000][/color]mov eax[b][color=#CC0000], [[/color][/b][color=#CC0000][/color]esp[b][color=#CC0000]+[/color][/b][color=#CC0000][/color][color=#AC00A9]4[b][/b][/color][b][color=#CC0000]] [i][/i][/color][/b][color=#CC0000][i][/i][/color][i][color=#008000]//version specific
        [/color][/i][color=#008000][/color]mov [b][color=#CC0000][[/color][/b][color=#CC0000][/color]savedSpeed[b][color=#CC0000]],[/color][/b][color=#CC0000][/color]eax
            jmp [b][color=#CC0000][[/color][/b][color=#CC0000][/color]SetRunSpeedOrig[b][color=#CC0000]]

    }
}

[/color][color=#006699]void [/color][/b][color=#006699][/color]__declspec[b][color=#CC0000]([/color][/b][color=#CC0000][/color]naked[b][color=#CC0000]) [/color][/b][color=#CC0000][/color]SetWalkSpeedSplice[b][color=#CC0000]()
{
    [/color][/b][color=#CC0000][/color]_asm
    [b][color=#CC0000]{
        [/color][color=#0000FF]xor [/color][/b][color=#0000FF][/color]eax[b][color=#CC0000],[/color][/b][color=#CC0000][/color]eax
            cmp byte ptr [b][color=#CC0000][[/color][/b][color=#CC0000][/color]speedHackEnabled[b][color=#CC0000]],[/color][/b][color=#CC0000][/color]al
            jz _origFunc
            retn [color=#AC00A9]4
[/color]_origFunc[b][color=#CC0000]:
        [/color][/b][color=#CC0000][/color]mov eax[b][color=#CC0000], [[/color][/b][color=#CC0000][/color]esp[b][color=#CC0000]+[/color][/b][color=#CC0000][/color][color=#AC00A9]4[b][/b][/color][b][color=#CC0000]] [i][/i][/color][/b][color=#CC0000][i][/i][/color][i][color=#008000]//version specific
        [/color][/i][color=#008000][/color]mov [b][color=#CC0000][[/color][/b][color=#CC0000][/color]savedWalkSpeed[b][color=#CC0000]],[/color][/b][color=#CC0000][/color]eax
            jmp [b][color=#CC0000][[/color][/b][color=#CC0000][/color]SetWalkSpeedOrig[b][color=#CC0000]]
    }
}[/color][/b]
If you english is good, please translate this post to english.
04/28/2010 22:52 masscool#2
Напридумали гавна, юзали бы stdcall и не парились XD
04/29/2010 04:00 kulspruta#3
баян, но мб кому поможет.
04/29/2010 17:42 ADACH#4
Quote:
Originally Posted by kulspruta View Post
баян
Угу), но подобной реализации для данной игры не встречал (может быть потому - что gh этой игры стал интересоваться недавно?).

Quote:
Originally Posted by kulspruta View Post
но мб кому поможет.
Просто захотелось показать, что кроме банального патча exe есть и еще более выигрышные варианты.
05/01/2010 10:07 musahi#5
Умудрился понять что тут написано и сделал, син в бане...
05/01/2010 11:36 kulspruta#6
Так-то.
05/01/2010 11:42 ADACH#7
Quote:
Originally Posted by musahi View Post
Умудрился понять что тут написано и сделал, син в бане...
Спидхак в городе включал?)
05/02/2010 04:08 ryuji296#8
-_- i love the title...
05/02/2010 10:09 kulspruta#9
Quote:
Originally Posted by ryuji296 View Post
-_- i love the title...
lol
05/07/2010 18:05 lordied#10
Thx.
But in russian =D
05/12/2010 22:35 Shokata11#11
google translator use
good work
05/16/2010 00:57 Abduss#12
eine frage ... nicht lachen aber ich habe keine ahnung von dem ganzen ist es trtzdem möglich für mich das irgendwie auf die reihe zu bekommen?

wenn ja könnte jemand eine kleine einweisung für "ungebildete" schreiben xD
05/16/2010 09:02 masscool#13
Niemand wird schreiben. Lies &#252;ber inline-hooking und thiscall calling convention, siehe sources und alles wird O.K. Im Titel ist es "for coders" geschrieben, du musst gut Coder sein, dann wirst du alles verstehen.
07/17/2010 22:51 Matheus Bezerra#14
i only can't understand it =/