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

  Переглядів 1,230,006

Low Level Learning

Рік тому

Keep on learning with Brilliant at brilliant.org/LowLevelLearning. Get started for free, and hurry - the first 200 people get 20% off an annual premium subscription with my URL! Thanks again Brilliant for sponsoring this video!
One of the essential skills for cybersecurity professionals is reverse engineering. Anyone should be able to take a binary and open it in their favorite disassembler or decompiler to figure out what the features are. ALSO, reverse engineering is a fun puzzle that I highly recommend everyone try out for themselves.
Follow along!: www.github.com/LowLevelLearning/babys-first-crackme
Download IDA: hex-rays.com/ida-free/
🏫 COURSES 🏫 Learn to code in C at lowlevel.academy
📰 NEWSLETTER 📰 Sign up for our newsletter at mailchi.mp/lowlevel/the-low-down
🙌 SUPPORT THE CHANNEL 🙌 Become a Low Level Associate and support the channel at ukposts.infojoin
🛒 GREAT BOOKS FOR REVERSE ENGINEERING 🛒
Blue Fox: Arm Assembly Internals and Reverse Engineering: amzn.to/4394t87
Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation : amzn.to/3C1z4sk
Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software : amzn.to/3C1daFy
The Ghidra Book: The Definitive Guide: amzn.to/3WC2Vkg
🔥🔥🔥 SOCIALS 🔥🔥🔥
Low Level Merch!: www.linktr.ee/lowlevellearning
Follow me on Twitter: LowLevelTweets
Follow me on Twitch: twitch.tv/lowlevellearning
Join me on Discord!: discord.gg/gZhRXDdBYY

КОМЕНТАРІ: 836
@LowLevelLearning
@LowLevelLearning 10 місяців тому
wanna learn more about computers? check out my courses at lowlevel.academy (there's a sale) 👌
@fus3n
@fus3n Рік тому
"You don't need any programming experience" continues to show code and terms that only a programmer would understand.
@dongueW
@dongueW Рік тому
😂😂
@replikvltyoutube3727
@replikvltyoutube3727 Рік тому
Not only programmer, computer scientist too
@kofiboateng9181
@kofiboateng9181 Рік тому
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 Рік тому
basically the "refuse to elaborate" chad kinda thingy kek
@supermariozaken
@supermariozaken Рік тому
You definitely need it, anyway why would you want to "reverse engineer" if you have no clue what to do with it? UKpostsrs 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 9 місяців тому
"No coding experience needed", then dives straight into system level assembly.
@LowLevelLearning
@LowLevelLearning 9 місяців тому
teehee
@fodk7021
@fodk7021 3 місяці тому
@@LowLevelLearning don't try to teehee yourself out of this one !
@MisterChief711
@MisterChief711 2 місяці тому
@@LowLevelLearningnot even funny. you just lied in the video
@NickyDekker89
@NickyDekker89 2 місяці тому
@@MisterChief711 Skill issue.
@MisterChief711
@MisterChief711 2 місяці тому
i can feel the sweat on your hands@@NickyDekker89
@avader5
@avader5 Рік тому
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 Рік тому
Checks out lol
@featherfiend9095
@featherfiend9095 Рік тому
Super cool to c one of the original hackers (before it became erroneously equivalent to a “cracker”) talking about this.
@RealCaptainAwesome
@RealCaptainAwesome Рік тому
How dare you.... checks notes... find and fix a bug in our software!
@valcaron
@valcaron 11 місяців тому
They were all bark and no bite. First sale doctrine.
@orrilindalgunason8034
@orrilindalgunason8034 11 місяців тому
This sounds a lot like what happened with Russell 'Rusty' Hardenburgh if I remember correctly. Very interesting either way.
@AnRodz
@AnRodz 10 місяців тому
Although coding from a young age, 'decompiling' always felt like black-magic concept. Thanks for explaining it to me.
@adewalo
@adewalo 6 місяців тому
but black-magic makes it sound cool so its even better
@EvilSapphireR
@EvilSapphireR 5 місяців тому
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 5 місяців тому
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 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
@davidolsen1222
@davidolsen1222 11 місяців тому
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 11 місяців тому
How do you check them simultaneously?
@davidolsen1222
@davidolsen1222 11 місяців тому
@@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 7 місяців тому
@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 3 місяці тому
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 3 місяці тому
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.
@Kyrelel
@Kyrelel 3 місяці тому
Good luck reversing any binary with zero programming knowledge.
@jeanm3506
@jeanm3506 15 днів тому
😂😂😂😂
@wreespace
@wreespace 9 місяців тому
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.
@red.doritos
@red.doritos Рік тому
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_ 11 місяців тому
आपने बिलकुल सही कहा , सरलता और सहजता ही दिव्यता। 👏👏👏
@JLSXMK8
@JLSXMK8 11 місяців тому
“..Simplicity and spontaneity is divinity.”; Very true.
@neti_neti_
@neti_neti_ 11 місяців тому
@@JLSXMK8 👏👏👏
@laptopDoctorKZN
@laptopDoctorKZN 6 місяців тому
Hi firmware can it be decompiled
@C5pider
@C5pider Рік тому
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 Рік тому
ida is too far away from that "accurate"
@afifmalghani5202
@afifmalghani5202 Рік тому
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.
@LowLevelLearning
@LowLevelLearning Рік тому
Right on
@thiagomoreira6640
@thiagomoreira6640 11 місяців тому
@@LowLevelLearning 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 11 місяців тому
​@@thiagomoreira6640 he collapsed the getPass function in the source view. Lines 4-36 are hidden when we see it.
@berkay2410
@berkay2410 Рік тому
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 Рік тому
Intermediate c programming kitabı var internette bedava. Orda güzel bilgiler vardı.
@raka2844
@raka2844 11 місяців тому
@@alpayarsoy2437 can you tell me which one is it?
@Moon-D0G
@Moon-D0G 11 місяців тому
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.
@berkay2410
@berkay2410 11 місяців тому
@@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 😁
@berkay2410
@berkay2410 11 місяців тому
@@alpayarsoy2437 teşekkür ederim güzel yönlendirmeniz için 🙏🏼
@YasserCherfaoui
@YasserCherfaoui Рік тому
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 Рік тому
@@khatdubell thanks a lot man
@sobowalebayo9185
@sobowalebayo9185 10 місяців тому
Hello, can you help with guides to becoming a reverse engineer?
@zhad6045
@zhad6045 6 місяців тому
@@sobowalebayo9185 google
@taahaseois.8898
@taahaseois.8898 4 місяці тому
@@sobowalebayo9185 watch the video...
@jakenbaked87
@jakenbaked87 4 місяці тому
This was the BEST tutorial on IDA and disassembly I've heard on UKposts
@jordantheman25
@jordantheman25 Рік тому
I love Ghidra
@billigerfusel
@billigerfusel Рік тому
Idafree is really limited. Ghidra is the way to go.
@MisterK-YT
@MisterK-YT Рік тому
I love chicks
@BiteYt69
@BiteYt69 Рік тому
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
@offroaders123
@offroaders123 11 місяців тому
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!
@bendono
@bendono Рік тому
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.
@GAxelic
@GAxelic Рік тому
does that mean that some ASM scripts don't run on both Operating Systems?
@andrewdunbar828
@andrewdunbar828 Рік тому
@@GAxelic 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 Рік тому
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.
@thomasbard1506
@thomasbard1506 Рік тому
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 !
@LowLevelLearning
@LowLevelLearning Рік тому
I appreciate that!
@SanketLakhera
@SanketLakhera Рік тому
Same here
@agentstona
@agentstona Рік тому
Such a good job by saying no prerequisites required BUT NOT TELLING that you are freaking messing with CPU & MEMORY REGISTERS that can demage your HARDWARE if you execute the wrong LOW LEVEL CODES !!!!!!
@pialdas6835
@pialdas6835 11 місяців тому
@@agentstona Where was he messing with CPU registers? What memory address registers was he changing?
@agentstona
@agentstona 11 місяців тому
@@pialdas6835 you have alot to learn . Have you ever played the game of Janga and do you know what a stack and offsets are ? sigh
@ssrd.
@ssrd. Рік тому
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.
@harveysattic3918
@harveysattic3918 Рік тому
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.
@matthewboyer4212
@matthewboyer4212 11 місяців тому
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.
@LowLevelLearning
@LowLevelLearning 11 місяців тому
www.eff.org/files/2022/02/17/2022-02-16_apple_v_corellium_amicus_-_filed.pdf
@ChristopherGray00
@ChristopherGray00 10 місяців тому
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 10 місяців тому
@@LowLevelLearning 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.
@anon_y_mousse
@anon_y_mousse Рік тому
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 11 місяців тому
What do you mean by encoding?
@anon_y_mousse
@anon_y_mousse 11 місяців тому
@@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 7 місяців тому
Also best to save this part as a pre-production-build automation instead of unironically making a mess of your codebase
@sorek__
@sorek__ Рік тому
Such explanations of simple concepts are really why I subscribed to your channel! Wish you did followup videos on more advanced stuff with it.
@valshaped
@valshaped Рік тому
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 11 місяців тому
I came down here to say that this is absolutely correct.
@charlesbaldo
@charlesbaldo 5 місяців тому
Nice, takes me way back to my 6502 days, writing decompilers. Subscribed and Looking forward to seeing what else you have.
@astrovicis
@astrovicis 6 місяців тому
This was awesome. Also the first time I feel like I’ve genuinely followed a video like this. Thank you!!
@martijn3151
@martijn3151 11 місяців тому
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 ☺️
@Dante-420
@Dante-420 3 місяці тому
It's definitely click bait and a lie - just because you can reverse engineer something doesn't mean you have the legal ability to create and publish a derivative work.
@stdint.h
@stdint.h Рік тому
The RDI and RSI part is for the 64 bit ABI, for 32 bits, the arguments are pushed to the stack. If a function has 2 args in 32 bit code, [esp] inside the function will have the return address of the function, [esp + 4] will have the 1st arg (pushed in reverse order) and [esp + 8] will have the 2nd arg.
@johnpmchappell
@johnpmchappell 10 місяців тому
Depending on the calling convention, actually, but assuming stack for arguments, that's correct. Order of the argument push also varies, however. Calling convention gets to be lots of fun. That we have a single de facto calling convention for AMD64 is one of the nicest things about it. Edit for clarity: One calling convention per *platform* the ABI for Windows differs from the ABI for Linux, on AMD64. This is still much better than the situation on 32 bit x86 processors, where the ABI varied by platform and language, and sometimes developer whim.
@unknownlordd
@unknownlordd Рік тому
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
@saddish2816
@saddish2816 Рік тому
Reverse engineering is so fun. Please teach us more
@Grentanksmog
@Grentanksmog 9 місяців тому
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
@julianbittner4822
@julianbittner4822 3 місяці тому
i always wanted to dig into reverse engineering but never knew where to start. thank you so much!
@ThePowerRanger
@ThePowerRanger Рік тому
Great video, a similar video for ARM Assemble would be great, explaining the special registers and stuff.
@LowLevelLearning
@LowLevelLearning Рік тому
Great suggestion!
@m.projects
@m.projects Рік тому
I think that the free IDA version doesn't include ARM support, that would be a big issue
@alexandrsavochkin9442
@alexandrsavochkin9442 11 місяців тому
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 10 місяців тому
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 7 місяців тому
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 5 місяців тому
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.
@flyingbutter7612
@flyingbutter7612 24 дні тому
Ok this was very helpful since i didn‘t know where to begin on reverse engineering thank you!
@dougsaylor6442
@dougsaylor6442 11 місяців тому
This was really great to see. Thanks for the intro! 😀
@BackyardMonster
@BackyardMonster 9 місяців тому
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 9 місяців тому
Yes please!!
@VanBagdi
@VanBagdi 9 місяців тому
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.
@keatonhatch6213
@keatonhatch6213 Рік тому
Love the breaking down of every step. Keep it up!
@user-kw9cu
@user-kw9cu Рік тому
We need more stuff like this
@pr0xythegodofhax
@pr0xythegodofhax Рік тому
nice video man (as always), love your channel could you make a video about dynamically analysing/debugging any binary? (in preference a normal program or a malware, if i'm asking too much i am sorry)
@TemutoDonOmar
@TemutoDonOmar Рік тому
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 Рік тому
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.
@datag
@datag 9 місяців тому
Nice video, thanks. I missed the short info about a second solution patching the binary to bypass the check simply by changing the 'jz' to a 'jnz'.
@abdulrahmanelawady4501
@abdulrahmanelawady4501 11 місяців тому
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~
@hdufjwif6fjjgkf943
@hdufjwif6fjjgkf943 Рік тому
Nice timing! Just installed Ghidra to learn rev eng and binary exploitation and your video came out
@LiamStojanovic
@LiamStojanovic Рік тому
Dude this video is awesome. You should do more of these!
@Bchicken2
@Bchicken2 Рік тому
Because of you I love low-level stuff, and studying to get eCRE certified.
@SloppyPuppy
@SloppyPuppy Рік тому
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
@allissonrey
@allissonrey Рік тому
recently I learned how to hook functions in C and C# , it's so cool. Also, great video !
@olfin88
@olfin88 10 місяців тому
Incredible channel, thank you for existing
@ZeonLP
@ZeonLP Рік тому
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 Рік тому
getting into it is easy, getting good is hard
@S.O.N.E
@S.O.N.E Рік тому
Guy really expected the 13 min video to be 3 hours long
@simulator8
@simulator8 10 місяців тому
@@S.O.N.E Guy really thinks the 3 Hours video to be enuf for reverse engg
@ocaly
@ocaly 9 місяців тому
@@simulator8 guy really wouldn't want a 3 hour long video about RE
@ludologian
@ludologian 11 місяців тому
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 10 місяців тому
I legit thought he'd show us a decompiler when he said you don't need programming skills or anything.
@TheWoWGod94
@TheWoWGod94 5 місяців тому
"You don't need any programming experience" yeah right...
@ItsMrEzzy
@ItsMrEzzy Рік тому
For real, this was amazing! I might actually start trying it 🔥🔥
@kkyang7515
@kkyang7515 7 місяців тому
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!!
@luxdown7965
@luxdown7965 Рік тому
Great video man ! We want more on reverse engineering, so intresting
@mantisgaming
@mantisgaming 11 місяців тому
I'd love to have seen what the getpass function looked like in c at the end of the video
@FalcoGer
@FalcoGer Рік тому
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.
@samjohn1098
@samjohn1098 11 місяців тому
One of the video to get started for reverse engineering
@SpinStar1956
@SpinStar1956 9 місяців тому
Great, hope you do more! Thanks!
@magickpalms4025
@magickpalms4025 10 місяців тому
wow really helpful info! i can only imagine what a nightmare it is do to this on malware that has been purposefully obfuscated
@k1gen
@k1gen Рік тому
wow, been waiting for reverse engineering video, thanks!
@willie9899
@willie9899 Рік тому
Coming at this with a year of CE, learned a bit about the buffer. Any chance you could do a crash course about the stack? I know how to manipulate it, but I don't understand what I'm manipulating
@wellingtoncarvalho1621
@wellingtoncarvalho1621 Рік тому
Awesome vídeo with a lot of great content! Pls keep this series on
@a.j.bussman8170
@a.j.bussman8170 11 місяців тому
Very cool, i will hav to try this for work when trying to understand some dll stuff.
@noire.5573
@noire.5573 7 місяців тому
This is just like CSAPP: Bomb Lab! I really recommend it as a good way to practice these types of skills
@nixielee
@nixielee Рік тому
You should do this for real malware, YT needs more of this stuff
@SS-in2kr
@SS-in2kr Рік тому
I enjoyed it. Thanks for this video. Please continue making such videos.
@user-dt8cr3is8b
@user-dt8cr3is8b Місяць тому
Really engaging content and shows actual examples, keep up the good work ^^
@cpu_1292
@cpu_1292 7 місяців тому
EULA: am I a joke to you? Yes, yes it is
@whtiequillBj
@whtiequillBj Рік тому
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
@RICK_MCN
@RICK_MCN Місяць тому
I like how you brake this down for people that don't understand this or dummy it down very nice brother 👍👍
@repairstudio4940
@repairstudio4940 9 місяців тому
This is awesome! Thank you! 🎉
@jesusdueas7145
@jesusdueas7145 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.
@Thunder-dp7du
@Thunder-dp7du 11 місяців тому
thanks for making it easy to understand pls keep post that kind of video
@meestyouyouestme3753
@meestyouyouestme3753 3 місяці тому
“no coding experience required.” *requires past programming participation *
@dameanvil
@dameanvil 2 місяці тому
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.
@eljuano28
@eljuano28 Рік тому
You're a cyber treasure, dude. Don't ever forget that.
@JustClem001
@JustClem001 10 місяців тому
Nice channel name and I reverse engineer hand tools and hardware a lot just to get a idea on the problems they solve. Compilers are the cyberspace equivalent to the blacksmith using a forge or the foundry that eventually makes it to your home via four wheels. Decompilers are the defininive tool for sloving computer problems, and as such are by definition open source, and if not open still relevant to software error.
@paulezekiel-hart733
@paulezekiel-hart733 7 місяців тому
Remember folks, you don't need any programming experience 😅
@complexity5545
@complexity5545 Рік тому
Memories; this reminds me of the times I would spend with Olly (before I really knew solaris and linux). It is good to know the same principals still work. I just watch this for entertainment (which solidifies me as a somewhat nerd).
@sp3ct3r71
@sp3ct3r71 Рік тому
woooow what a great video... excpectig this video from so long time.. kep going this series
@FurqanHun
@FurqanHun Рік тому
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 👾
@simonegalli5453
@simonegalli5453 11 місяців тому
Man I want an assembly course so much !
@AnshulRanjan14
@AnshulRanjan14 5 місяців тому
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.
@xxslaysminecraftxx1094
@xxslaysminecraftxx1094 Рік тому
literally the video i‘ve been waiting for from your channel. thank you so much
@jonathansung8197
@jonathansung8197 15 днів тому
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.
@jonathanmurray2986
@jonathanmurray2986 8 місяців тому
“No previous programming experience needed…anyway, here’s assembly”
@sunofabeach9424
@sunofabeach9424 9 місяців тому
I use Cutter for reverse engineering, highly recommend
@DanielRamBeats
@DanielRamBeats 11 місяців тому
SO happy I found your channel!
@WeDevin
@WeDevin 16 годин тому
I was able to understand, and follow along your video. 🧠
@benjaminrich9396
@benjaminrich9396 Рік тому
I love videos like this. Keep 'em coming. :)
@LowLevelLearning
@LowLevelLearning Рік тому
Thanks! Will do!
@NotGarbageLoops
@NotGarbageLoops 16 днів тому
Wish I had this 10 years ago. Did so much learning the wrong way around.
@dolandak6300
@dolandak6300 Рік тому
Such good content keep it up buddy
@JC14789
@JC14789 7 місяців тому
back in XP era (32 bit), IDA Pro is able to disassemble these simple unencrypted binary executable files and generate corresponding c++ code
@ThyTrueNightmare
@ThyTrueNightmare 10 місяців тому
Very informative, thank you
@chrissinclair4442
@chrissinclair4442 8 місяців тому
Ahhhh, Ms. Lovelace. I always wanted a Curta, you know a Babbage portable computer.
@pixelcatcher123
@pixelcatcher123 2 місяці тому
This is so cool, IDA is such a Powerfull Tool
@Rakesh37187
@Rakesh37187 Рік тому
I am confused. This obviously requires skills in programming and the underlying working of things. As someone studying CS I get most of it. How is it then that I see so many people on internet advertising Cyber Security with no programming skills required?
@agucci
@agucci Рік тому
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.