x86 Assembly Crash Course

Поділитися
Вставка
  • Опубліковано 15 тра 2024
  • Written and Edited by: kablaa
    Main Website: hackucf.org
    Twitter: / hackucf
    Facebook: / hackucf
    More resources: github.com/kablaa/CTF-Workshop
    Music:
    "Voice Over Under" Kevin MacLeod (incompetech.com)
    Licensed under Creative Commons: By Attribution 3.0
    creativecommons.org/licenses/b...
    "Twisted" Kevin MacLeod (incompetech.com)
    Licensed under Creative Commons: By Attribution 3.0
    creativecommons.org/licenses/b...
    www.bensound.com
    www.purple-planet.com/

КОМЕНТАРІ • 779

  • @piiumlkj6497
    @piiumlkj6497 5 років тому +929

    If you can read assembly everything is Open Source !

    • @obinator9065
      @obinator9065 5 років тому +38

      Yeah well, if you like to read through 10 times the loc's of the original project in a particular language ;D

    • @Engineer9736
      @Engineer9736 5 років тому +142

      And if you can bruteforce a 512 bit encryption key by looking at it then all doors are open. Pretty much the same statement.

    • @hereb4theend
      @hereb4theend 5 років тому +41

      When I look at instruction sets all I see is redheads, brunettes and blondes 😜

    • @TheDailyMemesShow
      @TheDailyMemesShow 5 років тому +11

      @@hereb4theend Nice try, Cypher! 😂

    • @XadaTen
      @XadaTen 5 років тому +42

      @@Engineer9736 Eventually those encrypted instructions will need to be loaded into memory in an unencrypted state to be ran by the CPU, from which you could then dump the memory, retrieve the machine instructions, convert to assembly, then convert to a higher level language (to varying degrees of success). It just wont end up in much of a readable state, but you'll have it! haha

  • @ntsystem
    @ntsystem 3 роки тому +327

    This is 1000 of google searches simplified and compressed to 11 minutes. Thank you!

    • @sp3ct3r71
      @sp3ct3r71 2 роки тому

      damn yes🔥🔥

    • @Brahvim
      @Brahvim Рік тому +1

      Exactly! This is exactly what it felt like for me! ...moreover, he explained VERY well!

    • @thediesel3336
      @thediesel3336 Рік тому +4

      said a whole lot of nothing

    • @BryanChance
      @BryanChance Рік тому +1

      Hell ya! Holy smokes, this 11 minute video help me make sense of things I've learned from other assembly videos.

    • @kentheengineer592
      @kentheengineer592 8 місяців тому

      For Me It's About 50 Google Searches

  • @cepi24
    @cepi24 7 років тому +1263

    Holly crap! this was more useful than whole semester on my university. Please keep doing those videos. Thank you very much.

    • @heatxtm
      @heatxtm 7 років тому +29

      to understand all of this just watching it one time (in 10 mins) you should have gone to that semester
      is like a summarising video
      awesome video

    • @keithotinya3210
      @keithotinya3210 7 років тому +11

      that was way more informative than my whole semester......true story...

    • @QuasiELVIS
      @QuasiELVIS 6 років тому +3

      If you guys are doing computer science and you haven't covered all this yet then you must be in your first year.

    • @jae5577
      @jae5577 6 років тому

      Absolutely Bud.

    • @strawberryrain8847
      @strawberryrain8847 6 років тому +7

      eh you probably did not go through a good class i should say? check out something i did pre-university (10th grade) nand2tetris.org.....

  • @DL_GLCH
    @DL_GLCH 2 роки тому +177

    For those who might find it useful, this is the transcription of the video (I wrote it to memorize better and to check it whenever I want):
    Compilers read the .c file and convert the code into a sequence of operations: each operation is comprised of a sequence of bytes: operation code or opcode. The instructions executed by reading opcodes is impossible, so Assembly translate these instructions into a human-readable language.
    ELEMENTS OF AN EXECUTABLE:
    Every C program has 4 main components: heap, stack, registers and instructions. The two main architectures that dictate how a program is compiled and executed are 32-bit and 64-bit architectures.
    The heap:
    The heap is an area in memory designed for the purpose of manual memory allocation. The inner workings of the heap are incredibly complicated. Memory is allocated on the heap whenever functions as malloc and calloc are called or global or static variables are declared.
    Registers:
    Registers are small storage areas in the processor, used to store memory addresses, values or anything that can be represented with eight bytes or less. In the x86 architecture there are six general-purpose registers: EAX, EBX, ECX, EDX, ESI and EDI, generally used on an as-needed basis. There are also three registers reserved for specific purposes: EBP, ESP and EIP.
    The stack:
    The stack is a data structure comprised with elements added and removed with two operations, push and pop: push adds an element at the top of the stack and pop removes the top element from the stack. Each element on the stack is assigned to stack address: elements higher on the stack have a lower address than those on the bottom, so the stack grows towards lower memory addresses. When a function is called, that function is set up with what is called a stack frame: all local variables for that function will be stored in that function stack frame. The EBP register, also known as the base pointer, contains the address of the base of the current stack frame, and the ESP register (stack pointer) contains the address of the top element of the current stack frame. The space between these two registers make up the stack frame of the function currently called. All the stack addresses outside are considered to be junked by the compiler.
    Let's take for example a function that takes one variable as a parameter and declares two local integers like that:
    void func(int x){
    int a = 0;
    int b = x;
    }
    First the value of the argument is pushed onto the stack, then the return address of the function is pushed onto the stack. The return address is the four byte address of the instruction executed when the function has gone out of scope, then the base pointer is pushed onto the stack, then the stack pointer is given the value of the base pointer and finally the stack pointer is decremented to make room for the local variables. The number of bytes that the stack pointer is decremented by may vary depending on the compiler. All the space in memory between the stack and the base pointer is the function stack frame: this sequence of instructions is the function prologue, performed when a function is called. Since "a" is initialized to 0, the value will be moved into the memory address 4 bytes below the base pointer because an integer is 4 bytes, so the local variable is now a location EBP -4. The value of a function argument is stored 8 bytes above the base pointer, which is not in the function stack frame. Values of the stack cannot be moved directly to another location on the stack, so general-purpose registers come in: the value of the argument to the function must first be copied into one of these, then the value is moved into the memory address 4 bytes below the first variable and eight bytes below the base pointer. Both of the local variables have been now initialized and can be used later.
    There are two syntaxes that Assembly is normally written in: AT&T and Intel. The instructions are the same.
    We use the Intel syntax.
    Every instruction has two parts: operation and arguments: operation can take either one or two arguments: if an operation take two arguments they're separated by a comma.
    The mov instruction takes two arguments and copies the value of the second one in the location referred by the first one. But, if for example we want to move a local variable (stored at EBP -8) on the stack into the EAX register, if the command were to read "move EAX, EBP -0x8" this would not copy the value of the variable into the register, because EBP -8 is the address on the stack where the variable is located, so instead the instruction would copy the address if the variable into the register. To copy the actual value or what EBP -8 is pointing to we use "[]" (like the dereference operator in C): when they're used the value being pointed to is referenced.
    The add instruction takes two arguments: it adds their values and stores the result in the first one. For example, if eax has the value of 10, "add eax, 0x5" updates the value of eax to 15.
    The sub instruction works the same way, but the value of the second argument is subtracted from the first.
    The push instruction places its operand on the top of the stack: it first decrements the stack pointer and then places its operand in the location that it points to.
    The pop instruction takes a register as an argument, moves the top element of the stack into that register and then increments the stack pointer.
    The lea instruction (load effective adrress) places the address specified by its second operand into the register specified by the first one. It's usually used for obtaining a pointer into a memory region.
    The control flow of an executable is where all of the if statements and loops in the code come together to determine the order in which instructions are executed. Every instruction has an address: this is the area in memory where the instruction is stored. The EIP register always contains the address of the instruction that is currently being executed, so the computer executed whatever the instruction pointer is pointing to and then the instruction pointer will be moved to the next one.
    The compare instruction is an equivalent of the sub one, but instead of storing the result into the first argument it will set a flag in the processor that contains the value 0, greater than 0 or less than 0. For example, "cmp 1, 3" subtracts 3 from 1 and since -2 is less than 0 the flag will be set accordingly.
    Compare instructions are followed by a jump instruction: it takes an instruction address as its argument, checks the current state of the flag and, depending on the state, sets the instruction pointer to its argument. There are many types of jump instructions: some include jump if equal to, jump if not equal to and jump if greater than.
    The call instruction calls a function, whether it be a user-defined function or a PLT function (like printf or scanf). It takes one argument and it will push the return address of the function being called onto the stack and then move eip to the first instruction of the function.
    The leave instruction is called at the end of every function and it destroys the current stack frame by setting the stack pointer to the base pointer and popping the base pointer off the top of the stack. The return instruction always follows a leave instruction and, since the base pointer has already been popped off the stack, the return address of the function is now on the top of the stack. The return instruction will pop the return address off the top of the stack and then set the instruction pointer to that address.

    • @pedromatias5927
      @pedromatias5927 2 роки тому +7

      UA-cam needs a way to store comments!

    • @bailey125
      @bailey125 2 роки тому +1

      @@pedromatias5927 copy paste into notepad++

    • @maxmuster7003
      @maxmuster7003 Рік тому +3

      Oh, this is a perspective on how C programmer can understand assembly language. ...Good work....
      I am not familar with C. In assembly we do not have to use the calling convention if we want to call one of our subroutines. We can place values for the subroutine inside of CPU register and into the data segment. We can use values of the data segment any time within nested subroutines no matter where the stack pointer is and nothing get lost. Push/Pop instructions are slow on older x86 before Pentium 4.

    • @maxmuster7003
      @maxmuster7003 Рік тому +1

      We can use the LEA instruction on 80386+ for calculating values.
      No memory access, no flags touched, the result have fit into the target.
      Example with intel syntax:
      LEA eax, [eax+ebx*4+224]
      It perform two addition and a multiplication in one instruction.

    • @maxmuster7003
      @maxmuster7003 Рік тому +1

      Element of a 16 bit executable
      An executable com file starts with CS=DS=SS and a segment size of 64kb at the address cs:0100. It contains no header, only mashine code and data. Ready to switch into the 64 bit mode and start all cores of the multicore CPU.

  • @dedballoons
    @dedballoons 5 років тому +102

    Did that dude just check back at his notes in the first 3 seconds to remember his name? I fucking love this dude already.

    • @TEXASF1ERCE
      @TEXASF1ERCE 4 роки тому +3

      Lmao I wish he would've continued this serious though. Very easy to understand and straight to the point.

    • @varunpawar
      @varunpawar Місяць тому

      😂 gave me a laugh , thanks for pointing.

  • @chris0234
    @chris0234 4 роки тому +26

    the only video I ever watched at 0.75x. Absolutely fantastic.
    (80% of explainer videos have to be watched at 1.5x)

  • @4.0.4
    @4.0.4 7 років тому +53

    I started the video thinking I was going to let down by the length, but since it was so short, it wouldn't hurt to watch. Then I saw how good the video was. Damn.

  • @stephen7715
    @stephen7715 4 роки тому +4

    This is literally one of the best instructional videos I have ever watched in my life period. Fantastic job

  • @jahwni
    @jahwni Рік тому +5

    Damn, that CMP/JMP stuff was so well explained, realizing it's just a SUB instruction essentially makes it and the following JMPs make so much more sense! Thank you!

  • @universalponcho
    @universalponcho 2 роки тому +2

    This was really well done. This is probably one of the best I have come across and it's now 2021.

  • @xanderkay315
    @xanderkay315 5 років тому

    Thanks for making this! I have an Assembly class this quarter and this is really helping me get ahead of the curve.

  • @johnjacobs3102
    @johnjacobs3102 4 роки тому +2

    Thanks so much. I'm taking the OSCP course and I'm on buffer overflows trying to comprehend how shell code is injected and executed and this is the only video I could find that actually helped me understand how the stack works.

  • @pianistaalex1990
    @pianistaalex1990 6 років тому

    Man I can't thank you enough for this video, it's so sad that you never got to make another one explaining how to overflow a buffer, stack protection and so on. Great work on this one, hope you can make another one eventually.

  • @MooseC00kie
    @MooseC00kie 4 роки тому

    This is the best explenation I have heard so far! A little bit fast sometimes but soooo comprehensive! So glad you didnt just name push, pop and prologue/epilogue but also went for lea, cmp, jmp & flag!

  • @jingz.9684
    @jingz.9684 7 років тому

    One of the best tutorial for starting, love the bg music, life saver!

  • @samisiddiqi7814
    @samisiddiqi7814 6 років тому

    I love this video. You understood what you were teaching and you didn't waste your words and neither did you leave abstract concepts undefined.
    Well done !!! 👍👍👍

  • @tehf00n
    @tehf00n 5 років тому +5

    I've been coding for 20 years. Recently I was considering adding conditional breakpoints to an app I use. I knew it was going to get messy so I figure a bit of information about how Assembly works might motivate me. I tell you what, this video damn sure made me motivated. Excellent work.

  • @_nit
    @_nit 7 років тому +227

    Fantastic and coherent explanation. You earned yourself a sub. This might be the quickest/clearest explanation of the basics of how x86 works.

    • @kentatakao6863
      @kentatakao6863 7 років тому +2

      Essentially the same explanation I've read on multiple websites and heard in multiple UA-cam videos, yet just as vague and unsatisfactory.

    • @dannygjk
      @dannygjk 6 років тому +12

      Morris Laurent You can't become competent in Assembly in a short period of time. You have to want to become good at it *and* you have to devote yourself to it. Dump all your socializing and focus on Assembly because it's more important than all humans.
      Note that I capitalized the 'A' in the word 'Assembly' because Assembly rules. It eliminates the middle man, (any high level language).
      In addition you must have high discipline and a high tolerance for tedium.
      If you love playing games like CandyLand forget Assembly.

  • @ThefamousMrcroissant
    @ThefamousMrcroissant 4 роки тому

    So much info cramped in such a short video - and despite that you managed to explain everything clearly. That's talent right there

  • @DanipBlog
    @DanipBlog 4 роки тому +1

    Dude, you are unbelievable good and explaining!! Do not stop what you are doing, you're contributing to society more than you realize!

  • @CP-hd5cj
    @CP-hd5cj 7 років тому

    Great video. You managed to condense everything I needed to know into 10 minutes, and still made it easily absorbable.

  • @aceflamez00
    @aceflamez00 7 років тому +56

    WHERE HAVE YOU BEEN ALL MY LIFE

    • @jzpatelut
      @jzpatelut 7 років тому +1

      Well No one wait for none in this COmputer world...!!!!!..jzppatelut...

    • @gauravarya8952
      @gauravarya8952 4 роки тому

      He was hiding in Greenland.

  • @duylekhac6044
    @duylekhac6044 5 років тому

    One of the best tutorial video I have ever seen! Concise, informative, easy to understand! Very good work

  • @TheSakanax
    @TheSakanax 6 років тому

    Awesome video! I've read chapters in books that didn't explain as much as you did in 10 minutes! Answered a lot of questions I used to have. Thanks!

  •  6 років тому

    Awesome work! Looking forward to seeing more of your videos on this topic.

  • @Blowyourspot747
    @Blowyourspot747 7 років тому +48

    I love you so much for this I wanna cry

  • @RajarshiBandopadhyay
    @RajarshiBandopadhyay 6 років тому

    This was an amazing video... please continue to make more of these.

  • @RachayitaGiri
    @RachayitaGiri 6 років тому +1

    Finally! One video at the perfect pace with the perfect amount of information!

  • @jamesrosemary2932
    @jamesrosemary2932 5 років тому +2

    Awesome!. I needed to remember ASM and this video was a kind of flashback to me.

  • @roygalaasen
    @roygalaasen 4 роки тому

    Wow! Such a great summary of assembly language, a great refresher! Sadly it is three years old and you never made any more videos. This was a great promising start for a new interesting channel, although a niche topic for most. I thoroughly enjoyed the way you explained. Great video!

  • @TheLionheartCenter
    @TheLionheartCenter 4 роки тому +5

    There's such a lack of instructional videos on assembly language and this was so helpful

  • @Mi10s89
    @Mi10s89 7 років тому

    Best tutorial I have ever seen on this subject. Keep it that way.

  • @klausvonshnytke
    @klausvonshnytke 7 років тому +54

    Hi, is that it? no more videos? I liked what you showed and how you presented it. great potential and interesting topic.

  • @meilinliu6774
    @meilinliu6774 2 роки тому

    The best video explaining registers on UA-cam. Thank you so much!

  • @WarrenMarshallBiz
    @WarrenMarshallBiz 6 років тому

    Absolutely brilliant, thanks so much!

  • @jimmy000
    @jimmy000 4 роки тому

    Really good and concise video with no waffling, great job and keep up the good work.

  • @TheCrazyposter
    @TheCrazyposter 5 років тому +1

    great video man! although your going fast, you explained everything in a clear manner. I wish our University had tutors like you available for assembly programming.

  • @decompiler7726
    @decompiler7726 5 років тому

    This video enhanced my understanding of x86 assembly far beyond anything that I have encountered before and since. Excellent material.

  • @florinturcanu7109
    @florinturcanu7109 5 років тому

    man thanks, you seriously helped me a lot, this finally explains everything very clear, respect for this

  • @blanchet2852
    @blanchet2852 5 років тому

    wow thank you, i love you, will probably (definitely) rewatch!

  • @petepoot6442
    @petepoot6442 Рік тому

    holy crab, how good of a teacher can one person be!!
    this 10 minutes crash course packed more info than i got in a full semester in college, all while being clear and understandable!!
    i love it.

  • @scienceartificer53
    @scienceartificer53 6 років тому

    Thank you for this great video! It helped me a lot to understand what was on the lectures on my university. It's been quite a while since you published it, but i hope you will make more videos like this.

  • @aTewfik
    @aTewfik 6 років тому

    Oh my god, I have been searching like hell for a video like this. Now I can do my lab. THANK YOU!

  • @KamranMohsin008
    @KamranMohsin008 6 років тому

    This is an awesome lecture I ever witnessed. Thanks man

  • @hehhehdummy
    @hehhehdummy 7 років тому +1

    Annnnnnd just about everything I was confused about was clarified in 10 min. Thank you! I was disappointed to not see anymore uploads. The video made it seem like there was a series. :[

  • @GamingBlake2002
    @GamingBlake2002 4 роки тому +151

    "Hi! My name is Jericho and I'll be leading you on your journey through binary exploitation!"
    *Doesn't upload for 4 more years*

    • @abdarafi
      @abdarafi 3 роки тому +2

      Lol

    • @makewayforsucess
      @makewayforsucess 3 роки тому +16

      @@abdarafi I think this was enough for 4 years tbh xD

    • @suryanshdaspatnaik3474
      @suryanshdaspatnaik3474 3 роки тому

      @@makewayforsucess yea Xd assembly is difficult...(but you can understand MS DOS's source code if you know it..)

    • @ismahenelarbi7386
      @ismahenelarbi7386 3 роки тому +1

      he must be an intp

    • @sergioropo3019
      @sergioropo3019 3 роки тому +1

      I think he gave everything he's got in one go. I thank him anyway.

  • @gowgearhead
    @gowgearhead 3 роки тому

    You are a life saver. Thank you for uploading this video!

  • @justinsimard3267
    @justinsimard3267 2 роки тому

    The quality of this video is just outstanding

  • @yugen042
    @yugen042 Рік тому

    This is incredibly well made. Thank you so much!

  • @lostangelesam8831
    @lostangelesam8831 3 роки тому

    I get genuinely excited watching this guy get stoked on these principles
    EPIC explanation!!

  • @kaanturkmen4966
    @kaanturkmen4966 4 роки тому

    This was the best video on assembly I've seen so far

  • @onildoribeiro619
    @onildoribeiro619 3 роки тому

    Thanks for sharing. Excellent explanation!

  • @veronicamontilla2288
    @veronicamontilla2288 Рік тому

    went through when I first started video editing, now it's taking a whole new switch and learning soft will only boost my courage for the

  • @adriandeveraaa
    @adriandeveraaa 6 років тому

    Thank you for summarizing a whole class, i remember a good portion now to revisit sample problems (:

  • @tielessin
    @tielessin 2 роки тому +5

    That was quite a lot of information in a very short time for someone who didn't know anything about x86 architecture before, but I really appreciate you for not bullshitting around. I'll come back to this video once I have read a bit up on those 20 new terms 😄
    Thank you for your Video 🙏

  • @patrickboyd8368
    @patrickboyd8368 5 років тому

    The connection between jump instructions and how we define "Turing Completeness" (operability locating memory/instructions) just clicked a little better in my brain....awesome

  • @niklyons4007
    @niklyons4007 5 років тому

    Thank you so much for this tutorial. In my opinion you do *not* speak too fast. It is after all, a crash course- not a slow float to the ebp. Extremely helpful and thorough with plenty of room for fresh rabbit holes to fall down (like heap!) Many thanks, and I look forward to checking out more!

  • @yatharthsoni5428
    @yatharthsoni5428 5 років тому

    THANKS ALOT BUDDY!! CERTAINLY MORE USEFUL THAN WHAT I LITERALLY DID IN THE 2ND YEAR COMPUTER SCIENCE CLASSES

  • @idounnowatuwant
    @idounnowatuwant 3 роки тому

    I can say without a doubt this is one of the best videos I've ever seen on youtube.

  • @RacecarsAndRicefish
    @RacecarsAndRicefish 5 років тому

    awesome, now I just need to see a couple more of these and I'll be caught up on what we learned in lecture this week

  • @sidkbsri3997
    @sidkbsri3997 2 роки тому

    Phenomenal video concisely explaining x86, much needed for an exam I have next week.

  • @enochmtz
    @enochmtz 5 років тому +1

    Hey, I hope you keep making this videos, you're an awesome teacher, please I'm waiting for more

  • @alexrosellverges8345
    @alexrosellverges8345 5 років тому

    Fuking awesome, computes are absolutely awesome, thanks!

  • @markopesevski
    @markopesevski 7 років тому

    Maaaaan this video is great! Keep them coming if you have time.

  • @davidshamay2898
    @davidshamay2898 5 років тому

    please keep going to upload more videos this is very helpful
    i wish all the internet was with tutorials like this

  • @NKernytskyy
    @NKernytskyy 2 роки тому

    Amazingly clear explanation!

  • @tushargoyal8262
    @tushargoyal8262 4 роки тому

    Amazing video!!!! Thank you SO much for making this, really helped me!

  • @blenderlove2386
    @blenderlove2386 3 роки тому

    Fascinating stuff. Thanks for your clear explanation. It felt like I learned a lot.

  • @nishadsaraf9107
    @nishadsaraf9107 7 років тому

    Very informative! Waiting to learn more from your upcoming videos. Thank you.

  • @nosajghoul
    @nosajghoul 6 років тому

    Amazing. Thank you for making this.

  • @nicholastheophilus2815
    @nicholastheophilus2815 7 років тому

    Awesome video!!! wish you could do more.
    I understand so much now.

  • @GPTDavid
    @GPTDavid 6 років тому

    Damn, this was awesome... keep up the great work!!!! learned a lot from this.

  • @zeroxx131
    @zeroxx131 6 років тому

    Wow! Beautifully done. If you don't teach for a living you should. You were straight forward and to the point. Every sentence had a purpose with no junk we didn't need to know. Subscribed!

  • @elvin33321
    @elvin33321 7 років тому

    Wow dude your explanations are amazing!

  • @thepianomatro
    @thepianomatro 10 днів тому

    This crash course is literal gold. I tip my hat to you sir

  • @JT-nq9vh
    @JT-nq9vh 5 років тому

    Thank you for this clear and vivid explanation

  • @alvaropuerta5283
    @alvaropuerta5283 2 місяці тому +1

    This video is so good. Thank you.

  • @Life4YourGames
    @Life4YourGames 6 років тому

    Holy shit, you were right about the amount of information but your explanation pace and clarity makes it very easy to follow. Good work!

  • @izaak791
    @izaak791 6 років тому

    wow! just wow! man thanks a ton...this is gold

  • @David-mv4dy
    @David-mv4dy 7 років тому

    I know it's supposed to be a video about assembly, but this was a great explanation on how memory works!

  • @hafidhzouahi7146
    @hafidhzouahi7146 6 років тому

    Thank you so much, the video was very well explained, keep it up!

  • @alexzimmerman3447
    @alexzimmerman3447 10 місяців тому

    Thank you sir, this video was super helpful.

  • @sudajared
    @sudajared Рік тому

    Very well explained in a short concise video

  • @rwpage89
    @rwpage89 6 років тому

    I just learned more in 10 minutes here than an entire semester of assembly in college... great work thanks for the help

  • @zokm8165
    @zokm8165 Рік тому +1

    Normally i watch at 2x speed cause videos go to slow. Here i needed to rewatch parts to try and keep up. nicely done.

  • @MrKushinator420
    @MrKushinator420 6 років тому +1

    This was about equivalent to 4 lectures, in 10 minutes. Thanks for the review

  • @ferna2294
    @ferna2294 7 років тому

    You are underrated mate. Suscribed. This is GOLD.

  • @cameronfraser4136
    @cameronfraser4136 6 років тому

    Great video, very clear, concise and to the point. Thanks!

  • @randomguy3784
    @randomguy3784 5 років тому

    Man Oh Man!
    You just saved my endless hours of googling and tinkering with pdfs!
    TYSM!

  • @hannahgreene1570
    @hannahgreene1570 5 років тому

    This is so clear and helpful! Thank you so much!

  • @Adonis-fz2tk
    @Adonis-fz2tk 2 роки тому

    Dammnn son, you really do come in clutch when needed.

  • @sonofpam
    @sonofpam 6 років тому

    Great stuff! This is really good work. Happily subscribed. Good on ya!

  • @dommafia
    @dommafia 7 років тому

    So sad to find this video so late in life and even sadder this is the only video uploaded to this channel. Sub'ing either way just in case.

  • @PureASM-ShellCoder
    @PureASM-ShellCoder 5 років тому

    Awesome video ! Make more of these... !

  • @silver_soul98
    @silver_soul98 4 роки тому

    sadly this guy uploaded only one video
    wish there were more though, super helpful stuff

  • @laurenzv5682
    @laurenzv5682 3 роки тому

    Dude this is so well made... You really earn more subs!

  • @ridhijain9119
    @ridhijain9119 5 років тому

    It was a really nice video. Very informative. Hope you will be posting more such videos! :)

  • @ariesduke2047
    @ariesduke2047 7 років тому

    This channel is gold already

  • @bibekkoirala8802
    @bibekkoirala8802 5 років тому

    Best thing watched on UA-cam today. Fuck 3 months of uni's class.

  • @counterculturecocks
    @counterculturecocks 7 років тому

    Fantastic video! Thank you ever so much!