everything is open source if you can reverse engineer (try it RIGHT NOW!)

Поделиться
HTML-код
  • Опубликовано: 20 ноя 2024

Комментарии • 987

  • @LowLevelTV
    @LowLevelTV  Год назад +34

    wanna learn more about computers? check out my courses at lowlevel.academy (there's a sale) 👌

    • @a-google-user07
      @a-google-user07 4 месяца назад +1

      9 likes?? lmao what

    • @Moppup
      @Moppup 4 месяца назад

      This is fascinating! Thanks!

  • @Vortex-qb2se
    @Vortex-qb2se 7 месяцев назад +581

    The guys with no coding experience must be terrified now

    • @MohitKhare
      @MohitKhare 4 месяца назад +39

      bro, 8 years of professional experience with me. Still struggling just to keep up with him. 😂

    • @artemis-arrow-3579
      @artemis-arrow-3579 4 месяца назад +12

      @@MohitKhare skill issue

    • @candybird7028
      @candybird7028 4 месяца назад

      @@artemis-arrow-3579 no one likes u

    • @minhhoangvo4759
      @minhhoangvo4759 3 месяца назад +2

      @@artemis-arrow-3579 challenge your

    • @laincy-zp6lr
      @laincy-zp6lr 3 месяца назад +6

      İ Felt dumb until ı read thıs tnx

  • @fus3n
    @fus3n Год назад +11491

    "You don't need any programming experience" continues to show code and terms that only a programmer would understand.

    • @dongueW
      @dongueW Год назад +160

      😂😂

    • @replikvltyoutube3727
      @replikvltyoutube3727 Год назад +808

      Not only programmer, computer scientist too

    • @kofiboateng9181
      @kofiboateng9181 Год назад +520

      Forreal lol..... Im looking at the command line print out like, "Is that not assembly." Then very next line "That's why we learn assembly." 🧐

    • @glowiever
      @glowiever Год назад +226

      basically the "refuse to elaborate" chad kinda thingy kek

    • @supermariozaken
      @supermariozaken Год назад +526

      You definitely need it, anyway why would you want to "reverse engineer" if you have no clue what to do with it?
      RUclipsrs need to stop promoting "you don't need to know anything of X for this" and actually encourage people to learn what they need.

  • @stevereaver
    @stevereaver Год назад +2320

    "No coding experience needed", then dives straight into system level assembly.

    • @LowLevelTV
      @LowLevelTV  Год назад +318

      teehee

    • @fodk7021
      @fodk7021 9 месяцев назад +194

      @@LowLevelTV don't try to teehee yourself out of this one !

    • @MisterChief711
      @MisterChief711 9 месяцев назад +109

      @@LowLevelTVnot even funny. you just lied in the video

    • @NickyDekker89
      @NickyDekker89 9 месяцев назад +117

      @@MisterChief711 Skill issue.

    • @MisterChief711
      @MisterChief711 9 месяцев назад

      i can feel the sweat on your hands@@NickyDekker89

  • @avader5
    @avader5 Год назад +1791

    This reminds me back in the nineties when I ran my own company. I found a bug in QuickBooks Pro where they assumed a value for one of the payroll deductions would be a constant number. In my case it turned out that it had to be another value that the programmers at Intuit hadn't coded for since they hadn't done their due diligence research into corporate payroll tax law. I then proceeded to look at the data file that they were keeping I found the two bytes that represented the number for the percentage deduction on the line and I manually modified it to be the new number it needed to be. I then was surprised when I informed Intuit of their bug that they threatened to sue me for modification of what they termed copyrighted data.

    • @torphedo6286
      @torphedo6286 Год назад +249

      Checks out lol

    • @featherfiend9095
      @featherfiend9095 Год назад +117

      Super cool to c one of the original hackers (before it became erroneously equivalent to a “cracker”) talking about this.

    • @RealCaptainAwesome
      @RealCaptainAwesome Год назад +379

      How dare you.... checks notes... find and fix a bug in our software!

    • @orrilindalgunason8034
      @orrilindalgunason8034 Год назад +11

      This sounds a lot like what happened with Russell 'Rusty' Hardenburgh if I remember correctly. Very interesting either way.

    • @baruchben-david4196
      @baruchben-david4196 Год назад +66

      Corporations are touchy that way. Heaven forbid you should improve something, correct a bug... That's what all that text is about in the EULA.

  • @Kyrelel
    @Kyrelel 9 месяцев назад +250

    Good luck reversing any binary with zero programming knowledge.

    • @jeanm3506
      @jeanm3506 6 месяцев назад +4

      😂😂😂😂

    • @Jxhsxn
      @Jxhsxn 4 месяца назад

      fr 😂

    • @mrhassell
      @mrhassell 4 месяца назад

      That's why IDA Pro is such a great set of tools. Besides the fact, by learning from zero programming knowledge, you're learning from the base (assembler), which is about as low level as a human being can get between program operations and the computer CPU (the next step being binary), you'll learn things that even advanced programmers are only casually (if at all) familiar with, as well as develop a skillset that can be used in digital forensic investigations, learn how to battle in the field against real-world malware, viruses and uncovering exploits and vulnerabilities that have never been seen or identified. I learnt "debug", when I was 11 years old to gain access to more games in MS-DOS 1.1, as I found this easier to learn ASM registers and HEX conversions and re-program instruction cycles as well as stack management and I/O, than fiddling with BASIC to draw sprites.
      Admittedly I went to a computer fair every month, for 6 months before I started to get any clue of how it worked but from there, in time and with a sincere dedication (with 3 months of glandular fever, which nearly prevented me from ever reaching teenage years), I honed my skills and put my OCD to good use, becoming one of the most prolific crackers in Australia and the UK (where my father lives and 12 years of my life were spent), during the 80s and the best part, was nobody knew who I was or would have guessed anything about my identity, being just a kid from rural Victoria! From that point, learning C and C++ was straightforward and much easier than had I taken a standard learning path, achieved in higher learning or as a student of an academic institution. Having worked in IT for over 25 years, I recommend this path as the first point in learning, or for anyone serious in developing skills, as this goes far beyond simply programming and opens your mind to a universe of new possibilities, which developing programming skills and knowledge of alone, likely will never provide anyway (reverse engineering is not a basic requirement of programming or used to teach software development, as I tend to believe they should be!).

  • @davidolsen1222
    @davidolsen1222 Год назад +330

    Also, for various reasons password checkers shouldn't execute like that. You can absolutely tell that if you hammer it that feeding it a letter `c` first takes twice as long as any other letter when entered into the password checking. And then another 10ms if you add an `a` you can end up solving the password based on the time it takes to accept or reject that password. Since each letter you get right delays the time to rejection.

    • @Oliver_Atkinson
      @Oliver_Atkinson Год назад +3

      How do you check them simultaneously?

    • @davidolsen1222
      @davidolsen1222 Год назад +79

      @@Oliver_Atkinson You can force a delay. So from the time you hit `enter` to the rejection the time will be like 1 second, which also makes brute force not an issue. But, usually this isn't an issue because the password is stored as a salted-hash password. So when you type aaaaaaa and then aaaaaab it would create two radically different hashed strings so you would not actually be able to simply compute the time to denial, because even if you could tell a particular password took longer to reject the hash is cryptographic, so you can't use that information in any useful way. It's another reason to never store passwords, because comparing plain-text passwords also leads to some security issues.

    • @kirasmith1147
      @kirasmith1147 Год назад +3

      @davidolsen1222 Well, the even better answer is that a check in an executable will never hold, or more simply "you don't". But ofc server side stuff too (also, a delay will not hold up, the actual operation must be constant time)

    • @joshie1984
      @joshie1984 9 месяцев назад +2

      Usually a password is hashed and salted, it does not check letter by letter... this would almost never/ never work or make a difference in execution time

    • @TribeWars1
      @TribeWars1 9 месяцев назад

      One thing you can do is for example put both the password and the input in a 256 character buffer and then check all 256 characters for equality, regardless of whether an earlier check already failed. This is not a problem if you're using password hashes btw, which is the actual correct solution for password authentication.

  • @AnRodz
    @AnRodz Год назад +705

    Although coding from a young age, 'decompiling' always felt like black-magic concept. Thanks for explaining it to me.

    • @adewalo
      @adewalo Год назад +17

      but black-magic makes it sound cool so its even better

    • @EvilSapphireR
      @EvilSapphireR 11 месяцев назад +6

      You get used to it. Just filling in the gaps made by compiler optimizations and custom data types most of the time by intelligent guessing.

    • @skilz8098
      @skilz8098 11 месяцев назад +6

      Think of compiling as a mathematical function and decompiling as its inverse function. This is a fairly decent analogy except compilation and recompilation is within a much bigger scope of complexity where some deductions have to be inferred by its context.

    • @narrativeless404
      @narrativeless404 9 месяцев назад +2

      It's actually kinda hard to make a good decompiler and the ones we do have are inherently unreliable
      So most of the time you're better off with just disassembly

    • @artemis-arrow-3579
      @artemis-arrow-3579 4 месяца назад

      @@narrativeless404 idk man, I've always found psuedo C to be decently reliable
      to be fair, I never tried ghidra or ida pro, binary ninja ftw

  • @C5pider
    @C5pider Год назад +91

    Amazing video. Just a small side note that IDA Freeware comes with a free online decompiler which generates (very *accurate*) pseude C code. Would love to see more of this kind of vids. Cheers.

    • @neutron_stz8894
      @neutron_stz8894 Год назад +8

      ida is too far away from that "accurate"

    • @曹絮
      @曹絮 6 часов назад

      @@neutron_stz8894 推荐一个

  • @valshaped
    @valshaped Год назад +20

    The ABI is more like an agreement that writers of assembly language programs make with other assembly writers for the sake of code interoperability. (In this context, the writer is a compiler, but it could be a person as well.)
    The processor generally doesn't care; as long as it's valid machine code, it'll run, ABI be damned.
    You can return your own custom tuple with 2 ints, a short, and a char* if you want, but you can't expect a C program to understand.

    • @zaphod101010
      @zaphod101010 Год назад +3

      I came down here to say that this is absolutely correct.

  • @wreespace
    @wreespace Год назад +60

    I was having trouble understanding how memory call works on a computer. This video cleared that for me. Seeing it into action made so much sense. I can't thank you enough.

  • @afifmalghani5202
    @afifmalghani5202 Год назад +63

    I have been waiting man. Thank you! I don't wanna go down the conventional, tools first, path that is taught in most of the courses out there.

    • @LowLevelTV
      @LowLevelTV  Год назад +7

      Right on

    • @thiagomoreira6640
      @thiagomoreira6640 Год назад

      @@LowLevelTV can you please answer where did you hide the password on C's source code? I reviews the video some times and I didn't see the password on original C source code... How did you manage to hide?

    • @galfisk
      @galfisk Год назад +4

      ​@@thiagomoreira6640 he collapsed the getPass function in the source view. Lines 4-36 are hidden when we see it.

    • @adityakeshla1668
      @adityakeshla1668 4 месяца назад

      Brother Can anyone explain...how can we unlock item in codm ... through open source

    • @numnut1516
      @numnut1516 Месяц назад

      No!

  • @jakenbaked87
    @jakenbaked87 11 месяцев назад +9

    This was the BEST tutorial on IDA and disassembly I've heard on RUclips

  • @dono42
    @dono42 Год назад +24

    The ABI varies depending on the OS rather than the processor. For example, Windows and Linux have different ABIs while they may run on the same process.

    • @arronalt
      @arronalt Год назад

      does that mean that some ASM scripts don't run on both Operating Systems?

    • @andrewdunbar828
      @andrewdunbar828 Год назад

      @@arronalt ASM is not a script and typically no ASM code that does anything useful will run on two different OSes with the same CPU unless specially crafted to do so.

    • @andrewdunbar828
      @andrewdunbar828 Год назад +2

      Came here to say this. The CPU or ISA company may well have an official ABI these days and some part of that might not be negotiable by the OS designer, but most of it is. And machine code doesn't need to follow it at all and in the case of malware should probably avoid as much official ABI style as possible in the most obfuscated parts.

  • @anon_y_mousse
    @anon_y_mousse Год назад +36

    The program `strings` is exactly why if I want to protect my own programs I just encode my own strings. I don't always write things that I want to protect, but it's still fun to play with different methods of encoding to stave off passive RE.

    • @spaghettiking653
      @spaghettiking653 Год назад

      What do you mean by encoding?

    • @anon_y_mousse
      @anon_y_mousse Год назад +5

      @@spaghettiking653 It could be as simple as an xor scheme, but no matter what method I use, it wouldn't be secure because the means to decode it would be in the binary. It's at best a first step.

    • @kirasmith1147
      @kirasmith1147 Год назад +4

      Also best to save this part as a pre-production-build automation instead of unironically making a mess of your codebase

  • @ZeonLP
    @ZeonLP Год назад +55

    While I like the video in general, reverse engineering is definitely NOT easy. Try reversing a more complex binary (AAA games, commercial software, etc.). Without references, existence of obfuscation & code virtualization, RE can quickly become a very specialized and extremely time-intensive puzzle that likely requires deep knowledge about OS internals, compilers and assembly. Here, we of course have the original code as reference and - having written it ourselves - all underlying program concepts are already known which defeats the purpose of "solving the puzzle" aka reverse engineering.

    • @poiu477
      @poiu477 Год назад +6

      getting into it is easy, getting good is hard

    • @S.O.N.E
      @S.O.N.E Год назад +4

      Guy really expected the 13 min video to be 3 hours long

    • @simulator8
      @simulator8 Год назад +7

      @@S.O.N.E Guy really thinks the 3 Hours video to be enuf for reverse engg

    • @ocaly
      @ocaly Год назад +1

      @@simulator8 guy really wouldn't want a 3 hour long video about RE

  • @flowmardev
    @flowmardev 11 дней назад

    I'm a developer and this is my first exposure to reverse engineering.... I have other stuff to do but the urge to learn more about it is SO STRONG!!! I'm putting a pin in it and most definitely coming back to learn more. Thanks, dude!!!! 😀

  • @YasserCherfaoui
    @YasserCherfaoui Год назад +70

    I never knew IDA before, I used to use GDB to do kinda reverse engineering but now I feel like it's something I should start relaying on. Thank you sir!

    • @YasserCherfaoui
      @YasserCherfaoui Год назад +2

      @@khatdubell thanks a lot man

    • @sobowalebayo9185
      @sobowalebayo9185 Год назад +1

      Hello, can you help with guides to becoming a reverse engineer?

    • @zhad6045
      @zhad6045 Год назад

      @@sobowalebayo9185 google

    • @taahaseois.8898
      @taahaseois.8898 10 месяцев назад

      @@sobowalebayo9185 watch the video...

  • @red.doritos
    @red.doritos Год назад +438

    You are good at explaining things to beginners, pls do more of this reverse engineering stuff, make it a series you don't complicate things, i like it

    • @neti_neti_
      @neti_neti_ Год назад +2

      आपने बिलकुल सही कहा , सरलता और सहजता ही दिव्यता। 👏👏👏

    • @JLSXMK8
      @JLSXMK8 Год назад +2

      “..Simplicity and spontaneity is divinity.”; Very true.

    • @neti_neti_
      @neti_neti_ Год назад

      @@JLSXMK8 👏👏👏

    • @laptopDoctorKZN
      @laptopDoctorKZN Год назад

      Hi firmware can it be decompiled

  • @lanceward7048
    @lanceward7048 9 месяцев назад +22

    You don't have to have ANY programming experience, you just have to be a computer engineer🤣

  • @offroaders123
    @offroaders123 Год назад +6

    Woah, super cool! And at 12:50, after he pointed out the 'g', you can actually see the rest of the password characters at the start of each section in the buffer. Crazy!

  • @martijn3151
    @martijn3151 Год назад +43

    I definitely enjoyed the video. Although I think the title is a bit too much clickbait. Equaling reverse engineering to being open source code, is a long stretch in my opinion. Sure, this simple non optimized example is quite understandable when it’s reverse engineered. Now try a large program containing lots of templated code, with O3 optimization, inline functions, loops unrolled, SIMD optimizations etc and see how far the disassembly will bring you to what it is you’re trying to achieve. E.g., getting around a password check. It’s super hard and you definitely need programming and assembly experience to even begin to tackle that. Nice introduction though ☺️

  • @BiteYt69
    @BiteYt69 Год назад +5

    I once made a function from ida pseudocode in c++, used a function pointer of my function and Mshookfunction to hook into the real function and replaced it, it worked as the replacement function had same bytesize as original function. Ida or ghidra + hooks are really fun

  • @berkaykurkcu
    @berkaykurkcu Год назад +142

    Loving the content! A tutorial on learning C language from beginner to advanced maybe? Roadmaps for these kind of languages are always welcome by community and highly watchable, might pull in more new viewers!

    • @alpayarsoy2437
      @alpayarsoy2437 Год назад +5

      Intermediate c programming kitabı var internette bedava. Orda güzel bilgiler vardı.

    • @raka2844
      @raka2844 Год назад +1

      @@alpayarsoy2437 can you tell me which one is it?

    • @Moon-D0G
      @Moon-D0G Год назад +25

      Bro cmon it's like begging content for calculus 1 or trigonometry in 2023. C and C++ already have very depth guides on youtube and as book. These languages are out there like decades.

    • @berkaykurkcu
      @berkaykurkcu Год назад

      @@Moon-D0G 5 ay önce “im new at programming” diye baska bir videoya yorum atmissin simdi buraya gelip come on bro yillardir var bro yazmissin hava atiyosun 😁 adama hem icerik tavsiyesi vermisim hem de gecerli sebepler sunmusum, “begging” diyosun ulen bizim Türkler niye böyle anlamak imkansiz 😁

    • @berkaykurkcu
      @berkaykurkcu Год назад +2

      @@alpayarsoy2437 teşekkür ederim güzel yönlendirmeniz için 🙏🏼

  • @harveysattic3918
    @harveysattic3918 Год назад +12

    I am so far 1 week into C#, granted this video went over my head a tiny bit, but I understood the fundamentals. Looks like I might dabble in this in the future.

  • @thomasbard1506
    @thomasbard1506 Год назад +203

    You are doing such a great job man ! Keep it up, I learnt so much from you dude, you're litterally a better teacher than most of the teachers I had in college ! Love you !

    • @LowLevelTV
      @LowLevelTV  Год назад +27

      I appreciate that!

    • @SanketL3730
      @SanketL3730 Год назад +3

      Same here

    • @pialdas6835
      @pialdas6835 Год назад +1

      @@agentstona Where was he messing with CPU registers? What memory address registers was he changing?

    • @jirehla-ab1671
      @jirehla-ab1671 Год назад +1

      ​@@LowLevelTVeverything is open source if u understand machine code and the cpu architecture of the app.

  • @matthewboyer4212
    @matthewboyer4212 Год назад +18

    Should also be worth mentioning that in the United States, contracts can override the fair use clause in the DMCA. Courts have upheld this.
    This means thar while reverse engineering isn't illegal, it almost always violates a contract and could result in a civil lawsuit for breach of contract or copyright infringement.

    • @LowLevelTV
      @LowLevelTV  Год назад +3

      www.eff.org/files/2022/02/17/2022-02-16_apple_v_corellium_amicus_-_filed.pdf

    • @ChristopherGray00
      @ChristopherGray00 Год назад +6

      reverse engineering, with how it is traditionally done, can violate copyright law, however pure clean room blackbox reverse engineering, in any instance does not break copyright law, as none of the code of the original program is actually used.
      clean room blackbox reverse engineering, is obviously astronomically more difficult to do, but legally it is airtight because all you are doing is reading the output of the original program, and then writing code based on what you think it is doing.

    • @matthewboyer4212
      @matthewboyer4212 Год назад +9

      @@LowLevelTV
      1: see Bowers v. Baystate Technologies, Inc.
      2: This is an amicus curiae, not a court case. it also discusses the benefits of reverse engineering and isn't a law.
      I never said that reverse engineering was bad, I said it was a breach of contract.

  • @jordantheman25
    @jordantheman25 Год назад +63

    I love Ghidra

    • @billigerfusel
      @billigerfusel Год назад +3

      Idafree is really limited. Ghidra is the way to go.

    • @MisterK-YT
      @MisterK-YT Год назад +6

      I love chicks

  • @FalcoGer
    @FalcoGer Год назад +6

    6:00 there is no agreement with the processor. It's simply a calling convention that in 64 bit processors you use registers for the first few arguments and then the stack for the rest. There is no agreement with anything, it's just something that the compiler does for internal consistency. There is no need for it to be that way. You can write your own assembly and put whatever you want in whatever register you want and do a function call and then read those registers back. All that really matters is how the processor behaves to the outside world, and that is documented in the instruction set manual, outlining how the processor should behave when any given instruction is executed. And none of those say that RDI should contain the first argument for a function call. In fact call really only does 2 things. Push the next IP to the stack and set the instruction pointer to the callee. Or in detail it pushes the address of the next instruction to the stack pointer address and then decrements the stack pointer address and then sets the instruction pointer to the function to be called. Nothing else goes on here. It's up to the compiler to handle how arguments are transferred to and from the function, how to handle the stack or anything else, really.
    9:43 no, some dumb programmer may have given the function the name "getPass" originally, but that's not what the function does. Since you "don't know" the original name, you should give it the best name you can come up with. A better name would be "checkPassword" or "comparePassword" or something along those lines, because that function doesn't return (get) the password, it just checks if the password you provided is correct or not.

  • @saddish2816
    @saddish2816 Год назад +9

    Reverse engineering is so fun. Please teach us more

  • @TheColonel_
    @TheColonel_ 11 месяцев назад +7

    "You don't need any programming experience" yeah right...

    • @Johny9405
      @Johny9405 День назад

      No, just the basics and you can learn that in an hour maybe

  • @ssrd.
    @ssrd. Год назад +31

    Amazing video, king. One thing though, I think you forgot to put the download link for IDA you mentioned at 4:11. Also, the repo in the description is probably private.

  • @BackyardMonster
    @BackyardMonster Год назад +90

    Would be cool to see you reverse engineering a multiplayer flash game. Since most of them only have the .swf files and no server side files. Maybe tricking it to run on a localhost. Something like this would be very cool and could help archive more flash games, but it probably 100x more effort

    • @user-yw8sr3uj1w
      @user-yw8sr3uj1w Год назад +3

      Yes please!!

    • @VanBagdi
      @VanBagdi Год назад +35

      It is actually easier to decompile Flash games because they run on ActionScript, which like Java and C#, is first compiled to bytecode, which is then run on a VM. There are decompilers that give you the entire source code from a SWF file with full variable names and everything.

  • @ThePowerRanger
    @ThePowerRanger Год назад +29

    Great video, a similar video for ARM Assemble would be great, explaining the special registers and stuff.

    • @LowLevelTV
      @LowLevelTV  Год назад +4

      Great suggestion!

    • @m.projects
      @m.projects Год назад

      I think that the free IDA version doesn't include ARM support, that would be a big issue

  • @jesusdueas7145
    @jesusdueas7145 11 месяцев назад +4

    “You don’t need any programming experience” taking a binary? From a Source code? With diferent simbols? They are tipes of variables? Names of funcions? And they are readable strings? And you can get a lot of information by reading a buffer from the source code? What is the if get pass? This is just not even minute 1 and I’m lost.

  • @Grentanksmog
    @Grentanksmog Год назад +17

    Nice demonstration! Except that when dealing with passwords no one just compares them char by char. They often are stored in hashes with salts, so you cannot decipher it w\out brute force

  • @jonathanmurray2986
    @jonathanmurray2986 Год назад +3

    “No previous programming experience needed…anyway, here’s assembly”

  • @OmarRampado87
    @OmarRampado87 Год назад +26

    Great video! You say the registers are set for the processor x86, but I think is for the "calling convention" in Linux and it can change for other OS. I didn't know this IDA, it looks very intersting, thank you!

    • @Acorn_Anomaly
      @Acorn_Anomaly Год назад +4

      Yeah, a calling convention is set based on the target processor AND target OS.
      x86/i686 is different than x86-64/amd64, which is different from ARM, etc. And Linux and Windows conventions can be different.

  • @vega7338
    @vega7338 5 месяцев назад

    If anyone found themselves struggling to understand this, the following are the required courses:
    1. Program design (for understanding the C code) (C recommended, python is not actually close to the topic)
    2. Compiler (for understanding how computer transfer high level code to machine code or instructions)
    3. Computer Organization (for understanding how instructions have your CPU interact with other components like RAM and Cache)
    Overall, there is one shortcut, that is to have a degree in Computer Science.

  • @int-64
    @int-64 Год назад +6

    We need more stuff like this

  • @SunsetGraffiti
    @SunsetGraffiti 5 месяцев назад

    Oh wow... I think I'm in love. This makes me feel like I'm a kid again, tearing apart my dad's old VCR trying to figure out how it works.

  • @alexandrsavochkin9442
    @alexandrsavochkin9442 Год назад +12

    Good introduction! Not quite disassembly-related question: I am wondering why the code generated by the compiler for each character comparison uses RAX for different things, so it needs to overwrite it multiple times: 1. it loads the buffer address into it and adds offset to it, and then 2. loads the character for comparison. Wouldn't it be more effective to use another register, say, RBX for the buffer address and RAX for the character comparison (or vice versa)? I know, registers are scarce resource, but here it seems to make sense for me to use 2 regs.
    At the same time, I heard that compilers are very smart today and create much better binary code then average human writing assembly code, so it should have some efficiency explanation.

    • @wildbohana
      @wildbohana Год назад

      GCC does have many flags that can affect the way that the compiled code will look, some of the flags allow you to choose what level of optimization you want for your code, but more optimized code also takes more time to compile

    • @giornikitop5373
      @giornikitop5373 Год назад +1

      a few come to mind.
      1. rax is the alu register.
      2. being a c program, all return values are stored in rax.
      3. rax is generally safe to be changed whenever.
      4. modern cpus can write faster to the same register if it was accessed shortly before. of course it's not perceivable but that's what intel claims.
      my guess is mostly because of 2 and 3 but also depends on the compiler's optimization lvl. of course the disassembly can be a bit "off" because ida doesn't always produce the most accurate results, but this is a very simple binary for that to be the case.

    • @miriamkapeller6754
      @miriamkapeller6754 Год назад +1

      The explanation is simply that he compiled without optimizations. The mov, add and movzx instructions are unnecessary. In an actual release executable, each set of these 4 instructions can be reduced to a single cmp instruction, like cmp byte ptr [rdi+7], 100.

  • @gabrieldta
    @gabrieldta 11 месяцев назад +1

    Speaking of which...
    Has anybody ever considered this Reverse Engineering pipeline i came up with?
    1. Play a game
    2. Record the video/sound
    3 Record each and every player input
    4. Feed [Pixels and Sound + Player input] to an AI
    5. Through AI "magic", the game is recreated because the AI has learned so much from what happens to the pixel resulting from this/that input.
    6. Create a whole new AImulation (my term) market.
    =)

    • @rawbmar1166
      @rawbmar1166 10 месяцев назад +1

      What you just said was... Have AI do all the work and you do nothing. Doesn't sound like reverse engineering.

  • @meatgoat4084
    @meatgoat4084 Год назад +3

    "everything is open source if you can reverse engineer" -- I hope the company you work for has a good legal team.

  • @agucci
    @agucci Год назад +1

    I am not the best reverse engineer in the world, but IDA is so much fun for the entire family and friends... The Cyber research of the Law.

  • @mantisgaming
    @mantisgaming Год назад +7

    I'd love to have seen what the getpass function looked like in c at the end of the video

  • @meestyouyouestme3753
    @meestyouyouestme3753 9 месяцев назад +2

    “no coding experience required.”
    *requires past programming participation *

  • @ludologian
    @ludologian Год назад +7

    I didn't know that there's existing bash code disassemble strings and object.. I like that you go up level by level but you should talked about reverse engineering the code with some decompilers as it's usually return the code if it's not obfuscated then maybe try to see the callstack with debugging. then using a disassembler

    • @GeneralZimmer
      @GeneralZimmer Год назад +1

      I legit thought he'd show us a decompiler when he said you don't need programming skills or anything.

  • @kkyang7515
    @kkyang7515 Год назад

    I finally understood why my school taught me assembly now🤯. I never used it because I am on the dev side. that is so cool!!

  • @sorek__
    @sorek__ Год назад +8

    Such explanations of simple concepts are really why I subscribed to your channel! Wish you did followup videos on more advanced stuff with it.

  • @nixielee
    @nixielee Год назад +2

    You should do this for real malware, YT needs more of this stuff

  • @paulezekiel-hart733
    @paulezekiel-hart733 Год назад +5

    Remember folks, you don't need any programming experience 😅

  • @akulkumar1357
    @akulkumar1357 3 месяца назад

    As someone who has been learning/doing programming for 3+ years now and knowing 7 different high and low level languages. I can most definitely assure you that although you don't essentially need to know how to code this is NOT for beginners. Even I had to rewind a few parts to understand this.
    That being said this was an extremely fun to watch and informative video. Thanx man✌

    • @adelitaz
      @adelitaz 3 месяца назад

      Hello do you use discord

    • @akulkumar1357
      @akulkumar1357 3 месяца назад

      @@adelitaz nope

    • @adelitaz
      @adelitaz 2 месяца назад

      @@akulkumar1357 is there any future in reverse engineering

  • @SUNNofODIN
    @SUNNofODIN Год назад +5

    "Manipulating Assembly is so interesting!" I said today for the first time in my life.

  • @noxwellix
    @noxwellix 3 месяца назад

    > selecting ELF's program header table
    > reverse engineering is going from *this* to what the code does
    You could have scrolled down to the .text section with machine code at least :)

  • @FurqanHun
    @FurqanHun Год назад +8

    I didn't thought I'd understand someone using c this early for a program like this 💀 though i still haven't gotten used to it but I've taken few steps ig 🚶 trying to understand programs just by looking at codes, reading documentations and trying to recreate the stuff i learn really did helped more than taking lectures or watching video tutorials 👾

  • @RICK_MCN
    @RICK_MCN 8 месяцев назад

    I like how you brake this down for people that don't understand this or dummy it down very nice brother 👍👍

  • @benjaminrich9396
    @benjaminrich9396 Год назад +3

    I love videos like this. Keep 'em coming. :)

  • @eljuano28
    @eljuano28 Год назад +1

    You're a cyber treasure, dude.
    Don't ever forget that.

  • @nachosncheez2492
    @nachosncheez2492 Год назад +3

    nice, more of these

  • @jonathansung8197
    @jonathansung8197 6 месяцев назад

    This is how you used to change to the dark theme for Unity a few years ago back when the free version of Unity was restricted to the light theme only. You would open the Unity.exe with a hex editor and manually change a particular value.

  • @whtiequillBj
    @whtiequillBj Год назад +6

    This is a very good high level explanation of reverse engineering. Do you have any plans on something more intermediate level or do you have a channel that I could go look at for something like that? I'm already in the weeds from reading the Intel Architectures Software Developer's Manual. I've been enjoying using Kaitai.

    • @sh_gosha6867
      @sh_gosha6867 Год назад

      This channel youtube.com/@HEXORCIST?si=EnSIkaIECMiOmarE

  • @gjermundification
    @gjermundification 11 месяцев назад +1

    RTFB = reverse engineering - like we did back in the day with VIC-20, C64, and Amiga

  • @citricdolphin
    @citricdolphin Год назад +3

    Great tutorial, but DEFINITELY not suitable for people with "no programming experience." I know a lot of computer science and software engineering students that would be completely lost with this.
    It's easy to forget that even lines like "only the case for 64-bit Intel" mean little to complete beginners.

  • @dameanvil
    @dameanvil 9 месяцев назад +1

    0:00 📖 Reverse engineering is the process of understanding the functionality of a binary without access to its source code.
    1:31 🛡 Malware reverse engineering is crucial for cybersecurity professionals to understand and defend against threats.
    1:53 😄 Reverse engineering can also be enjoyable, involving the challenge of understanding how things work.
    2:03 🛠 Basic reverse engineering techniques include using the strings command to find ASCII strings in a binary.
    3:01 🧠 Disassemblers like object dump and IDA convert binary machine code into human-readable assembly instructions.
    8:00 🔍 Reverse engineers use disassemblers to analyze assembly instructions and infer the functionality of a binary.
    11:38 🔐 Understanding the binary's functionality, such as password comparison, allows for successful reverse engineering.
    13:00 🤔 Some binary content, like password comparisons, may not be revealed by simple string extraction due to how instructions are encoded.

  • @aadiththiruvallarai4856
    @aadiththiruvallarai4856 Год назад +6

    I get a 404 error when I click on the GitHub link. Where can I find your GitHub?

  • @flyingbutter7612
    @flyingbutter7612 7 месяцев назад +1

    Ok this was very helpful since i didn‘t know where to begin on reverse engineering thank you!

  • @Themisterfly85
    @Themisterfly85 5 месяцев назад

    asm is mainly used for cracking software (at least that's how i learnt it) and it is well demonstrated in this video. thanks for the memories i should say, this brought me back to me teenager times.

  • @norielgames4765
    @norielgames4765 11 месяцев назад +4

    Being open source doesn't mean you get the code. It's a type of license. Doesn't matter how you obtain the code, be it reversing or stealing it somehow, if the code has a closed license you can't use it in any way shape or form.

  • @charles-y2z6c
    @charles-y2z6c Год назад

    Nice, takes me way back to my 6502 days, writing decompilers.
    Subscribed and Looking forward to seeing what else you have.

  • @jaybhanushali8559
    @jaybhanushali8559 Год назад +3

    Hey, thanks for the amazing video. I have a small question. At 7:47 you labeled the variable as "buffer" because you know the code already that it was a buffer that you had created and will be storing password. But in real scenario we will not have that C code but will only have access to the IDA generated assembly code then how will I know wat that variable stores and why was it defined. Here you knew its buffer but in real cases while rev. engineering software I would never have a dream about where, what and why was that variable defined.

    • @kebien6020
      @kebien6020 Год назад +1

      You kinda look around to see how it is being used, and pick whatever name makes sense for you.
      In this case you can see that it is being passed as the second parameter to scanf, which reads data from stdin (in this case user input) into the passed pointer. So it makes sense to call it a buffer. Personally, I would have called it user_input or input_buffer.

  • @AnshulRanjan14
    @AnshulRanjan14 11 месяцев назад +1

    That's like saying, you can go anywhere if you know how to pick locks. Sure you can do that, doesn't mean you should do that. What makes open source, open source is the licence under which they make the source code available. Not that you can reverse engineer a code.

  • @julianbittner4822
    @julianbittner4822 10 месяцев назад

    i always wanted to dig into reverse engineering but never knew where to start. thank you so much!

  • @Hossimo
    @Hossimo Год назад +3

    @LowLevelLearning FYI, Your github link in the description is a 404

  • @amroelkhodrai3048
    @amroelkhodrai3048 10 дней назад

    Videos like this is why I like youtube, keep up the good work!

  • @diegomasotti7517
    @diegomasotti7517 Год назад +3

    404 on the github link

  • @justarandomstranger1
    @justarandomstranger1 11 месяцев назад +2

    "You don't need any programming language experience"
    "You can do it, right now, on your computer"
    Bro i am on intermediate level and i have 0 fuççing idea what is happening. I don't learn that mthfker assembly yet.
    Don't get this wrong, i am not mad. I just need some lesson on assembly later😢

  • @pskry
    @pskry Год назад +3

    FYI, your github link in the description is broken (404)

    • @adlsfreund
      @adlsfreund Год назад

      He probably forgot to make it public.

  • @astrovicis
    @astrovicis Год назад +1

    This was awesome. Also the first time I feel like I’ve genuinely followed a video like this. Thank you!!

  • @mutexin
    @mutexin Год назад +5

    Misleading title, misleading claims.

  • @MohitKhare
    @MohitKhare 4 месяца назад

    Bro you said no programming/networking experience 😂. Took my 8 years of professional app development experience just to keep up with you. Thanks for the vid though, btw you have a new sub. ❤

  • @webrevolution.
    @webrevolution. Год назад +3

    1:20
    That is not binary data, it's HEX. Binary data is only 1s and 0s.

  • @austinsharpe8157
    @austinsharpe8157 3 месяца назад +1

    "Wow! I just went from zero programming experience to knowing how to reverse-engineer and decompile binary by watching this 14 minute video!"
    - No one

  • @ezekieljills
    @ezekieljills Месяц назад +3

    garbage content

  • @KvapuJanjalia
    @KvapuJanjalia 5 месяцев назад

    When I write performance-critical C# code, I usually disassemble it to make sure JIT optimizes it properly.

  • @laiskapyykki
    @laiskapyykki 8 месяцев назад +2

    That kid is not safe.

  • @wtfdoiputhere
    @wtfdoiputhere Год назад +2

    Can't wait to watch this video but I'm studying
    Love your content man please make more cybersec videos cause things magically click if it's you explaining

  • @vladislavkaras491
    @vladislavkaras491 11 месяцев назад +1

    Thanks for showing, how tedious is reverse engineering! :P

  • @samjohn1098
    @samjohn1098 Год назад

    One of the video to get started for reverse engineering

  • @BuckyOhYeah
    @BuckyOhYeah 10 месяцев назад

    For novice programmers... write some javascript or css. Use an online minifyer on said code. Take the minified code and place into a formatter. Then try to determine what the code is doing...

  • @hodolski
    @hodolski 11 месяцев назад

    From my own experience a good reverse engineer is also a good programmer. I, a BBA graduate just learned how to code, tried RE but never surpassed my colleague with years of programming experience. You DO need some knowledge and experience to read reversed code, and the more the better. Computational thinking is a thing.

  • @hdufjwif6fjjgkf943
    @hdufjwif6fjjgkf943 Год назад +1

    Nice timing! Just installed Ghidra to learn rev eng and binary exploitation and your video came out

  • @abdulrahmanelawady4501
    @abdulrahmanelawady4501 Год назад +2

    That was quite simple to understand. despite the fact that it will need you to understand the basic terminologies of computer science in order to fellow along. but overall, it was nice to watch. hey maybe you can make a video covering those basic terminologies and link it to your future videos, so people would be able to understand easier. but hey what do I know~

  • @danser_theplayer01
    @danser_theplayer01 Год назад +2

    With one liiitle exception, *it will be a lawsuit worthy copyright infringement* if you "just reverse engineer it" and then use it even as only a small part of your overall big code.

  • @cpu_1292
    @cpu_1292 Год назад +1

    EULA: am I a joke to you?
    Yes, yes it is

  • @mrbobjrsrv
    @mrbobjrsrv 4 месяца назад

    I see a lot of comments saying he lied about saying "No coding experience necessary".
    I'm curious how y'all would react if he had said this instead: "You only need to know the programming language and understand simple coding concepts but you don't need to be an experienced programmer."
    Would that have been better?

  • @NotGarbageLoops
    @NotGarbageLoops 7 месяцев назад

    Wish I had this 10 years ago. Did so much learning the wrong way around.

  • @SloppyPuppy
    @SloppyPuppy Год назад +1

    Ghidra is a more complex tool to per say, but its also its gpl2, so if your looking for something opensource I'd go for that

  • @josephputra2987
    @josephputra2987 Год назад

    This one of the biggest reason i learn programming