Jump to content

Search the Community

Showing results for tags 'Memory Adressen'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Forum
    • GTAGames.nl Netwerk
    • Grand Theft Auto & Red Dead
    • Overig
    • Ledenfora

Blogs

  • Mazzeltje
  • AWN
  • Marius z'n Blogje
  • .Levi.
  • OWN
  • Blog owners manual
  • WikiGTA
  • GTA Martineza
  • The Gunslingers
  • Jarno blog
  • Jowx' Blog
  • GTA2 Warzone
  • GTA-Sheep is jarig!
  • GTA Mafia Stories
  • Project's en co. - E3 Blog
  • ICT
  • Joriz Blog
  • GTAforum Verhalen
  • GFX Spot
  • The Yakuza
  • Web-dev & Programmeren
  • Rick Roll!
  • F1 News Bulletin
  • Thundertje's Blog
  • Arjen's Blog
  • The DuckDome
  • GamesThug.com
  • De Schijtlama's
  • ML Awards
  • MAF
  • Overclocking 2.0
  • blogs_blog_42
  • The Gunslingers
  • Beat Down Blog
  • LibertyKillerZ
  • PPL
  • FireFoxer
  • The Royal Guardian
  • AIRSICK Magazine.
  • De Zoepketel
  • Hoe te deleten?
  • The Covesight Community Blog
  • Fiegel's Projects
  • Gold Rush Blog
  • GTA Martineza (PUBLIC)
  • Marius z'n Blogje (PUBLIC)
  • OWN Testblog
  • OWN (PRIVATE CLUB)
  • Leeg
  • LibertyKillerZ Privé
  • Rick Roll! (PUBLIC)
  • Web-dev & Programmeren (PRIVATE CLUB)
  • Thundertje's Blog (PRIVATE)
  • Thundertje's Blog (PRIVATE CLUB)
  • FireFoxer (PRIVATE CLUB)
  • Blogs
  • Testblog
  • Wollepluis
  • Opinieblad
  • Death Blog
  • Death Inc Ledensectie
  • PC Clan Events
  • XBOX 360 Clan Events
  • CrewLife
  • Sprunk & Co Computertips
  • Graphics Blog
  • FTF Storylines archief
  • Cosily Club
  • CO-omgeving
  • Club Duck
  • Leeg
  • Forumpoker
  • Development Blog
  • Koeien en kalveren en dingen enzo
  • Covesight Propaganda
  • OWN Lustrum
  • The FL Studio Blog
  • Guard's Blog
  • JOB
  • Svenie's Blog
  • MD's Blog
  • Winning Shot
  • BBB - Bassieboy's Blog
  • Boer's Hok
  • Application Narrator
  • Phoenomena
  • Speratyal Fantasy
  • Sans Scrupules
  • The Underground
  • Everybody loves Joey
  • Sport Blog
  • Geen mening
  • Inactief
  • The Oceans Blog
  • The Oceans Kladpapier
  • The Oceans Casino
  • The Oceans Casino - Medewerkers
  • Joriz's Blog 2
  • Overig
  • Eliology
  • Top 20
  • Illuminati
  • Asphy's blog
  • Votairs blog
  • ERRWINS' Blog
  • Nick's Life in a Blog
  • Jaarboek 2016
  • WIDM
  • Michael's Fotogalerij
  • The Independent
  • The Criminal Legends Blog
  • Pit of insanity
  • De Koning
  • Idk... It's mine
  • Aron’s Schrijfkrabbels
  • Actief
  • InsideGTA
  • NicolaB's Blog
  • De Kamer van Klank
  • De Blog

Categories

  • Grand Theft Auto VI
  • Grand Theft Auto V
    • Modificaties
    • Trainers
    • Save Games
  • Grand Theft Auto IV
    • Save Games PS3
    • Save Games PC
    • HD Trailers
    • Patches
    • Modificaties
    • Editors en Tools
  • Chinatown Wars
    • PSP Save Games
  • GTA Vice City Stories
    • Save Games PSP
    • Trainers
  • GTA Liberty City Stories
    • Save Games PSP
    • Trainers & Tools
  • GTA San Andreas
    • Editors en Tools
    • Modificaties
    • Save Games Android / iOS
    • Save Games PC
    • Save Games PS2
    • Trainers
  • GTA Vice City
    • Editors en Tools
    • Trainers
    • Save Games
    • Modificaties
  • Grand Theft Auto III
    • Modificaties
    • Skins
    • Save Games
    • Trainers
    • Editors en Tools
  • GTA2
    • Editors en Tools
    • Modificaties
  • Grand Theft Auto
    • Editors en Tools
  • Handige Tools en bestanden
  • DE GROTE GTAGAMES.NL ZOMERACTIE!

Categories

  • GTA Online
  • GTA+ voordelen
  • Red Dead Online

Categories

  • Grand Theft Auto
  • Rockstar Games
  • Community
  • Red Dead Redemption
  • GTA Online Events
  • Grand Theft Auto VI

Product Groups

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 1 result

  1. Deel 1: Uitlezen en schrijven Inleiding In deze tutorial wil ik jullie laten zien wat je met geheugen (adressen) m.b.v. CLEO kan doen. Ik ga er in deze tutorial vanuit dat je al (enige) ervaring hebt met SCM, dus deze tutorial is niet voor iedereen. Uiteraard kan je hier zelf mee gaan experimenteren, maar als je niet weet wat je doet dan heb je grote kans dat GTA SA crasht. Wat zijn geheugenadressen? Voordat je aan de slag gaat met het manipuleren van het geheugen van een programma, is het wel handig om te weten wat geheugenadressen zijn. Elke computer heeft "tijdelijk" geheugen waar data in staat die gebruikt worden door programma's, dit geheugen wordt ook wel het "RAM (Random Access Memory)" geheugen genoemd. Als een programma opgestart wordt, dan krijgt deze geheugen toegewezen waar het de gegevens in kwijt kan. Dus alles wat het programma nodig heeft om te functioneren staat in het geheugen. We hebben de mogelijkheid om dat geheugen aan te passen, waardoor je dingen van het programma kan wijzigen, wat normaal niet kan. Een variabel met een geheugen adres, ook wel een pointer genoemd, is niets anders dan een waarde die verwijst naar een bepaalde locatie in het geheugen van het programma. Op die locatie in het geheugen kan een waarde staan die gebruikt wordt door het programma, maar het kan ook een functie zijn die je kan aanroepen. Een geheugenlocatie wordt vaak aangeduid met een hexadecimale waarde (voor meer informatie en een simpele uitleg hierover, zie mijn tutorial van talstelsels). In Sannybuilder kan een hexadecimale waarde herkennen doordat er de volgende tekens voor staan: 0x. Mogelijkheden De mogelijkheden die je met geheugenadressen kan doen zijn eigenlijk oneindig, omdat je letterlijk het geheugen kan manipuleren. De opcodes die je gebruikt in SCM zijn in de basis vaak een tekstuele weergaven van een functie die een geheugenadres aanroept, leest of er naartoe schrijft. Opcodes Het aanpassen van geheugenadressen is met een CLEO opcode is erg simpel, gemaakt. Zowel CLEO 3 en 4 hebben deze functionaliteit. In deze tutorial wordt er gebruik gemaakt van CLEO 4. Er zijn 2 opcodes voor geheugen adressen: 0A8C: write_memory <geheugenadres> size <aantal_bytes> value <hexadecimale waarde> virtual_protect < 0_of_1 > memory (<geheugenadres>): hier geef je de geheugenlocatie op waarnaartoe geschreven moet worden size: Hier geef je op hoeveel bytes je weg gaat schrijven, dit is afhankelijk van het datatype (zie verderop in de tutorial) value: Hier geef je de waarde of variabel met de waarde op die je wilt wegschrijven. virtual_protect: Hier geef je aan of het om geheugen gaat wat normaal alleen gelezen kan worden en niet geschreven. (1 = true, 0 = false) 0A8D: <variabel> = read_memory <geheugenadres> size <aantal_bytes> virtual_protect < 0_of_1 > Eerste waarde (<variabel>) is waar het resultaat van de gelezen bytes in komen te staan memory (<geheugenadres>): hier geef je de geheugenlocatie op waar gelezen moet worden size: Hier geef je op hoeveel bytes je weg gaat lezen, dit is afhankelijk van het datatype (zie verderop in de tutorial) virtual_protect: Hier geef je aan of het om geheugen gaat wat normaal alleen gelezen kan worden en niet geschreven. (1 = true, 0 = false) Data type Voordat je een waarde met deze opcodes kan schrijven of lezen moet je wel weten met wat voor datatype je moet werken. Bijvoorbeeld: Als in het geheugen waardes staan die gelezen moeten worden als een tekst, en ze worden gelezen als nummers (integers) dan krijg je een hele andere waarde dan je zou moeten hebben. Als voorbeeld: als ik in het geheugen de tekst “gtaforum.nl” ga opslaan dan zou dat de volgende hexadecimale waardes hebben: 67 74 61 66 6f 72 75 6d 2e 6e 6c Als ik deze waarde als (decimale) nummers zou uitlezen dan zou ik de volgende waarde krijgen: 125068950647738996618063468 Het is dus erg belangrijk dat je weet met wat voor datatype je te maken hebt. In het geheugen van GTA SA waar je mee werkt kom je de volgende datatypes (het meeste) tegen: Byte: Dit datatype bestaat uit 1 byte en word vaak als boolean (true of false) gebruikt. WORD (short): Een WORD heeft een lengte van 2 bytes, deze word vaak gebruik voor het opslaan van een ID. Dit datatype kan geen decimalen achter de komma hebben. DWORD (integer): Een DWORD (double WORD) is een gewone (32 bit) integer die een lengte heeft van 4 bytes. Dit datatype kan geen decimalen achter de komma hebben. Float: Een float is een getal die decimalen achter de komma kan hebben. In SA is een float doorgaans 4 bytes lang. Short string: Een short string is een tekenreekswaarde waarin maximaal 7 karakters in opgeslagen kunnen worden. Dit datatype is 8 bytes lang Long string: Een long string is een tekenreekswaarde waarin maximaal 15 karakters in opgeslagen kunnen worden. Dit datatype is 16 bytes lang. Welke geheugenadressen kan ik aanpassen? Allemaal leuk en aardig, maar hoe weet ik nu welk geheugenadres ik moet aanpassen? Je kan niet zomaar in het geheugen overal allerlei waardes schrijven, want elk stuk geheugen heeft een bepaald nut. Het ligt er dus aan wat je wilt gaan doen. Oké, dus ik moet precies weten wat het adres is voor wat ik wil gaan doen en ik moet het datatype weten. Maar hoe kom je nou achter al deze gegevens? Gelukkig hebben al vele andere modders uitgezocht wat de meeste gebruikte geheugenadressen zijn en wat voor datatypes erbij hoort. Hier zijn hele lijsten van te vinden. Je kan eens een kijkje nemen op: Gtamodding.com Gtaforums.com (Documenting GTA-SA memory adresses topic) Een andere manier om zelf geheugenadressen op te zoeken zijn via speciale programma’s waarmee je in het geheugen kan zoeken van een programma. Een van de veelgebruikt, en gemakkelijk voor beginners te gebruiken programma is: Cheat engine. Toepassen in de praktijk Als voorbeeld om een waarde in het geheugen aan te passen, gaan we het geld van de speler aanpassen. De geheugenlocatie van het geld is reeds bekend, als we kijken op gtamodding.com dan staat er: 0xB7CE50 - [dword] Money Wat word hiermee bedoelt wordt is: 0xB7CE50: Dit is een hexidecimale weergaven van het geheugen adres hier kan je de waarde van het geld vinden. [dword]: Dit is het datatype, als we in de lijst hierboven kijken dan weten we dat dit een nummer (integer) is van 4 bytes lang. Laten we een heel simpel script maken waarin het geld kunnen weergeven en het geld kunnen aanpassen: {$CLEO .cs} thread 'MONEY' //Geef de variable 0@ de naam MONEY const MONEY = 0@ end :MONEY1 wait 60 if 0AB0: key_pressed 0x4D // Toets M then if 0AB0: key_pressed 0x11 // Toets Ctrl then gosub @GIVE_MONEY else gosub @SHOW_MONEY end end jump @MONEY1 :SHOW_MONEY 0A8D: MONEY = read_memory 0xB7CE50 size 4 virtual_protect 0 //Lees 4 bytes op het geheugenadres 0xB7CE50 en schrijf het naar de variable 0@ (MONEY) 0ACE: show_formatted_text_box "Money: %i" MONEY //Laat een textbox zien me het de tekst Money: en de integer waarde van de variable 0@ (MONEY) return :GIVE_MONEY 0A8D: MONEY = read_memory 0xB7CE50 size 4 virtual_protect 0 //Lees 4 bytes op het geheugenadres 0xB7CE50 en schrijf het naar de variable 0@ (MONEY) 000A: MONEY += 0x2710 //Voeg de waarde 0x2710 aan het resultaat van de variable 0@ (MONEY) toe. (0x2710 = hexidecimale waarde voor 10000, hier kan je ook gewoon de decimale waarde neerzetten.) 0A8C: write_memory 0xB7CE50 size 4 value MONEY virtual_protect 0 //Schrijf 4 bytes naar de geheugenlocatie 0xB7CE50 met de waarde die staat in de variable 0@ (MONEY) return 0A93: end_custom_thread Zoals je in bovenstaand script kan zien is het zeer makkelijk het geheugen uit te lezen en om naartoe te schrijven. Dit was het eerste deel van deze tutorial. In de volgende delen zal ik uitleggen hoe je in een script zelf geheugen kan aanmaken om daar gegevens in te bewaren, en gaan we complexere dingen doen met geheugen(adressen). Als je fouten of onjuiste informatie in deze tutorial vind, meldt het dan a.u.b.
×
×
  • Create New...