warrockh4cksSite Admin
Geregistreerd op: 16 Jul 2008 Berichten: 43
|
Geplaatst: 17 Jul 2008 15:55:43 Onderwerp: Hacks maken in Visual Studio tutorial |
|
|
Een introductie voor het maken van hacks voor Warrock in Vb.net
Sorry, dit is geen kopieren - plakken tutorial. Je kan kopieren, plakken en falen, of je kan 10 minuten van je leven gebruiken om dit te lezen. Dan zal je precies begrijpen wat je nou aan het doen bent. Het is aan jou wat je gaat doen.
Oke, eerst moet je visual studio downloaden.
We hebben nu een prachtig nieuw programma, maar wat moeten we ermee? Nou, dat ga ik nu vertellen. Want hoe werkt het hacken van warrock nou precies?
Als warrock aanstaat, dan loopt het in het memory. Onthoudt dat alle programma's bestaan uit codes. En wat we willen, is dat we deze code aan willen passen.
De gemakkelijkste weg om dit uit te leggen is dit: Stel je voor dat warrock aanstaat, en je stamina gaat naar beneden. Een nummer, bij stamina is het 100 als het vol is, daalt als we rennen. Maar stel je voor dat we het op 100 kunnen houden.
Maar hoe kan je dat nummer nou op 100 houden? Nou dit nummer is eigenlijks samen met een offset en een adress, of bij dit voorbeeld een pointer.
Behandel nu ook een adres als een nummer ( ook al is het het niet, het is een hexadecimal )
Wat ons hack programma zal doen, is constant dat adres vertellen dat de value 100 is. Dus dan hebben we unlimited stamina.
Wanneer je stamina codeerd zal deze functie writefloatpointer zijn.
Dit is voor veel hacks hetzelfde.
Nu gaan we recht in het code gedeelte, voor het geval dat je je verveelde, dus nu gaan we echt een stamina hack maken.
Nu ga ik je leren hoe je Visual Studio moet starten:
Klik op de Windows Forms Application en vul na name in wat jij wil als naam voor dit project
Klik op OK
Oke dit is wat je nu ziet:
Was dat niet makkelijk?
Als je dit niet begrijpt: stop dan direct, verder zul je niet komen: Probeer het nog eens
Oke, aan de linkerkant zie je een toolbox. In de toolbox vind je veel tools om je hacks te maken
we hebben er nu nog maar 2 nodig. 1 hiervan is een Button: vind de button en maak er 2 van.
Klik 1 van de buttons ( maar 1 keer )
En je ziet aan de rechterkant een box met button propertions.
In de button propertions kan je je button een namen geven, groter/ kleiner maken, een andere kleur geven en nog veel meer.
We gaan het een andere naam geven om het makkelijker te maken. Dit is wat we gaan doen:
Er is een propertion, genaamd Text. Na dat zie je Button 1 ( of button 2 als je button 2 geselecteerd hebt )
Klik deze text en verander het in Stamina On
Oke, klik nu de 2e button ( maar 1 keer )
Do hetzelfde als de eerste: maar verander de text nu naar Stamina Off
Wow je hebt net je 2 buttons gemaakt voor de hack. Dit zorgt ervoor dat het aan en uit gaat
Maar het werkt nu nog niet, je moet nog veel meer doen
Het ziet er nu zo uit, als je het correct hebt gedaan:
Oke, de volgende stap:
Aan de linkerkant zie je nog steeds de toolbox, waar je ook de 2 buttons uithaalde ( 1 )
Vind timer in deze box en maak er 1 van. ( 2 )
Klik nu de timer aan ( maar 1 keer ) ( 3 )
En doe hetzelfde als de buttons ( maar nu is het de Name ) : verander de Name naar Stamina ( 4 )
En verander de interval naar 100 (voor elke hack de interval is 100, behalve als het aangegeven is) ( 4 )
Dubbel klik de Stamina timer.
Je ziet deze code:
Code: | Private Sub Stamina_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stamina.Tick
End Sub |
WriteFloatPointer
Oke, nu ben je zo ver dat je de stamina code in moet voeren, maar ik ga eerst de code uitleggen.
We weten dat de functie WriteFloatPointer is, en we hebben al uitgelegd dat adresses hexadecimal zijn, en zo zijn ook offsets.
Nu om de compiler te vertellen dat de code is hexadecimal, voeg je een &H voor je addy en offset. De waarde is een sterker nummer.
En dat is alleen gelaten. Nu gaan we de adressen van elkaar scheiden, offset en value met een comma, Zodat het er zo uit zall zien:
(&Haddress, &Hoffset, value)
Nu zetten we WriteFloatPointer vooraan omdat dit de functie is, en de functie verteld de compiler wat we moeten doen met dit.
Nu ziet het er dus zo uit:
Code: | WriteFloatPointer (&Haddress, &Hoffset, value) |
En deze code gaat in een timer, omdat we willen dat de value op 100 blijft.
Dus het zal zijn WriteFloatPointer (&Haddress, &Hoffset, 100)
, vervang de adress en de offset ook, je zal dat idee wel zien:
Offset: 28C
Onthoudt dat je &H voor de offset zet om aan te geven dat het een hexadecimaal is, dus het ziet er zo uit: &H28C
Dus stamina is nu: WriteFloatPointer (&Haddress, &H28C, 100)
Oke dan gaan we weer terug naar de buttons.
Dit kan je doen door recht op Form1.vb te klikken.
Klik nu op de button Stamina On ( dubbel klikken )
Zet dit tussen Private Sub and End Sub
Code: | Stamina.Enabled = True |
Dan zal het er zo uitzien
Oke, wat heb je net gedaan?
Code: | Stamina.Enabled = True |
- Dit zal het spel vertellen, dat wanneer je op de button Stamina on klikt, dat de timer, dat de naam Stamina had, aan zal gaan.
En ik had al verteld, wanneer de timer aangaat, dan zal het adress, 137733A0 met offset 28C zal op 100 gezet worden
Nu ga je naar de Stamina Off button ( Dubbel klik )
En Zet dit tussen Private Sub and End Sub
Code: | Stamina.Enabled = False |
- Dit zal het spel vertellen, dat wanneer je op de button Stamina Off klikt, dat de timer, dat de naam Stamina had, uit zal gaan.
Wanneer de timer uitgaat, dan zal het niks meer naar het spel toezenden.
( Voor andere hacks, verander de naam Stamina naar de timers zijn naam )
Nu zal het er zo uitzien:
Onthoudt voor stamina dat de adress is de playerpointer. Je kan deze vinden door te zoeken in het forum voor een lijst met adresses.
kijk in discussions forum voor deze lijst ( bovenaan in stickies ), elke week, meestal donderdag veranderen de adresses: offsets veranderen eigenlijks nooit
Maar nu hebben we een module nodig. Jammer genoeg ga ik niet uitleggen hoe een module werkt, maar als je ernaar kijkt wanneer je het coding gedeelte snapt,
zul je een idee krijgen hoe het werkt. Dit is het enige kopieren plakken wat je moet doen.
Een korte uitleg over de module:
De module werkt simpel samen met warrock, en het leest en schrijft data. We kunnen zonder deze module onze hacks coderen, maar de module maakt het simpeler.
Klik project, add module, en voeg deze code toe ( laat niet je binnenste n00b te enthiousiast worden )
Code: | Private Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle
As Integer, ByVal dwProcessId As Integer) As Integer
Private Declare Function WriteProcessMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal
lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function WriteFloatMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal
lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function ReadFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As
IntPtr, ByRef buffer As Single, ByVal size As Int32, ByRef lpNumberOfBytesRead As Int32) As Boolean
Private Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal
lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Integer) As Integer
Public Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
Public RBuff1 As Long
Public RBuff2 As Single
Public RBuff3 As Integer
'WriteMemory
Public Function WriteMemory(ByVal Address As Integer, ByVal Value As Long, ByVal Bytes As Integer)
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
WriteProcessMemory(processHandle, Address, Value, Bytes, Nothing)
CloseHandle(processHandle)
End Function
'ReadFloat
Public Function ReadFloat(ByVal Address As Single)
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Address, RBuff1, 4, Nothing)
CloseHandle(processHandle)
Return RBuff1
End Function
'WriteFloat
Public Function WriteFloat(ByVal Address As Integer, ByVal Value As Single)
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
WriteFloatMemory(processHandle, Address, Value, 4, Nothing)
CloseHandle(processHandle)
End Function
'ReadLong
Public Function ReadLong(ByVal Address As Integer)
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Address, RBuff1, 4, Nothing)
CloseHandle(processHandle)
Return RBuff1
End Function
'ReadFloatPointer
Public Function ReadFloatPointer(ByVal Base As Integer, ByVal Offset As Short)
Dim fullAddress As Long
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Base, RBuff1, 4, Nothing)
fullAddress = RBuff1 + Offset
ReadFloat(processHandle, fullAddress, RBuff2, 4, Nothing)
Return RBuff2
CloseHandle(processHandle)
End Function
'ReadLongPointer
Public Function ReadLongPointer(ByVal Base As Integer, ByVal Offset As Short, ByVal Bytes As Integer) 'ReadLongPointer
Dim fullAddress As Long
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Base, RBuff1, 4, Nothing)
fullAddress = RBuff1 + Offset
ReadProcessMemory(processHandle, fullAddress, RBuff3, Bytes, Nothing)
Return RBuff3
CloseHandle(processHandle)
End Function
'WriteFloatPointer
Public Function WriteFloatPointer(ByVal Base As Integer, ByVal Offset As Short, ByVal Value As Single)
Dim fullAddress As Long
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Base, RBuff1, 4, Nothing)
fullAddress = RBuff1 + Offset
WriteFloatMemory(processHandle, fullAddress, Value, 4, Nothing)
CloseHandle(processHandle)
End Function
'WriteLongPointer
Public Function WriteLongPointer(ByVal Base As Integer, ByVal Offset As Short, ByVal Value As Long, ByVal Bytes As Integer)
Dim fullAddress As Long
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Base, RBuff1, 4, Nothing)
fullAddress = RBuff1 + Offset
WriteProcessMemory(processHandle, fullAddress, Value, Bytes, Nothing)
CloseHandle(processHandle)
End Function
'NOP
Public Function NOP(ByVal Address As Integer, ByVal value As Integer)
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
WriteProcessMemory(processHandle, Address, value, 1, Nothing)
CloseHandle(processHandle)
End Function
Public Function ReadNOP(ByVal Address As Integer)
Dim warrockLookUp As Process() = Process.GetProcessesByName("WarRock")
If warrockLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, warrockLookUp(0).Id)
ReadProcessMemory(processHandle, Address, RBuff1, 1, Nothing)
CloseHandle(processHandle)
Return RBuff1
End Function
'WriteASM
Public Function WriteASM(ByVal Address As Long, ByVal ASM As String)
Dim i As Integer
Dim i2 As Integer
i2 = 1
While i < (Len(ASM) / 2)
Call NOP(Address + i, Val("&H" & Mid$(ASM, i2, 2)))
i = i + 1
i2 = i2 + 2
End While
End Function |
Als je de laatste adresses en offstes hebt, klik build, en dan build ( jou project naam )
The .exe zal gesaved worden in visualstudio/projects/jou project naam/bin/release/exe
Als je nu vista hebt, klik met rechtermuisknop op het programma en klik: run as administrator, anders run het normaal.
Als alles goed is gegaan werkt je stamina hack. Nu kan je andere hacks maken die gelijk gecodeerd zijn als stamina.
Paar voorbeelden:
no fall damage, superjump, no recoil
Ze zijn bijna hetzelfde gecodeerd, hier zijn een paar codes:
no fall damage
offset:260
value -2000
superjump
ofset:178
value: whatever you want it to be.
Je kan de gebruiker de value laten veranderen door een textbox in te voegen, en in plaats van de value textbox1.text in te vullen.
WriteMemory
Laten we nu naar een andere functie gaan, writememory.
Writmemory gaat ook in een timer. Maar het is iets anders gecodeerd dan writefloatpointer.
Hier is hoe het eruit ziet.
Code: | writememory(&Haddy, value, 4) |
Kijk! geen offset!
let niet op de 4, het hoort er gewoon. ( Voor de mensen die het toch willen weten: het verteld dat het een 4 byte lange code is )
Nu voor de value is het heel erg verschillend dan de writefloatpointer code, omdat de value meestal is:
0 voor uit
en
1 voor aan
simpel he?
Je kan dit ook doen voor instant spawn, maar instant spawn heeft 2 addresses. Dit is geen probleem, we moeten gewoon 2 writemmory's in
de timer zetten
Het zal er zo uitzien voor instant spawn:
De value zal 0 zijn, en dat is het! Je hebt nu instant spawn voor jezelf
Onthoudt voor veel hacks dat je iets aan zet, bijvoorbeeld voor player box zet je het aan, dan zal de value 1 zijn in plaats van uit, dat 0 is
Andere write memory hacks:
scope- (value is 1)
player boxes - (value is 1)
base circles - (value is 1)
Crosshairs - (value is 1)
Vehicle GPS - (value is 1)
No bounds - (value is 0, er zijn write memory's)
No spread - (value is 0)
fast hacks
health - (value is 1092779973)
flag - (value is 1092779973)
repair - (value is 1092779973)
ammo - (value is 1092779973)
full bright - (value is 1092779973)
Fifth Slot - (value is 4 for fifth slot, 5 for 6th slot, e.t.c)
glasswalls (value on is 1, off is 1166127104)
No water (Gok de value)
WriteFloat
Nu volgende functie is writefloat
writefloat is veel simpeler en het ziet er zo uit
Code: | writefloat (addy, value) |
Nu zou je het idee van coderen moeten hebben, als je het niet snapt ga dan terug en lees het nog eens omdat ik nu minder ga uitleggen als ervoor
types writefloat hacks
Far fog (value is 1092779973)
nearfog (value is 0)
Nu voor writefloatpointer
writelong pointer is hoofdzakelijk voor weapon hacks, ik heb het nergens anders voor gebruikt.
Het is een ietsje langere code, dus blijf erbij:
Code: | WriteLongPointer(addy, offset, value, 4) |
Alweer, let niet op de 4, het hoort er gewoon. ( Voor de mensen die het toch willen weten: het verteld dat het een 4 byte lange code is )
Het adres voor weapon hack is de player pointer, de offset is 4c, en veranderd bijna nooit.
De value is wat je zelf wil wat voor wapen je wil (MOET NOG KOMEN)
Nu even een snelle break van alle hacks, en een beetje extra codes.
Als je een hotkey in je programma wil hebben, wanneer je en bepaalde knop drukt dat het uitgevoerd moet worden.
Hier is hoe je dit kan doen:
De functie is getasynckeystate
GetAsyncKeyState wordt gevolgd door een nummer, dat aangeeft welke knop je moet drukken op je toetsenbord.
Dus het zal er zo uitzien: GetAsyncKeyState(1)
Maar we willen het in een "if"statement.
Introductie voor de If statements
If, als je een if hebt
Dan heb je eook een then nodig na de functie, en dan een end if.
Je kan ook een Else hebben, dus als de benodigde scenario niet toegankelijk is, het zal iets anders moeten doen
Eerste basic If statement, hier hoe het eruit zal zien in het engels:
Code: | if you smell bad then
take a shower
end if |
( vertaling van de text : Als je slecht ruikt neem dan een douch end if )
Met een else
Code: | if you smell bad then
take a shower
else
dont take a shower
end if |
( vertaling van de text Als je slecht ruikt neem dan een douch else neem niet een douch end if )
Je kan ook een if binnen in een andere if zetten,
Nu voor GetAsyncKeyState:
Code: | it looks like so
if GetAsyncKeyState(number) then
{code}
else
{other code}
end if |
Wil je weten welk nummer voor welke key is? Hier is een lijst: (KOMT NOG)
NOP
Nu sleep ik je terug in warrock hacking, maar wees niet bezorgd: nog maar 1 functie, maar de moeilijkste
Deze functie is NOP
Nou: wat doet nop? Hier zijn wat dingen wat je moet onthouden over nop:
-NOP staat voor geen operatie, dat betekent dat het disabled/ enabled iets direct.
-Je stopt nooit NOP in een tiemr. Ja het werkt in een timer, maar het is slecht voor je trainer en kan je systeem laten crashen
Nu verder met coderen.
Ik start met een simpele nop, ESP:
on (offset = 76)
off (offset = 75)
Eerst, hier is hoe een NOP code eruit ziet:
(Vertel mij niet dat je vergeten bent om &H voor de offset te zetten, of wel?)
Er zijn on bytes en off bytes voor nop hacks, onthoudt dat.
Dus 1 button zou een on Nop hebben en een andere Off. Het enige verschil is de offset. Het adress is hetzelfde.
Oke hier gaan we, je hebt een NOP Hack, waarom had ik het over de moeilijkste functie? Nou laten we unlimited ammo proberen.
Unlimited ammo heeft 3 addys, en deze zijn 3 keer nopped.
Dat is dus 9 lijnen van codes.
Pak NOP(addy, offset) als je bouw blok
Oke, we hebben 3 addy's, laten we het uitbreiden:
NOP(addy, offset)
NOP(addy, offset)
NOP(addy, offset)
Oke, we hebben 3 addys! Maar wanneer je nopping 3 keer wat gebeurd er dan? Je add 1 aan de addy.
Zo laten we gaan kijken.
Je hebt de addy, dus we gaan elke keer 1 toevoegen:
addy
addy + 1
addy +2
Nu doen we dat voor elk adress:
it will look like so
addy1
***********, offset)
*********** +1, offset)
*********** +2, offset)
addy2
***********, offset)
***********+1, offset)
*********** +2, offset)
addy3
***********, offset)
***********+1, offset)
*********** +2, offset)
Heb je nu het idee?
unlimited ammo offset is 90
Volgende NOP hack is antikick.
Erg populair: als je N klikt wanneer je antikick aan hebt zal je niet kicken. Het zal de hele kick process beeindigen.
De offset voor antikick is 90.
En het is maar 1 addy, maar nopped 5 keer
Dus ...
addy
addy +1
........+2
.........+3
..........+4
Daar heb je het
Een andere NOP is boneshot.
Maar 1 addy, maar 1 keer nopped
offset on : 31
offset off : 85
Dat is het nu. Als je wil weten hoe dig, skywalker, glide, bunnyhop etc. werken. Ik vertel je een groot geheim: Ze zijn allemaal variant van superjump
Ik hoop dat je hier iets van hebt geleerd!!!
Greetz,
warrockh4cks |
|