Self-Learning Reverse Engineering in 2022

Sdílet
Vložit
  • čas přidán 31. 05. 2024
  • There exist some awesome tools nowadays to accelerate your self-education for reverse engineering. godbolt and dogbolt are amazing to quickly learn basic assembly and reversing.
    Compiler Explorer: godbolt.org/
    Decompiler Explorer: dogbolt.org/
    C code example: github.com/LiveOverflow/liveo...
    Introducing Decompiler Explorer - binary.ninja/2022/07/13/intro...
    00:00 - Intro
    00:23 - Motivation
    01:00 - How to c?
    02:11 - godbolt Basic Usage
    03:40 - Function Call on x64
    04:30 - Intel vs ARM assembly
    05:22 - godbolt Compiler Options
    05:50 - Enable gcc O3 Compiler Optimization
    06:35 - Decompiler Explorer dogbolt
    07:16 - Comparing Decompiled main()
    08:25 - Outro
    =[ ❤️ Support ]=
    → per Video: / liveoverflow
    → per Month: / @liveoverflow
    =[ 🐕 Social ]=
    → Twitter: / liveoverflow
    → Instagram: / liveoverflow
    → Blog: liveoverflow.com/
    → Subreddit: / liveoverflow
    → Facebook: / liveoverflow

Komentáře • 283

  • @LiveOverflow
    @LiveOverflow  Před rokem +73

    Sometimes I'm streaming on Twitch: www.twitch.tv/liveoverflow

    • @mindlab369
      @mindlab369 Před rokem

      What kit do I need to purchase to practice Side Channel attacks if I don't want to spend hefty money on xilinx FPGAs?

  • @TheBackyardChemist
    @TheBackyardChemist Před rokem +860

    Step 1: pick a target that is not written in C++ with Boost and Qt and built with O3+LTO...otherwise you will spend months reversing the

    • @InfiniteQuest86
      @InfiniteQuest86 Před rokem +80

      Lol we've all been there.

    • @c0smo709
      @c0smo709 Před rokem +23

      @@InfiniteQuest86 no we havent, noob

    • @InfiniteQuest86
      @InfiniteQuest86 Před rokem +110

      @@c0smo709 Lol! Nice one!

    • @c0smo709
      @c0smo709 Před rokem +10

      @@InfiniteQuest86 thanks bro appreciate it

    • @martysh1226
      @martysh1226 Před rokem +110

      @@c0smo709 what a nice and friendly interaction

  • @jhbonarius
    @jhbonarius Před rokem +302

    C and especially C++ developers are actually using compiler explorer for _forward_ engineering. I.e. during development they try optimizations there and see what the compiler makes of it, before putting the best version in their code. It's an amazing tool Matt Godbolt brought into the world.

    • @TheBackyardChemist
      @TheBackyardChemist Před rokem +4

      Oh absolutely

    • @SamirPatnaik
      @SamirPatnaik Před rokem +5

      I hope he gets rich out of it, somehow.

    • @jhbonarius
      @jhbonarius Před rokem +10

      @@SamirPatnaik well, not rich no. It's more of a hobby project that has grown out of bounds. But he's become pretty famous in the C++ community.

    • @user-lb1ib8rz4h
      @user-lb1ib8rz4h Před rokem +1

      i mean you don't need that tool, you can do the same locally

    • @OCEAN-fc9wl
      @OCEAN-fc9wl Před rokem

      Ew c++

  • @coder_rc
    @coder_rc Před rokem +256

    The one thing to remember while learning reverse engineering is that there are a lot of things that you won't get when you try the first time and it's fine. You also have to have a lot of patience since the process of learning reverse engineering can be extremely frustrating and it can make you give up on 5 out of your 10 projects.
    Always remember that theory will beat practice.
    Have a goal in mind why you want to learn reverse engineering as that will give you a clear idea of the platform on which you will be working.
    For example, I want to be a Vulnerbility Researcher and find 0 days on Windows so I would learn all the basics of reverse engineering simple programs on Windows, how to debug them, the tools necessary and I would read through ctf writeups and try stuff on my own. After clearing this up, I would try to increase my level and try malware analysis as it would give me clear understanding of software protections, debugging and understanding a program when almost nothing about the program is known. Then I can proceed to learn about different kinds of vulnerabilities and how they are found and so on.

    • @flirtyemy042
      @flirtyemy042 Před rokem +5

      This is me right now. I’m into malware dev. and most times i need to reverse Engineer the binary I’m writing to see how it’s been executed in memory but just can’t seem to wrap my head around the assembly codes

    • @Jonathan-ng4vw
      @Jonathan-ng4vw Před rokem +1

      @@flirtyemy042 How you learn malware dev. it means what is your resources to learn this.

    • @coder_rc
      @coder_rc Před rokem +1

      @@flirtyemy042 the best way to learn assembly is to write own programs and see what assembly code is generated in disassemblers or you might just try making a small project in assembly.
      You can sort of cheat by just learning about the most commonly used assembly instructions.

    • @flirtyemy042
      @flirtyemy042 Před rokem +3

      @@Jonathan-ng4vw Check out Sektor7’s malware dev course for a start. It’s really good. You can then follow it up with the intermediate and then evasion courses

    • @flirtyemy042
      @flirtyemy042 Před rokem

      @@coder_rc I think I’ll check out the tools in the video. At least they’ll help highlight each instruction in assembly. Thanks

  • @martint1775
    @martint1775 Před rokem +54

    If one is interested in Reverse engineering themselves, I would highly recommend the book "Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software". It can be found online using a bit of googling. I just finished a course with the name Reverse Engineering and Malware Analysis and there we used this book. This course was obviously heavily focused on how windows malware works and can be detected through different means, but reverse engineering was a big part of it.

  • @MattGodbolt
    @MattGodbolt Před rokem +9

    Thanks for the great shout out! This is a great introduction to Compiler Explorer in general!

  • @zanidd
    @zanidd Před rokem +19

    Your videos (in particular the binary exploitation playlist) have been a huge help in my cybersecurity career. Thank you very much ❤

  • @diegocastillo6470
    @diegocastillo6470 Před rokem +42

    I started learning assembly code and disassemblers a couple months ago, with the help of the book "Hacking The Art of Exploitation", really good book but the assembly part was really hard of me. I tried to follow on my computer but had many many issues, got frustrated and just let it go. A couple weeks ago I took it upon myself to read it again, and now I got it a little bit better. For some reason assembly is still challenging for me, but no matter how frustrated you get, take some time, breath, stop for a couple hours maybe days and then try to resume. Would have loved to have this video before. Amazing, thank you so much.

    • @babbalaminou7697
      @babbalaminou7697 Před rokem +2

      The best intro to assembly is from the book Practical Malware Analysis. Check out the Assembly crash course section

  • @weinihao3632
    @weinihao3632 Před rokem +26

    Maybe it's worth mentioning that the intermingled output of source code and assembly can also be achieved (and in fact this is for sure what happens in the background on that website) with objdump -S , if the binary was compiled with debugging enabled. So, even if you are somewhere without internet or don't want to share the code you are working on with whoever is running that website, you can still conveniently self-learn reverse engineering in 2022.

  • @root_etikit3658
    @root_etikit3658 Před rokem +1

    Perfect timing. I've been working my way through Practical Malware Analysis, this will be of great help! Thank you.

  • @logiciananimal
    @logiciananimal Před rokem

    Thanks for the info about the decompiler collection. What a gift to the community!

  • @revebbever7723
    @revebbever7723 Před rokem +6

    Thank you so much. This simple overview was what i needed to look into reverse engineering. Assembly code doesn´t look that scary anymore!

  • @astr4liteEx
    @astr4liteEx Před rokem +1

    +rep godbolt love, didnt know asm like 2 weeks ago, watched a few vids to briefly get a hang of what it does (alot easier than what i wouldve thought actually), then used godbolt to more understand what my code does at a lower level, its really nice being able to look at asm and be able to tell what it does, especially when u can hover over parts of asm and it highlights the code responsible for it! its been a real help. documentation helps alot to for checking out odd looking functions that ive never really seen before :D 10/10

  • @miranda92051
    @miranda92051 Před 6 měsíci

    This video is actually really, really good. Thank you!

  • @lightblue254
    @lightblue254 Před rokem +1

    I love you! Thank you so much, this helps a lot in learning how to get sharper and started! :)

  • @user-ff4np7uy5r
    @user-ff4np7uy5r Před 8 hodinami

    Nice video, it helped me a lot.

  • @-_-Girthbrooks-_-
    @-_-Girthbrooks-_- Před rokem +2

    Every hacking inquiry I have leads to a video made by you ❤. Keep up the great work.

  • @teddythobane2636
    @teddythobane2636 Před rokem +68

    Reversing is a way of life, and it takes time, but is very rewarding once you get the hang of it. Great video as always, sir.👌

    • @JoseAndCode
      @JoseAndCode Před rokem +1

      Can you explain the rewards you have experienced

    • @TienNguyen-ky4dx
      @TienNguyen-ky4dx Před rokem

      what do you learn this for? Bug bounty?

    • @teddythobane2636
      @teddythobane2636 Před rokem +3

      @@JoseAndCode being able to fully understand software at the lowest level. That enables you to come up with clever ways of using (or exploiting) the software. I'm explaining in the context of software, but, really, this applies to any system that you manage to reverse-engineer :)

    • @teddythobane2636
      @teddythobane2636 Před rokem +2

      @@TienNguyen-ky4dx There are a whole host of reasons why one might learn reversing. It might be for compatibility or interfacing purposes, for vulnerability research and/or exploit development, for software development (finding out how someone else implemented some or the other component or system and try to do it yourself while inferring from what they did), malware analysis, etc.

    • @nczioox1116
      @nczioox1116 Před rokem

      What are some good ways for a total beginner to get started? Ive seen some beginner videos but they all seem to intermediate levels and theres only a handful of them out there it seems

  • @yashwardhanchavan6153
    @yashwardhanchavan6153 Před rokem +2

    I am currently following along the binary exploitation series and these tools will really help me out, thanks for the video.

  • @daljeetbhati8353
    @daljeetbhati8353 Před rokem

    Loved background and editing

  • @korilcrave2783
    @korilcrave2783 Před rokem

    IT'S REALLY USEFULL... thankyou Febian...

  • @knopix
    @knopix Před rokem

    Thanks a lot for providing this 💖

  • @rivhaaken9763
    @rivhaaken9763 Před rokem

    Thanks Liveoverflow!

  • @fugoogle_was_already_taken

    We practiced reverse engineering by rewriting the simple basic utils like cat and tee from their asm dumps. That and also writing some assembly code is helpful

  • @MadBuddhaAbuser
    @MadBuddhaAbuser Před rokem

    Great video man. Love the way u pronounce array.

  • @sihmy9870
    @sihmy9870 Před rokem

    I swear I asked myself this question today Morning & here you are with this video

  • @thezar86
    @thezar86 Před rokem +17

    Started with your binary exploitation playlist and now working in cyber security. Thank you LiveOverflow!

  • @CoreDreamStudios
    @CoreDreamStudios Před rokem

    Subbed, this was very useful. :)

  • @yuriimynash6118
    @yuriimynash6118 Před rokem

    Nice video I was searching for that

  • @black_platypus
    @black_platypus Před rokem +1

    OMG! godbolt and dogbolt are so beautiful and helpful! 🤯

  • @PedroLucasbp
    @PedroLucasbp Před rokem

    Very nice! Thank you ❤️

  • @cinageransayeh
    @cinageransayeh Před rokem

    Thanks for the video it was exciting.

  • @daljeetbhati8353
    @daljeetbhati8353 Před rokem

    Love your videos watching stream

  • @albuslee4831
    @albuslee4831 Před rokem

    this was interesting, didn't thought I would watch the whole thing through

  • @sliceoflife5812
    @sliceoflife5812 Před rokem

    15secs in and I'm already in agreement with your view of an abstract concept.

  • @Aswin0x
    @Aswin0x Před rokem

    This is what i need for past couple of weeks 😂❤️

  • @EscolaFreiMarcos2023
    @EscolaFreiMarcos2023 Před rokem

    Thanks, really helped

  • @blaisetelfer8499
    @blaisetelfer8499 Před rokem +2

    Good content. Reverse engineering is how I got started; after taking classes on a language or doing YT tuorials of a certain framework, I'd clone a large GitHub repo to my desktop and toy around with it. See what I could add, see what made it break, read the errors after each save. That method was just as valuable, if not more so, than the classes themselves.

  • @smart_bar
    @smart_bar Před rokem

    wow, thank you, it's amazing

  • @eno88
    @eno88 Před rokem +6

    Weird. Just what I was looking for and you posted it 🤔

  • @SmokelessMeme
    @SmokelessMeme Před rokem +1

    Much love from the H1Emu team. (Reverse engineering H1Z1)

  • @a1esandra
    @a1esandra Před rokem

    stumbled on this vid expecting wires n bits n even tho i hate assembly this is so cool

  • @pandatech3245
    @pandatech3245 Před rokem

    Exactly the video I needed

  • @soaphornseuo8630
    @soaphornseuo8630 Před rokem

    Great resource

  • @ZachHixsonTutorials
    @ZachHixsonTutorials Před rokem +5

    Literally could not have come at a better time. I've been itching to dive into contributing to Metaforce (reverse engineering of Metroid Prime) and have been scratching my head not knowing how to get started

  • @schokodrink5409
    @schokodrink5409 Před 7 měsíci

    I dont understand the functions calls on x86. In your printf it gets assembled to call printf but in mine it gets assembled to call puts. I use the same gcc version to compile so how can that happen?

  • @m.alexbenny4500
    @m.alexbenny4500 Před rokem

    Your videos are just amazing. It encourages me to learn more and more.
    And you look a little like Christian Slater from Mr. Robot 😅

  • @NaNNaN-sh4vz
    @NaNNaN-sh4vz Před 11 měsíci

    thank you so muuch

  • @kingofgods2071
    @kingofgods2071 Před rokem

    Compiler explorer is actually a really good tool. like if you get cursor to stuff you dont know what it means it will show description of what it is like cmp, rbp and so on. thanks btw didnt knew about this tol.

  • @TemurSolief
    @TemurSolief Před rokem

    Thanks a lot.

  • @johndoe-xz2en
    @johndoe-xz2en Před rokem +1

    Thank you for your efforts. Your channel is one of the best on CZcams.

    • @linuxinside6188
      @linuxinside6188 Před rokem +1

      Was

    • @johndoe-xz2en
      @johndoe-xz2en Před rokem

      @@linuxinside6188 I am new in reverse engineering and for me, this channel gives a lot of information in a very basic way.

  • @ananthuskumar1286
    @ananthuskumar1286 Před rokem

    Thanks mahn

  • @WistrelChianti
    @WistrelChianti Před rokem

    Thanks!

  • @Snowflake_tv
    @Snowflake_tv Před rokem

    Thanks alot

  • @ravikiranramachandra1000

    Crazy channel I came across

  • @lancemarchetti8673
    @lancemarchetti8673 Před rokem

    Excellent

  • @giteshtripathi9911
    @giteshtripathi9911 Před rokem

    Awesome man
    That's what heroes do

  • @alexobzor
    @alexobzor Před rokem +1

    Can you please answer, how to get right tools for reversing. Because, i am newbie in this stuff. I found so many variants of gdb, i found radare2, that is a powerful framework but not without cons, i found ghidra and ida, and both of this gui tools great, and many more tools, including time travel deugging. It's blowing my mind, i can't choose between all of this, and have already spent so many time on googling all this programs. My goals is reverse engineering and binary exploitation, which stack of programs to choose ? Or how do i do it ? Help please..

  • @zedeleyici.1337
    @zedeleyici.1337 Před rokem

    amazing 👀

  • @Me.n_n
    @Me.n_n Před rokem

    Very nice 👍 thanks ^_^

  • @chukwu_9
    @chukwu_9 Před rokem +2

    I don’t even know how to get started

  • @ParallaxThe
    @ParallaxThe Před rokem

    Godbolt is great for just learning programing in general

  • @komismo
    @komismo Před rokem

    OllyDbg and IDA is waving

  • @bva1092
    @bva1092 Před rokem

    Useful

  • @octagear
    @octagear Před rokem

    I don't....feel like this helped. I mean maybe i'm getting something wrong here but i thought the goal was to be able to read and identify code and i learned how to read the assembly but i wouldn't understand what it could represent in the high-level code without the source-code anyways. Especially when the programm is more complex with many more functions calling each other... I don't know where to go from here. How do i interpret the stuff i see?

  • @katkatfarkat
    @katkatfarkat Před rokem

    the title so dope

  • @Facebook-sk2iy
    @Facebook-sk2iy Před rokem

    i love your videos specially the binary exploitation serie so can you do some videos about int overflow and int overlow to RCE

    • @LiveOverflow
      @LiveOverflow  Před rokem

      Checkout the PwnAdventure series. I believe it was the fire and ice challenge

  • @cupofjoen
    @cupofjoen Před rokem

    Can I reverse engineer SASL DRM with this tutorial? I want to crack some add ons that has DRM built inside the content instead of outside of it..

  • @restcure
    @restcure Před rokem

    Must say, the cover of your computer would make a great album cover.

  • @LukeAvedon
    @LukeAvedon Před rokem

    Wow I did not know about dogbolt

  • @bobbobson1555
    @bobbobson1555 Před rokem

    purchases I made was soft soft. I knew it was my passion but I was just stuck because of trauma I couldn't deal with. Now that I'm at a

  • @Adowrath
    @Adowrath Před rokem +2

    Hey! I know you're generally focusing on Reverse Engineering programming code, but I was wondering if you have any experience and or helpful tools on learning how to reverse engineer a file format? I've been working on somehting in my past-time but my best approach was just trying to write parsers for the files in question in Haskell (using Megaparsec), which doesn't lead to a quick analysis cycle having to rebuild the program, running it and either handling a huge print output or navigating bit by bit into the data structures to figure out what came out.

    • @user-bi7cs2rq1i
      @user-bi7cs2rq1i Před rokem +3

      You can reverse the format by reversing part of software that reads/writes said format

  • @HA7DN
    @HA7DN Před rokem

    Wait, so now we can use the HexRays decomplier without IDA pro?

  • @NiranjanND
    @NiranjanND Před rokem +1

    Good

  • @hendriksahertian5525
    @hendriksahertian5525 Před 11 měsíci

    now my mind is blow up

  • @markaltmann583
    @markaltmann583 Před rokem

    My man looking more and more like Mr. Robot

  • @cuty5372
    @cuty5372 Před rokem +1

    I gotta throw my University-Assighment reference Implementation in there, to compare it to my solution, to prove mine is better xD

  • @mohamedfatheem2872
    @mohamedfatheem2872 Před rokem

    1st view 🤞Was waiting for this a long time…

  • @Jarvx
    @Jarvx Před 3 měsíci

    I want to add that Chat GPT can also be an extremely useful resource for learning reverse engineering.

  • @ziadalaoui2461
    @ziadalaoui2461 Před rokem +1

    learning yourself is one of the best tools in the world of hacking

  • @PowerKuy
    @PowerKuy Před rokem

    Cool

  • @FromRootsToRadicals
    @FromRootsToRadicals Před rokem

    Great tech explain.

  • @byteflowr912
    @byteflowr912 Před rokem

    minor thing but there are some strikethroughs in the description

  • @kRySt4LGaMeR
    @kRySt4LGaMeR Před rokem

    one of your chapters has a error it says "Enable gdb -O3 Compiler Optimization" i think you meant gcc

  • @AndreasWilfer
    @AndreasWilfer Před rokem

    I know this is not a very informative comment but... this video is really good and unlike my comment, very informative.

  • @Backstabbio
    @Backstabbio Před rokem

    Godbolt is cool unless you want to reverse Swift code into ARM64, then you're hooped. Got to do it using the Swift compiler

  • @drygordspellweaver8761

    It's the Eckhart Tolle of RE

  • @kalakxfif9473
    @kalakxfif9473 Před rokem +2

    I was wondering how software cracking works. Could you do a video on the basic idea?

    • @Someone-ve7yn
      @Someone-ve7yn Před rokem +2

      It's basically taking the binary itself and finding some opcode bytes to replace in order to make the software work without having a license for example. He has made a video on that topic if you want to see how it works czcams.com/video/LyNyf3UM9Yc/video.html

  • @aziz0x00
    @aziz0x00 Před rokem

    Nice fast video my friend hhhh

  • @Key_Capz_
    @Key_Capz_ Před rokem

    The dog one hurts my eyes 👀

  • @clusterfkRust
    @clusterfkRust Před rokem

    I’m moving to Sweden

  • @suryasubedi2276
    @suryasubedi2276 Před rokem +3

    To be honest i am learning reverse engineering currently (self) and worried that i cannot become one. But this single video give me a boost . Lets see what will happen in future

    • @nomms
      @nomms Před rokem +2

      Learn to code in C or similar
      then move onto reversing. It's a process

    • @suryasubedi2276
      @suryasubedi2276 Před rokem

      @@nomms Thanks buddy
      And do you have any supporting materials that i am unaware off. If so plz reply me I will be waiting for it

    • @fareedfauzi7915
      @fareedfauzi7915 Před rokem +2

      The motivation will be on and off. Give yourself time. Fundamentals like C, asm, os architecture are important... RE skills is a self learning subject.. you need to keep on practice, research and repeat.

    • @suryasubedi2276
      @suryasubedi2276 Před rokem

      @@fareedfauzi7915 Thanks pal

    • @Westsider26-op3ff
      @Westsider26-op3ff Před 8 měsíci

      Can one learn c++ and then learn assembly for reverse engineering without having to learn c? I want to reverse engineer c++ apps

  • @Kabup2
    @Kabup2 Před rokem

    Ahhh memories... I used to just read the numbers, and I did know what was happening... No translation necessary.

  • @alexanderjakobsen3982

    What is the Music name?

  • @Pixdoet
    @Pixdoet Před rokem

    reverse engineering looks kinda fun :)

  • @biehdc
    @biehdc Před rokem +5

    Would still recommend Cheat Engine and, since it exists nowadays, Ghidra.

  • @pastuh
    @pastuh Před rokem

    Expect to see Denuvo games as playground..

  • @tg7943
    @tg7943 Před rokem

    Push!

  • @ahmadfaisal6356
    @ahmadfaisal6356 Před rokem

    uncle, how to get started into cybersec?

  • @snoopiiii
    @snoopiiii Před rokem +1

    I might be nitpicking, but at 2:04 you said a (local) variable, isn't it technically a const(ant) here? It's not a variable type where it can be changed by the program unless it's self modifying code ofcourse. Just learning the basics of C and was wondering if I got it right, so it threw me a bit off :D

    • @Stormrage476
      @Stormrage476 Před rokem +1

      I'm not exactly sure what you're getting at, but what makes you think this is a constant, as we don't really see the rest of the code? One way of thinking about constants in the context of C code might be a "const" variable, where the compiler /might/ optimize it so that the variable is essentially inlined (as in, for example a function call with the const value gets compiled without the variable on the stack, but rather compiled in as a constant to the function call). I'm not entierly sure how the C compiler handles it, but depending on the optimizations used non-const variables can also be optimized out (possibly not much differently than const variables). The volatile keyword in the example essentially prevents the compiler to apply such optimizations and (in this case) ensures the variable gets placed on the stack.

    • @StevenHay3
      @StevenHay3 Před rokem

      I don't see anywhere they're declared as 'const', only 'volatile' which actually tells the compiler that the value of this variable may change at any time, esp. without any action from any visible code, and as such it shouldn't attempt to apply optimizations.

    • @snoopiiii
      @snoopiiii Před rokem

      @@StevenHay3 But the assembly doesn't show it as a variable tho 🤔

    • @ratchy1231
      @ratchy1231 Před rokem +2

      @@snoopiiii I think you're misinterpreting the assembly code. The line you're seeing is simply initializing the local variable with a constant value. You can also clearly see in the original C code that there isn't any constant, only variables with the "volatile" modifier applied in order to suppress compiler optimizations.

    • @StevenHay3
      @StevenHay3 Před rokem

      @@snoopiiii I'm going to be honest, I don't know nearly enough about assembly to answer :( I hope you figure it out, though!