All language subtitles for [English (auto-generated)] CS420 - 2 Memory Editing 1 - Game Hacking Course [DownSub.com]

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese Download
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,190 --> 00:00:04,470 hello and welcome back to CS 420 a 2 00:00:04,470 --> 00:00:07,230 course on game hacking this section is 3 00:00:07,230 --> 00:00:08,670 going to be on the basics of the 4 00:00:08,670 --> 00:00:11,160 operating system and a memory scanning 5 00:00:11,160 --> 00:00:13,049 which is arguably the most important 6 00:00:13,049 --> 00:00:15,120 skill in game hacking we're not going to 7 00:00:15,120 --> 00:00:16,740 go deep into operating systems since 8 00:00:16,740 --> 00:00:18,600 that can be an entire course on its own 9 00:00:18,600 --> 00:00:20,279 we're just gonna learn the parts that 10 00:00:20,279 --> 00:00:21,960 are relevant to game hacking and then 11 00:00:21,960 --> 00:00:22,740 we'll move on 12 00:00:22,740 --> 00:00:25,230 memory scanning is a technique used to 13 00:00:25,230 --> 00:00:27,180 find things like health and gold in a 14 00:00:27,180 --> 00:00:29,130 video game we'll go over how that works 15 00:00:29,130 --> 00:00:31,170 and I'll demonstrate a few live examples 16 00:00:31,170 --> 00:00:34,649 at the end let's briefly dive into what 17 00:00:34,649 --> 00:00:36,620 we need to know about operating systems 18 00:00:36,620 --> 00:00:39,180 the operating system does quite a few 19 00:00:39,180 --> 00:00:40,379 things but these two are the most 20 00:00:40,379 --> 00:00:42,809 important first it manages the hardware 21 00:00:42,809 --> 00:00:45,629 in your computer and this part really 22 00:00:45,629 --> 00:00:47,430 isn't that important to game hackers so 23 00:00:47,430 --> 00:00:49,500 we won't touch on this very much the 24 00:00:49,500 --> 00:00:51,149 second thing it does is that it manages 25 00:00:51,149 --> 00:00:52,760 the programs running on your computer 26 00:00:52,760 --> 00:00:55,680 when you double-click an exe file when 27 00:00:55,680 --> 00:00:57,750 you open an application it's the 28 00:00:57,750 --> 00:01:00,210 operating system that is responsible for 29 00:01:00,210 --> 00:01:03,329 making sure that program runs and let's 30 00:01:03,329 --> 00:01:06,780 look at how that works so here we have 31 00:01:06,780 --> 00:01:08,790 the executable file for squally on the 32 00:01:08,790 --> 00:01:11,369 left and that's a file that exists on 33 00:01:11,369 --> 00:01:13,049 your hard drive and when you 34 00:01:13,049 --> 00:01:15,570 double-click that exe file the operating 35 00:01:15,570 --> 00:01:17,369 system basically takes that file and 36 00:01:17,369 --> 00:01:20,430 copies it into RAM a couple other things 37 00:01:20,430 --> 00:01:23,340 happen behind the scenes but again it's 38 00:01:23,340 --> 00:01:24,570 one of those things where you don't need 39 00:01:24,570 --> 00:01:26,729 to know all the details now if you want 40 00:01:26,729 --> 00:01:28,170 to know just for the sake of knowing you 41 00:01:28,170 --> 00:01:30,030 can read up on loaders and executable 42 00:01:30,030 --> 00:01:32,430 file formats and I'll put links to the 43 00:01:32,430 --> 00:01:34,170 relevant Wikipedia articles in the 44 00:01:34,170 --> 00:01:36,570 description it's worth mentioning that 45 00:01:36,570 --> 00:01:38,670 when we hack the game we hack the copy 46 00:01:38,670 --> 00:01:41,759 in RAM not on disk this means none of 47 00:01:41,759 --> 00:01:44,189 the changes we make are permanent if we 48 00:01:44,189 --> 00:01:45,810 break something or crash the game it 49 00:01:45,810 --> 00:01:47,040 doesn't matter we could just run the 50 00:01:47,040 --> 00:01:49,200 game again this is the main difference 51 00:01:49,200 --> 00:01:51,240 between software cracking and game 52 00:01:51,240 --> 00:01:53,549 hacking when cracking software you 53 00:01:53,549 --> 00:01:55,170 generally hack the version on disk 54 00:01:55,170 --> 00:01:57,750 rather than the version in RAM this is 55 00:01:57,750 --> 00:01:59,729 because in software cracking the goal is 56 00:01:59,729 --> 00:02:02,130 to make a paid program free by removing 57 00:02:02,130 --> 00:02:04,350 serial key checks and that sort of thing 58 00:02:04,350 --> 00:02:06,540 and game hacking you would still want to 59 00:02:06,540 --> 00:02:07,920 be able to play the game normally when 60 00:02:07,920 --> 00:02:10,318 you want to for this reason we only hack 61 00:02:10,318 --> 00:02:12,750 the version in RAM 62 00:02:12,750 --> 00:02:14,640 so let's cover some of the tools that 63 00:02:14,640 --> 00:02:16,950 game hackers use cheat engine is the 64 00:02:16,950 --> 00:02:18,360 most well known tool it's been around 65 00:02:18,360 --> 00:02:21,660 since about 2003 it's well tested and it 66 00:02:21,660 --> 00:02:23,940 gets the job done the other tool listed 67 00:02:23,940 --> 00:02:26,460 here is squalor this is the tool that 68 00:02:26,460 --> 00:02:28,260 I've been working on it's faster than 69 00:02:28,260 --> 00:02:30,120 cheat engine but it's newer and has some 70 00:02:30,120 --> 00:02:31,890 issues if you're watching this via and 71 00:02:31,890 --> 00:02:33,810 20:19 probably just stick with cheat 72 00:02:33,810 --> 00:02:35,700 engine however if you're watching this 73 00:02:35,700 --> 00:02:37,710 video in that future checkout squalor 74 00:02:37,710 --> 00:02:38,970 I'll put links to both in the 75 00:02:38,970 --> 00:02:41,640 description one thing to note is that 76 00:02:41,640 --> 00:02:43,650 when you're installing cheat engine they 77 00:02:43,650 --> 00:02:45,630 have optional promoted software that 78 00:02:45,630 --> 00:02:47,010 they bundle with the Installer you have 79 00:02:47,010 --> 00:02:48,750 to make sure to decline those during the 80 00:02:48,750 --> 00:02:50,970 installation process so no just spam the 81 00:02:50,970 --> 00:02:52,640 next button just be careful about that 82 00:02:52,640 --> 00:02:55,170 so next let's talk a bit about how these 83 00:02:55,170 --> 00:02:57,570 tools work all right 84 00:02:57,570 --> 00:03:00,390 so because the operating system has so 85 00:03:00,390 --> 00:03:02,790 much power over running programs we can 86 00:03:02,790 --> 00:03:04,709 abuse the operating system to help us 87 00:03:04,709 --> 00:03:07,680 cheat in games you can say hey operating 88 00:03:07,680 --> 00:03:09,150 system you see that game running over 89 00:03:09,150 --> 00:03:11,610 there go ahead and change health to 100 90 00:03:11,610 --> 00:03:13,709 for me and as long as you tell it 91 00:03:13,709 --> 00:03:15,660 exactly where to look it'll follow your 92 00:03:15,660 --> 00:03:16,170 orders 93 00:03:16,170 --> 00:03:18,540 every operating system has a bunch of 94 00:03:18,540 --> 00:03:20,489 things you can ask it to do these 95 00:03:20,489 --> 00:03:22,920 functionalities are known as an API or a 96 00:03:22,920 --> 00:03:25,140 library I used to find these terms 97 00:03:25,140 --> 00:03:26,970 confusing but they really just mean code 98 00:03:26,970 --> 00:03:28,880 that somebody else wrote that I can use 99 00:03:28,880 --> 00:03:31,470 the operating system is code it's 100 00:03:31,470 --> 00:03:34,500 written in C and C++ we're able to use 101 00:03:34,500 --> 00:03:37,019 some of that code when we develop our 102 00:03:37,019 --> 00:03:39,269 hacking tools on windows this is known 103 00:03:39,269 --> 00:03:41,519 as the windows api and on mac and linux 104 00:03:41,519 --> 00:03:44,099 they have their own API 105 00:03:44,099 --> 00:03:46,049 some of these are really powerful some 106 00:03:46,049 --> 00:03:47,579 of these functions that they let us use 107 00:03:47,579 --> 00:03:49,469 are very powerful and allow us to cheat 108 00:03:49,469 --> 00:03:51,689 in games one example is this right 109 00:03:51,689 --> 00:03:53,549 process memory function here on the 110 00:03:53,549 --> 00:03:55,950 screen it's used to edit things running 111 00:03:55,950 --> 00:03:58,200 in RAM which is exactly what we need to 112 00:03:58,200 --> 00:04:00,390 cheat in our games you could just fire 113 00:04:00,390 --> 00:04:03,510 up a C++ or C sharp program and use this 114 00:04:03,510 --> 00:04:06,120 code to edit the program this is how 115 00:04:06,120 --> 00:04:08,760 both cheat engine and squalor work I'm 116 00:04:08,760 --> 00:04:10,139 going to leave it at that for now later 117 00:04:10,139 --> 00:04:11,939 I'll have a lecture on how you would 118 00:04:11,939 --> 00:04:13,950 actually implement a memory editor using 119 00:04:13,950 --> 00:04:16,289 the windows API and I'll go into much 120 00:04:16,289 --> 00:04:17,918 more detail there 121 00:04:17,918 --> 00:04:19,779 if you recall from before I mentioned 122 00:04:19,779 --> 00:04:21,488 that hacking can be broken up into three 123 00:04:21,488 --> 00:04:23,860 steps find the thing exploit the thing 124 00:04:23,860 --> 00:04:26,379 and observe the results for this hacking 125 00:04:26,379 --> 00:04:28,840 method and memory scanning is the act of 126 00:04:28,840 --> 00:04:30,460 finding the number you want to change 127 00:04:30,460 --> 00:04:32,469 it's like hitting ctrl F in your browser 128 00:04:32,469 --> 00:04:34,990 to search for something in our case we 129 00:04:34,990 --> 00:04:36,939 want to use it to find health mana Gold 130 00:04:36,939 --> 00:04:39,400 skill points the XYZ coordinates of the 131 00:04:39,400 --> 00:04:42,189 player anything numeric once you find 132 00:04:42,189 --> 00:04:43,840 the number you want to change you can 133 00:04:43,840 --> 00:04:46,300 edit it with memory editing and then you 134 00:04:46,300 --> 00:04:47,199 just see if it worked 135 00:04:47,199 --> 00:04:50,110 and you're done before I get into this 136 00:04:50,110 --> 00:04:52,210 we need to update our understanding of 137 00:04:52,210 --> 00:04:55,449 what a computer program actually is so 138 00:04:55,449 --> 00:04:57,610 last lecture I said we could think of a 139 00:04:57,610 --> 00:04:59,409 program as a bunch of zeros and ones and 140 00:04:59,409 --> 00:05:00,879 I also mentioned that this was a very 141 00:05:00,879 --> 00:05:03,580 bad understanding I promised that we 142 00:05:03,580 --> 00:05:04,779 would keep building on this so let's 143 00:05:04,779 --> 00:05:07,389 build on it so if this was the memory of 144 00:05:07,389 --> 00:05:09,430 a game loaded into Ram then somewhere in 145 00:05:09,430 --> 00:05:11,469 the sea of zeros and ones would be the 146 00:05:11,469 --> 00:05:14,319 players health now let's say we somehow 147 00:05:14,319 --> 00:05:16,060 figured out that this particular 148 00:05:16,060 --> 00:05:18,669 sequence of zeros and ones somehow 149 00:05:18,669 --> 00:05:20,979 represents the player's health one might 150 00:05:20,979 --> 00:05:22,509 think that in order to increase the 151 00:05:22,509 --> 00:05:24,069 player's health we could just delete the 152 00:05:24,069 --> 00:05:27,099 old bits and put in a bunch of ones now 153 00:05:27,099 --> 00:05:29,259 this is wrong this is not how it works 154 00:05:29,259 --> 00:05:31,419 look how laggy this is I'd released the 155 00:05:31,419 --> 00:05:33,189 one key a long time ago and it's still 156 00:05:33,189 --> 00:05:35,289 trying to catch up the problem is that 157 00:05:35,289 --> 00:05:37,389 when you insert a new digit it has to 158 00:05:37,389 --> 00:05:39,490 shift over potentially billions of other 159 00:05:39,490 --> 00:05:42,399 digits and this is super slow let's 160 00:05:42,399 --> 00:05:44,680 explore how we actually accomplish our 161 00:05:44,680 --> 00:05:46,500 goal 162 00:05:46,500 --> 00:05:49,020 to make things less confusing computer 163 00:05:49,020 --> 00:05:51,060 scientists a long time ago agreed to 164 00:05:51,060 --> 00:05:53,310 group bits into eight this grouping of 165 00:05:53,310 --> 00:05:56,130 eight bits is known as a byte this is a 166 00:05:56,130 --> 00:05:57,810 lot cleaner to look at and a lot cleaner 167 00:05:57,810 --> 00:06:00,120 to work with this restriction is baked 168 00:06:00,120 --> 00:06:01,770 and almost everything in your computer 169 00:06:01,770 --> 00:06:04,140 files have to be a multiple of eight bit 170 00:06:04,140 --> 00:06:06,060 it's impossible to have a file that only 171 00:06:06,060 --> 00:06:07,920 takes up seven bits it would have to be 172 00:06:07,920 --> 00:06:09,990 rounded up to eight if I have a text 173 00:06:09,990 --> 00:06:11,790 file that had just has one letter in it 174 00:06:11,790 --> 00:06:15,300 its size on the disk is one byte so now 175 00:06:15,300 --> 00:06:16,680 let's say we found the players health 176 00:06:16,680 --> 00:06:19,860 let's say it's this byte here if we 177 00:06:19,860 --> 00:06:22,110 wanted to change it we would simply 178 00:06:22,110 --> 00:06:26,360 overwrite the existing value 179 00:06:26,360 --> 00:06:28,189 now I know we haven't learned a binary 180 00:06:28,189 --> 00:06:30,050 yet next lecture we'll dive into how 181 00:06:30,050 --> 00:06:32,000 binary actually works but for now just 182 00:06:32,000 --> 00:06:34,430 bear with me it's important to note that 183 00:06:34,430 --> 00:06:36,650 because we can't insert new data that 184 00:06:36,650 --> 00:06:38,270 means whoever programmed the game had to 185 00:06:38,270 --> 00:06:41,330 decide the limit in advance it turns out 186 00:06:41,330 --> 00:06:44,840 the maximum for one byte of data is 255 187 00:06:44,840 --> 00:06:46,550 if you took this and converted it to 188 00:06:46,550 --> 00:06:50,569 decimal it would be 255 and that works 189 00:06:50,569 --> 00:06:52,460 pretty well for health because a lot of 190 00:06:52,460 --> 00:06:53,750 games will have like a hundred max 191 00:06:53,750 --> 00:06:55,639 health so you never have to go worry 192 00:06:55,639 --> 00:06:57,310 about going over the memory limit 193 00:06:57,310 --> 00:06:59,900 however if you have gold in a video game 194 00:06:59,900 --> 00:07:02,330 this one byte is not enough so you would 195 00:07:02,330 --> 00:07:04,729 actually have to use multiple bytes a 196 00:07:04,729 --> 00:07:07,310 lot of games will use for when you have 197 00:07:07,310 --> 00:07:11,330 4 bytes the limits about 2 billion so 198 00:07:11,330 --> 00:07:12,889 programmers will take this group it into 199 00:07:12,889 --> 00:07:16,270 4 and say this is actually one number 200 00:07:16,270 --> 00:07:19,030 sometimes they'll use groupings of one 201 00:07:19,030 --> 00:07:24,500 two four or even eight I'm highlighting 202 00:07:24,500 --> 00:07:27,230 the right amount here yeah so this is 203 00:07:27,230 --> 00:07:29,660 our new updated mental model of what a 204 00:07:29,660 --> 00:07:32,000 computer program is it's still not 205 00:07:32,000 --> 00:07:34,310 perfect but this is far less insulting 206 00:07:34,310 --> 00:07:36,620 than our original model we know that a 207 00:07:36,620 --> 00:07:38,360 computer program is made up of a bunch 208 00:07:38,360 --> 00:07:40,310 of bytes which are groups of eight bits 209 00:07:40,310 --> 00:07:42,740 and to represent larger numbers a 210 00:07:42,740 --> 00:07:44,840 programmer can group bytes together to 211 00:07:44,840 --> 00:07:46,640 give themselves more digits to work with 212 00:07:46,640 --> 00:07:49,700 these can be groups of one two four and 213 00:07:49,700 --> 00:07:51,440 eight which will learn the reasons for 214 00:07:51,440 --> 00:07:53,840 it in a later lecture and I glossed over 215 00:07:53,840 --> 00:07:55,400 this but you may have been able to 216 00:07:55,400 --> 00:07:57,200 figure out that binary numbers can be 217 00:07:57,200 --> 00:07:59,480 converted to decimal numbers we can 218 00:07:59,480 --> 00:08:01,460 convert the highlighted group of four 219 00:08:01,460 --> 00:08:04,360 bytes in the bottom left into the number 220 00:08:04,360 --> 00:08:08,210 623 luckily for us most tools will 221 00:08:08,210 --> 00:08:09,920 handle this sort of thing for us so 222 00:08:09,920 --> 00:08:11,270 we've never have to really look at 223 00:08:11,270 --> 00:08:13,700 binary 224 00:08:13,700 --> 00:08:16,100 now on to memory scanning I mentioned 225 00:08:16,100 --> 00:08:17,600 earlier that memory scanning is like 226 00:08:17,600 --> 00:08:19,940 hitting ctrl F in your browser except 227 00:08:19,940 --> 00:08:21,380 instead of a searching for text on a 228 00:08:21,380 --> 00:08:23,150 page we're searching for numbers and 229 00:08:23,150 --> 00:08:26,210 memory so if a player has 100 health 230 00:08:26,210 --> 00:08:28,310 we'll assume that we're searching for a 231 00:08:28,310 --> 00:08:29,990 number that can be up to four bytes long 232 00:08:29,990 --> 00:08:31,220 because like I said that's what most 233 00:08:31,220 --> 00:08:34,309 programmers choose and there is a 234 00:08:34,309 --> 00:08:36,230 problem with this though and allow me to 235 00:08:36,230 --> 00:08:38,929 demonstrate what the issue is it's not 236 00:08:38,929 --> 00:08:42,350 as easy as just hitting ctrl F so let's 237 00:08:42,350 --> 00:08:44,930 say that it did work exactly like ctrl F 238 00:08:44,930 --> 00:08:46,550 does in your browser and we want to 239 00:08:46,550 --> 00:08:48,320 search for 100 because that's how much 240 00:08:48,320 --> 00:08:51,080 health we have well we quickly run into 241 00:08:51,080 --> 00:08:53,330 the problem of there's just too many 242 00:08:53,330 --> 00:08:56,120 matches it turns out that most games 243 00:08:56,120 --> 00:08:58,610 take up anywhere from 1 gigabyte to 8 244 00:08:58,610 --> 00:09:01,850 gigabytes of memory for larger games and 245 00:09:01,850 --> 00:09:04,100 this can be about 4 billion numbers 246 00:09:04,100 --> 00:09:05,600 which means we'll get a lot of matches 247 00:09:05,600 --> 00:09:08,090 so we need to figure out how to narrow 248 00:09:08,090 --> 00:09:10,880 down our search and there's a cool magic 249 00:09:10,880 --> 00:09:12,320 trick that makes that possible but 250 00:09:12,320 --> 00:09:14,090 before we can learn about that we need 251 00:09:14,090 --> 00:09:17,630 to know what an address is first let's 252 00:09:17,630 --> 00:09:19,130 go back to our mental model of what a 253 00:09:19,130 --> 00:09:21,080 computer program is there are these 254 00:09:21,080 --> 00:09:23,720 groups of 8 bits these bytes that start 255 00:09:23,720 --> 00:09:25,340 at the top left and go from left to 256 00:09:25,340 --> 00:09:28,400 right until they reach the end well we 257 00:09:28,400 --> 00:09:30,920 can call that first group of bits that 258 00:09:30,920 --> 00:09:34,490 first byte address 0 because it exists 259 00:09:34,490 --> 00:09:36,320 at the first location it's kind of weird 260 00:09:36,320 --> 00:09:38,690 but programmers tend to start list with 261 00:09:38,690 --> 00:09:42,140 0 instead of 1 so the first one is 0 262 00:09:42,140 --> 00:09:44,810 then it goes to 1 and 2 now if we keep 263 00:09:44,810 --> 00:09:48,190 going this first group of 4 bytes 264 00:09:48,190 --> 00:09:52,730 starts at address 116 now even though it 265 00:09:52,730 --> 00:09:55,160 occupies 4 addresses we refer to it by 266 00:09:55,160 --> 00:09:58,700 the first address in the sequence now 267 00:09:58,700 --> 00:10:00,980 just to you know give an analogy right 268 00:10:00,980 --> 00:10:02,510 just because you have a mansion just 269 00:10:02,510 --> 00:10:03,620 because you have a lot of property you 270 00:10:03,620 --> 00:10:05,270 still only have one street address and 271 00:10:05,270 --> 00:10:08,600 the same is kind of true here now it's 272 00:10:08,600 --> 00:10:11,420 important to note this example here in 273 00:10:11,420 --> 00:10:14,630 the center sia address 169 is where we 274 00:10:14,630 --> 00:10:17,480 have the value 100 and this can get very 275 00:10:17,480 --> 00:10:19,340 confusing for people right you don't 276 00:10:19,340 --> 00:10:21,710 want to confuse addresses and values the 277 00:10:21,710 --> 00:10:23,660 value is whatever the bits inside 278 00:10:23,660 --> 00:10:25,940 represent and the address is just the 279 00:10:25,940 --> 00:10:26,900 location 280 00:10:26,900 --> 00:10:28,820 all right I want to reiterate this so 281 00:10:28,820 --> 00:10:31,190 here the value is just a hundred if we 282 00:10:31,190 --> 00:10:33,740 look at this box but it exists at a bat 283 00:10:33,740 --> 00:10:40,540 position 169 value 100 position 169 284 00:10:40,540 --> 00:10:43,840 banja the value can change but the 285 00:10:43,840 --> 00:10:45,730 address can never change this will 286 00:10:45,730 --> 00:10:48,010 always be a hundred sixty-nine but 100 287 00:10:48,010 --> 00:10:50,200 can change if the bits change right if I 288 00:10:50,200 --> 00:10:52,420 kept flipping the first bit this value 289 00:10:52,420 --> 00:10:55,330 would change to a hundred once all gone 290 00:10:55,330 --> 00:10:58,900 flip between these two a hundred it 291 00:10:58,900 --> 00:11:01,570 changes a hundred and one right but the 292 00:11:01,570 --> 00:11:04,580 address will always be one sixty nine 293 00:11:04,580 --> 00:11:06,589 so now that we know a little bit about 294 00:11:06,589 --> 00:11:08,600 addresses we can actually learn how to 295 00:11:08,600 --> 00:11:11,029 solve that problem from earlier that 296 00:11:11,029 --> 00:11:13,940 problem of we have too many matches so 297 00:11:13,940 --> 00:11:15,500 the best way for me to do this is just 298 00:11:15,500 --> 00:11:17,570 to jump into some live examples and 299 00:11:17,570 --> 00:11:21,220 we'll solve this together 300 00:11:21,420 --> 00:11:23,190 so here we have an early build of 301 00:11:23,190 --> 00:11:25,500 squally open on the left and we have 302 00:11:25,500 --> 00:11:28,110 cheatengine open on the right the first 303 00:11:28,110 --> 00:11:29,400 thing we're gonna want to do is tell 304 00:11:29,400 --> 00:11:31,050 cheat engine which game we're trying to 305 00:11:31,050 --> 00:11:33,090 hack and we do that with this little 306 00:11:33,090 --> 00:11:35,310 glowing select a process button the 307 00:11:35,310 --> 00:11:38,610 computer icon here we pick squally and 308 00:11:38,610 --> 00:11:40,140 now cheat engine knows what we're trying 309 00:11:40,140 --> 00:11:41,450 to do 310 00:11:41,450 --> 00:11:44,360 now our goal is to hack our health you 311 00:11:44,360 --> 00:11:46,910 see here we have eleven health and we 312 00:11:46,910 --> 00:11:49,570 want to change that to heal ourselves up 313 00:11:49,570 --> 00:11:52,010 so what we do in cheatengine is we can 314 00:11:52,010 --> 00:11:54,320 search for eleven now there's a lot of 315 00:11:54,320 --> 00:11:56,480 overwhelming looking settings here but 316 00:11:56,480 --> 00:11:58,700 we can ignore most of them just know 317 00:11:58,700 --> 00:12:00,890 that we're using four bytes I mentioned 318 00:12:00,890 --> 00:12:02,630 earlier that that's how most programmers 319 00:12:02,630 --> 00:12:06,170 store integers and we hit the first scan 320 00:12:06,170 --> 00:12:10,910 button now we got a lot of matches right 321 00:12:10,910 --> 00:12:13,730 we have about 16,000 matches which is a 322 00:12:13,730 --> 00:12:16,610 considerable amount so there's no way 323 00:12:16,610 --> 00:12:17,930 we're just gonna be able to flip through 324 00:12:17,930 --> 00:12:20,540 these and you know eyeball which one of 325 00:12:20,540 --> 00:12:22,700 these is health we can ignore this 326 00:12:22,700 --> 00:12:24,200 column for now so just know there's 327 00:12:24,200 --> 00:12:26,030 address which we covered earlier and 328 00:12:26,030 --> 00:12:28,700 value address here is being represented 329 00:12:28,700 --> 00:12:30,200 as a hex number but it's still the same 330 00:12:30,200 --> 00:12:32,740 exact concept 331 00:12:32,740 --> 00:12:36,250 so how do we narrow this list down well 332 00:12:36,250 --> 00:12:38,110 since we already know everything that's 333 00:12:38,110 --> 00:12:41,080 11 we can actually just go ahead and 334 00:12:41,080 --> 00:12:43,150 take some damage in the game so I'm 335 00:12:43,150 --> 00:12:46,060 gonna get hit again and now we want to 336 00:12:46,060 --> 00:12:48,160 know which things used to be 11 but our 337 00:12:48,160 --> 00:12:50,500 eight now and that's how scanning works 338 00:12:50,500 --> 00:12:53,260 so I go ahead and type 8 and it'll 339 00:12:53,260 --> 00:12:55,330 search this list right so now we're 340 00:12:55,330 --> 00:12:56,590 searching Arden 341 00:12:56,590 --> 00:12:58,120 we're searching on our search 342 00:12:58,120 --> 00:13:00,070 essentially right just narrowing the 343 00:13:00,070 --> 00:13:01,870 search down so if I hit this there's 344 00:13:01,870 --> 00:13:03,700 only one result we found it that was 345 00:13:03,700 --> 00:13:06,090 super easy it only took two scans 346 00:13:06,090 --> 00:13:08,710 sometimes it can take a lot more but for 347 00:13:08,710 --> 00:13:10,690 us we got pretty lucky now I just 348 00:13:10,690 --> 00:13:13,120 double-click this value change it to 16 349 00:13:13,120 --> 00:13:15,760 and then the game I have 16 health that 350 00:13:15,760 --> 00:13:18,010 easy 351 00:13:18,010 --> 00:13:20,320 now let's jump into another example 352 00:13:20,320 --> 00:13:23,050 using squalor my software so here 353 00:13:23,050 --> 00:13:24,490 there's a drop down just go ahead and 354 00:13:24,490 --> 00:13:26,740 hit this and pick squally from the list 355 00:13:26,740 --> 00:13:29,710 similar to cheat engine and up in this 356 00:13:29,710 --> 00:13:31,870 top bar all the settings are good too 357 00:13:31,870 --> 00:13:35,140 it's already set to a four byte integer 358 00:13:35,140 --> 00:13:40,630 and we can go ahead and just type in 380 359 00:13:40,630 --> 00:13:41,860 because now we're gonna try and change 360 00:13:41,860 --> 00:13:45,220 your gold in our minigame hexxus so I go 361 00:13:45,220 --> 00:13:48,370 ahead and start this scan I get a fair 362 00:13:48,370 --> 00:13:50,470 number of matches there's not a lot only 363 00:13:50,470 --> 00:13:53,830 132 matches this time you know what I 364 00:13:53,830 --> 00:13:56,110 can go ahead and do is buy something in 365 00:13:56,110 --> 00:13:57,220 the game so I'll go ahead and buy this 366 00:13:57,220 --> 00:14:01,180 card and now it's 275 so I just go in 367 00:14:01,180 --> 00:14:03,520 and now I try and narrow the search by 368 00:14:03,520 --> 00:14:06,970 searching for 275 there's only one match 369 00:14:06,970 --> 00:14:08,820 so I go ahead and double click this and 370 00:14:08,820 --> 00:14:11,380 now we change it to something else so I 371 00:14:11,380 --> 00:14:16,000 can change it to 200,000 now you may 372 00:14:16,000 --> 00:14:17,980 have noticed that in the game it hasn't 373 00:14:17,980 --> 00:14:21,700 updated well it turns out that it 374 00:14:21,700 --> 00:14:23,860 doesn't update immediately every single 375 00:14:23,860 --> 00:14:25,690 time sometimes you have to do something 376 00:14:25,690 --> 00:14:27,550 to refresh the screen so if I go ahead 377 00:14:27,550 --> 00:14:30,490 and buy to the card now it recognized 378 00:14:30,490 --> 00:14:33,120 okay I increased my gold now it updates 379 00:14:33,120 --> 00:14:36,900 and that's all there is to it 380 00:14:36,900 --> 00:14:39,120 so in our examples we learned how to 381 00:14:39,120 --> 00:14:40,680 find health and we learned how to find 382 00:14:40,680 --> 00:14:42,810 money this is enough to get you started 383 00:14:42,810 --> 00:14:44,940 but there's still a lot more we need to 384 00:14:44,940 --> 00:14:47,250 cover for example what if you wanted to 385 00:14:47,250 --> 00:14:48,990 find the x and y-coordinates of the 386 00:14:48,990 --> 00:14:51,540 player to write a teleportation hack how 387 00:14:51,540 --> 00:14:53,220 would you do it we have no idea what the 388 00:14:53,220 --> 00:14:55,080 players x-coordinate is it could be a 389 00:14:55,080 --> 00:14:58,370 hundred a thousand a million no idea 390 00:14:58,370 --> 00:15:00,860 also the Chiefs we learned how to create 391 00:15:00,860 --> 00:15:04,589 aren't reusable if we restart the game 392 00:15:04,589 --> 00:15:07,140 the addresses we found for gold and 393 00:15:07,140 --> 00:15:09,450 health are no longer valid and will 394 00:15:09,450 --> 00:15:11,850 learn the reasons for that later but 395 00:15:11,850 --> 00:15:13,890 what we learned today is enough to be 396 00:15:13,890 --> 00:15:15,360 dangerous right I encourage you to go 397 00:15:15,360 --> 00:15:17,089 start hacking some single player games 398 00:15:17,089 --> 00:15:19,470 whatever you own and get familiar with 399 00:15:19,470 --> 00:15:21,190 the process 400 00:15:21,190 --> 00:15:23,139 okay thanks for watching and if you have 401 00:15:23,139 --> 00:15:25,269 any questions or feedback leave a 402 00:15:25,269 --> 00:15:28,379 comment below thank you 29025

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.