jeFF0Falltrades
jeFF0Falltrades
  • Видео 15
  • Просмотров 405 828
Analyzing Real Malware in our DIY Sandbox | master0Fnone Episode 2.2: Sandbox in a Box
(Part 2 of 2)
If you've ever wanted to analyze malware on your own without spending a fortune, this is your time.
In this free master0Fnone class, you will learn to:
1. Build a simple malware analysis lab for FREE, using 2 virtual machines (Remnux and Windows 10) and several free analysis and monitoring tools
2. Snapshot your lab and make it exportable so you can bring it anywhere
3. Examine some real malware samples in your newly-built sandbox, test out the tools we installed, and discover how to pull indicators of compromise and artifacts for detections and determining what the malware is trying to accomplish
4. Challenge you to take what you've learned and use it to achieve an entry on the "...
Просмотров: 787

Видео

DIY Malware Analysis Lab for Free (with CrackMe Challenge!) | master0Fnone Ep. 2.1: Sandbox in a Box
Просмотров 1,6 тыс.2 месяца назад
(Part 1 of 2) If you've ever wanted to analyze malware on your own without spending a fortune, this is your time. In this free master0Fnone class, you will learn to: 1. Build a simple malware analysis lab for FREE, using 2 virtual machines (Remnux and Windows 10) and several free analysis and monitoring tools 2. Snapshot your lab and make it exportable so you can bring it anywhere 3. Examine so...
Coding The Rat King: A Multi-Family Malware Configuration Parser
Просмотров 2,6 тыс.4 месяца назад
In this tutorial/code review, I'll walk you through my journey over the last couple of months to take our original ASyncRAT config parser/extractor and modify it to work with several related, cloned, and derivative Remote Access Trojan (RAT) families of malware. Even though this wasn't a scheduled video and it was done pretty much on a whim, I hope it will be insightful in the learning journey ...
jeFF0Falltrades in 2024
Просмотров 1,5 тыс.7 месяцев назад
I wanted to provide an update on the channel, as well as review your feedback, and talk about goings-on in my personal and professional life, and how all of this will influence my approach to the channel this upcoming year. TL;DR: Lots going on, but the fun will keep going, with some new ideas and topics on the horizon. Also, you all are full of good ideas, good feedback, and good vibes. Truly ...
[Game Mod Code Deep Dive] Modding RollerCoaster Tycoon into a Peele Horror Film
Просмотров 1,5 тыс.9 месяцев назад
This is Part 2/2 of the tutorial: Part 1 covers the reversing of RCT's graphics/sound systems and the building of the horror mod, while Part 2 deep dives into the Python and shellcode used to automate this mod (linked in the repo below). This tutorial showcases how to write a RollerCoaster Tycoon mod in Python that implements the following "horrific" changes to the gameplay: Any roller coaster ...
Modding RollerCoaster Tycoon into a Peele Horror Film (Game Modding/Reverse Engineering Tutorial)
Просмотров 6 тыс.9 месяцев назад
This tutorial showcases how to write a RollerCoaster Tycoon mod in Python that implements the following "horrific" changes to the gameplay: Any roller coaster crash/explosion will trigger the following: 1. A spinning skull animation at the crash site (animation can be changed) 2. A horror soundtrack which plays in the background (track can be changed) 3. Guests in the park will turn towards the...
Reverse Engineering master0Fnone Class | Episode 1.3: x86 Assembly Demystified
Просмотров 6 тыс.Год назад
Episode 1, Part 3 Trying to break into RE, but feeling overwhelmed? Looking for a better foundational understanding of what you're already practicing? Somewhere in between? This "master0Fnone Class" is for you - no matter where you assess yourself to be, you _can_ learn RE, and it doesn't have to be a slog. The jeFF0Falltrades master0Fnone Class series is a collection of free online courses mad...
Reverse Engineering master0Fnone Class | Episode 1.2: x86 Assembly Demystified
Просмотров 4,5 тыс.Год назад
Episode 1, Part 2 Trying to break into RE, but feeling overwhelmed? Looking for a better foundational understanding of what you're already practicing? Somewhere in between? This "master0Fnone Class" is for you - no matter where you assess yourself to be, you _can_ learn RE, and it doesn't have to be a slog. The jeFF0Falltrades master0Fnone Class series is a collection of free online courses mad...
Reverse Engineering master0Fnone Class | Episode 1.1: x86 Assembly Demystified
Просмотров 19 тыс.Год назад
Trying to break into RE, but feeling overwhelmed? Looking for a better foundational understanding of what you're already practicing? Somewhere in between? This "master0Fnone Class" is for you - no matter where you assess yourself to be, you *can* learn RE, and it doesn't have to be a slog. The jeFF0Falltrades master0Fnone Class series is a collection of free online courses made to make learning...
Reverse Engineering and Weaponizing XP Solitaire (Mini-Course)
Просмотров 59 тыс.Год назад
As a beginner, reverse engineering can be a daunting and frustrating endeavor - But it's a lot more fun if you can learn via hacking and modding games to create your own cheats and maybe even inject a few (harmless) pranks into the code! Whether you watch it all the way through, or just in bits and pieces, join me in this master (of none) class as we try to recapture the fun and amazement of be...
Baby’s First Malware Config Parser: Mini-Course w/ dnSpy+CyberChef+Python
Просмотров 8 тыс.2 года назад
NOTE: See the updated Rat King Parser - the spiritual successor to this parser - here: ruclips.net/video/yoz44QKe_2o/видео.html Whether you’re just getting started in malware analysis or a seasoned pro looking to learn some new techniques, join me in this “mini-course” as we build a malware configuration parser for ASyncRAT in 3 ways - including writing an automated parser completely from scrat...
Reverse Engineering/Game Patching Tutorial: Full Res RollerCoaster Tycoon with Ghidra+x64dbg+Python
Просмотров 292 тыс.3 года назад
GitHub Repo: github.com/jeFF0Falltrades/Game-Patches/tree/master/rct_full_res Time Markers: 00:00:00 - Introduction 00:01:57 - Target audience and caveats note 00:03:10 - Start of tutorial 00:07:08 - Loading the file into Ghidra/First steps of RE workflow 00:14:27 - Static analysis of window creation functions (CreateWindowExA) 00:25:42 - Quick detour to learn about Window Style values 00:37:07...

Комментарии

  • @ProxyWasTaken
    @ProxyWasTaken 2 дня назад

    I am not sure if I missed it somewhere but the steam RCT.EXE has completely different structure. Doesn't even use same functions to create a window. In fact I couldn't find creating a window at all.

  • @Accanfo
    @Accanfo 4 дня назад

    Interesting

  • @doelhasan7310
    @doelhasan7310 5 дней назад

    What version of ghidra are you using?

    • @jeFF0Falltrades
      @jeFF0Falltrades 5 дней назад

      @@doelhasan7310 In this video, we were using 10.2.3

  • @user-rn5su2ti9i
    @user-rn5su2ti9i 6 дней назад

    It's too difficult for me to study all my life and not even know it.

    • @jeFF0Falltrades
      @jeFF0Falltrades 6 дней назад

      @@user-rn5su2ti9iThe initial learning curve is tough, but I promise it’s not insurmountable :-) It just takes practice and willingness to keep trying and seeking answers, even if you get stuck.

  • @x1101126
    @x1101126 12 дней назад

    You need learn some basic win32 programming. It will help you a lot when you analyse these old games.

    • @jeFF0Falltrades
      @jeFF0Falltrades 12 дней назад

      @@x1101126 Yeah if I had the time to (among everything else I’m trying to learn enough to be an amateur at 😆) I certainly would: It was really interesting going through the Win32 docs for this and my other RCT video and looking back on how much has changed (or not changed, more often and surprisingly). Thanks for watching!

  • @LinuxIsBetter43
    @LinuxIsBetter43 14 дней назад

    Yeah, the rat parser turned out to be a good project. Although I have to say - I don't like the way you write code. I'm not a professional developer, but something like Rust modules makes a lot more sense to me than writing everything in one place with 15 helper functions. Just makes everything that much more difficult to follow. As to the topic of the video, I think the issue of cyber security professionals not being able to code has been addressed several times, for example by talented professionals like @lauriewired and probably more. Being a script kiddy is just about as far as cyber security can be, because you have to understand the technology much better than the developer that has their client in mind (as opposed to security), and thus comes the expertise in the technical sense.

    • @jeFF0Falltrades
      @jeFF0Falltrades 13 дней назад

      @@LinuxIsBetter43 If you haven’t checked out the repo as it is today, you may find it better organized than this original video :-) But yeah, your comments are totally fair: I was much more focused on function than fashion for this one, particularly as a side project. That said, I appreciate the feedback!

  • @JamesRav516
    @JamesRav516 14 дней назад

    Awesome video! question though.. How do I increase the storage of my shared folders? its saying something along the lines of 21 gb out of 296 gb available but when I go into the folder not much is in there..

    • @jeFF0Falltrades
      @jeFF0Falltrades 14 дней назад

      @@JamesRav516 Thanks so much and so glad you’re enjoying! And the only limitations on your Shared Folder size should be 1) how much storage you have allocated for your VM in total and 2) how much storage you have on your host machine. I’m wondering if that’s not telling you how much storage is used on your VM in total out of how much is available? Otherwise, it doesn’t make much sense for your folders to be limited. I’d check how much storage you have allocated vs how much is used for the VM as a whole, and see if the numbers add up to what you see there.

  • @MeanMisterMustard
    @MeanMisterMustard 14 дней назад

    Great content! Subscribed

    • @jeFF0Falltrades
      @jeFF0Falltrades 14 дней назад

      @@MeanMisterMustard Thank you so much and so glad you think so! Hope to have some new stuff soon 😊

  • @EuZeNinguem
    @EuZeNinguem 20 дней назад

    Greetings! First of all, I would like to thank you for all the fantastic videos and documentation you have been putting out. They have been precious for my studies. I just wanted to clarify something I noticed in your cheat sheet and around minute 50:21 of this video. In the rep instructions description it says that rep increments EDI and ESI but isnt that the case only when rep is used combined with movs/stos/scas instructions? The rep instruction used by itself only decrements ECX, or am I wrong? At least that's what I interpreted from the Practical Reverse Engineering book (which I ended up reading and studying because you recommended it :) ) Once again, I appreciate all of the stuff you have been doing. Amazing contribution!

    • @jeFF0Falltrades
      @jeFF0Falltrades 20 дней назад

      Thank you so much for the kind words, and for the thoughtful feedback! You are correct, and I've updated the diagram and the pinned comment to clarify this - I didn't make a distinction in the video because you almost always see rep as a prefix to string instructions that do manipulate EDI/ESI, but you are right that it is more proper to say that rep on its own only manipulates ECX - and I'd rather be right than "technically right" when it comes to a beginner's tutorial 🙂. Thank you so much for taking the time to watch and also for the good catch here! P.S. Hope you're enjoying Practical Malware Analysis!

    • @EuZeNinguem
      @EuZeNinguem 20 дней назад

      ​@@jeFF0Falltrades Thanks a lot for the quick reply! Yes, you are right, it is implicit that that those instructions work together to execute those operations but for a total beginner, it could be very ambiguous and confusing. I really appreciate you taking to time to consider my comment and updating the diagram. P.S. I havent started Practical Malware Analysis yet, I am currently reading Practical Reverse Engineering alongside your material and it has been a fascinating journey. I am really falling in love with RE! I truly hope you keep releasing more stuff, its really a precious help to consolidate all of these technical concepts.

    • @jeFF0Falltrades
      @jeFF0Falltrades 20 дней назад

      @@EuZeNinguem Ah sorry I misread your comment and saw PMA instead of PRE - also a great book haha! And again thanks so much for your kind words; Comments like these are very motivating to keep creating 😄 Happy learning!

  • @moshedo7975
    @moshedo7975 28 дней назад

    sorry coming back here where can I find the example_https_call program to test my https connections? NEVER MIND I succeeded

    • @jeFF0Falltrades
      @jeFF0Falltrades 28 дней назад

      @@moshedo7975 If you still need the example let me know but any HTTPS traffic should do! Glad to hear you’re progressing!!!

  • @moshedo7975
    @moshedo7975 28 дней назад

    is there a chance to see the actual network in Burp? on the linux machine?

    • @jeFF0Falltrades
      @jeFF0Falltrades 28 дней назад

      @@moshedo7975 Do you mean is it possible to see network traffic using just Burp?

    • @moshedo7975
      @moshedo7975 28 дней назад

      @@jeFF0Falltrades im asking in case that I followed your configuration in this vid is there a chance to see actual decrypted HTTPS traffic in burp?

    • @jeFF0Falltrades
      @jeFF0Falltrades 28 дней назад

      @@moshedo7975 If you follow the configuration in the video, then you will be able to see HTTPS traffic in Burp, yes! You would see the same traffic - and more than HTTPS - logged in INetSim as that’s our primary network logging on the Remnux box. You could intercept traffic in Burp as well, but you would have to configure multiple proxies and also keep INetSim or some other service running to forward the requests to. EDIT: The traffic would be in Burp under Proxy->HTTP History by the way

    • @moshedo7975
      @moshedo7975 28 дней назад

      @@jeFF0Falltrades So I messed up somehow because I don't see that

    • @jeFF0Falltrades
      @jeFF0Falltrades 28 дней назад

      @@moshedo7975 Okay, we can troubleshoot: Are you able to do a simple ping from your Windows VM to your Remnux VM? If so, can you pull a web page on the Windows VM while INetSim runs on your Remnux VM?

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

    Respect. Neat to see what can be done in reverse engineering. Is this open source?

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

      @@matts7327 Yes! You can find it on my GitHub under “RAT King Parser” - linked on my channel page or just search that name :-) Thanks so much for your kind words!

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

    Hello, Jeff! I got some issues on REMnux installation process, still fighting with same problem, "issues" board on github doesn't make sense for me, and i really want to step through the process with your video, so idk what to do with that, right now i'm installing Flare-VM is it ok to contribute in crackme challenge with my own Flare-VM setup? thank you for your time!

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

      @@ghaBBster Absolutely! No need to use this particular sandbox for the challenge! If you do need help troubleshooting with anything Remnux related, feel free to leave a comment or Issue to talk further about it :-)

    • @ghaBBster
      @ghaBBster 28 дней назад

      @@jeFF0Falltrades thanks for reply, Finally i figured out how to install and prepare REMnux, Right now i got some challenge with establishing the connection between REMnux network and victim's Windows machine, I configured the REMnux (burpsuite and inetsim) and Windows network settings, but don't get a connection on 10.10.10.3:8080 on Windows machine btw i use VMWare pro 17 on Windows 10 and maybe that virtualization tool is what makes the deal between yours and mine implementation Whatever comes to mind to make clear on this situation - i would be glad to see your reply thanks for your time!

    • @ghaBBster
      @ghaBBster 28 дней назад

      @@jeFF0Falltrades finally i figured out REMnux installation and further configuration, thanks for detailed sections of setting up the REMnux machine Right now I have challenge with establishing the connection between REMnux (burpsuite) and Windows victims's machine, don't get any reply on 10.10.10.3:8080 i rewatched and rechecked all sections in tutorial (before this section about connection) but have the same issue Btw i use VMware pro 17 on Windows 10 machine, maybe this difference makes the deal, but i doubt it, So, if you have any ideas - please let me know And congratulations on being a dad and 11k subs, i really enjoy watching your content!

    • @jeFF0Falltrades
      @jeFF0Falltrades 28 дней назад

      @@ghaBBster Thank you so much for the kind words, and congrats on the progress!!! Regarding the connectivity: Are you able to do a simple ping from the windows to the remnux machine? Or pull a regular page by opening the browser and going to any site (while inetsim is running)? If so, we can move on to Burp troubleshooting; if not it may be a broader networking issue between your VMs. Let me know and we can work through it.

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

    You could make a simple gui for the python program and then somehow append the compiled exe to the game's executable and modify the main function so it starts the "patch" program first and allows the user to choose full screen or window mode on each launch, right? Assuming that the python exe is fully statically linked and doesn't depend on some dynamic libs which aren't loaded in the context of the game.

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

      @@_________________404 Would likely be easier to make a GUI for the Python script, package it into a static executable, and then just make the user point to their instance of RCT to do the patching appropriately; You might be able to package them both together in one EXE, but it would get messy with addressing and modifying the original executable.

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

    15:23 I think I would return -1, just as a "something is wrong" convention.

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

      @@LinuxIsBetter43 Yeah that’s fair enough! In this case, since I wasn’t running from main() (and I also wasn’t too concerned with the result) I just chose 0, but best practice would probably be to raise an exception and /or return a clearly defined value to express something went wrong.

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

      @@jeFF0Falltrades Good point. Raising exception and then handling it. Also, if we're talking, I thought it would be good to add a little explanation on bit shifting and multiplication by power of 2. You don't mention it, but I think this could be a good little addition.

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

    Hi Good job on the challenge man! I finished the last questions but the first ones are still empty. Crackme only uses kernel32.dll and it doesn't import any dll out of system32 while running, any hints ?

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

      @@ihacksi Hint: Don’t just look for static imports - look for things loaded dynamically. One of the tools in this video might provide a shortcut 😉 Great work! Get your name on that wall! Come on back if you get stuck, but I think you’ll get it.

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

      @@jeFF0Falltrades Question 2-3 still remains, went and tried all the dlls imported in runtime but no luck. Is the crackme doing something different in your environment? I tried with network/no network and procmon output only reveals two file activities you asked in the later questions.

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

      @@ihacksi I will say this: The crackme executable does NOT adhere to the typical DLL loading you see in C/C++ binaries...so if you are looking at typical calls to APIs that you're used to seeing when looking for loaded DLLs, you probably won't turn up much in this particular case. But there is a DLL there. Perhaps something else could help in finding it.

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

      @@jeFF0Falltrades Thanks, I found the dll using the tool mentioned on video. So procmon only lists the known dlls called from the disk/system then? In memory executions are stealthy.

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

      @@ihacksi I believe it’s because procmon monitors for the same few calls to known system DLLs (LoadLibrary, GetProcAddress, etc.) to monitor for DLL activity, whereas this binary uses a different implementation to load the DLL into memory, so it flies under the radar of many tools. Great work! I see your name on the wall now!!!

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

    Such a wholesome masterclass! I like your videos a lot, thank you so much!

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

      @@danielabay01 So glad you are enjoying them! Thanks so much for the kind words and for being here!

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

    this is gold

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

      @@M3STERL3G3ND So glad you think so ❤️ Really appreciate you watching, and the kind words

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

    You did a great job explaining all of this. TYVM. 👏

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

      @@RichardBejtlich Thank you so much for the kind words and so glad you enjoyed!

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

      @@RichardBejtlich HOLD ON!

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

      @@RichardBejtlich I just realized: Are you Corelight’s Richard Bejtlich?! EDIT: I’m now 99% certain you are! I just wanted to let you know that I appreciate your work, especially as believe it or not, I am a successor to your work on the CIRT at GE Aero 😂 I was going crazy wondering why your name sounded so familiar and that’s why!

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

    02:23:07 I think both the commentator and you meant to say 127 "bits" instead of bytes. Yep, still slowly working my way through =)

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

      @@LinuxIsBetter43 For the #US stream length? I believe it’s bytes - a string of <128 bytes results in 1 length byte, otherwise it gets 2. Let me know if you were referring to something else - thanks for watching and congrats on chugging right along!

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

      @@jeFF0Falltrades You are correct. I just confused myself. Strings are measured in bytes, but in his comment there was binary in parenthesis, so it got in my head =)

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

      @@jeFF0Falltrades I do have a question though. Later on you go to say that if 80 flag is set, then the actual length will be the following byte. What happens if the string is even longer than 255 bytes? Do we get another 80 flag and another length bit?

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

      @@LinuxIsBetter43 No worries - I wouldn’t have been surprised in the least if I had misspoken because…well just keep watching my videos and you’ll see that it’s not uncommon 😂

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

      @@jeFF0Falltrades No worries. BTW, RE my question above, AI says that it would be preceded by the 80 flag, and then the next 4 bytes are the length of the string (I asked about 300 byte of string for example), so it said there would be something like 80 2C 01 00 00. Idk maybe incorrect, here we see only 1 byte after 80, but maybe it's not writing them for optimisation purposes.

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

    Hello! Welcome to the pinned comment for this video, and thanks for watching! Updates: 00:24:00: I followed-up on this thought and RAT King Parser now supports parsing XWorm configs! Check out my GitHub for more info.

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

    Dude, thank you so much. I was having trouble finding good resources to learn about SRE as a normie. Channels like yours are so helpful for normies like me. It seems close to impossible to be able to know where to begin when it comes to SRE.

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

      @@dynaspinner64 So glad you’ve enjoyed it! I hope it’s eased your entry into the domain and I hope you continue to learn! Thanks for watching 🙏

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

    1:15:04 I thought that was pretty unclear as well: memoryStream.Length is 64 and that -16 is 48, but since bytes 0 through 31 are the hash, and 32 through 47 are IV, the data starts at byte 48. They are adding one, so that becomes 49. So they create an array of length 49 to store 16 bytes of data? Seems like a mistake to me. If you look in the debugger, array4 is populated only 0-9. Also not clear why array5 is of size 13. EDIT: It looks like for different InitializeSettings value these arrays are populated to different lengths, so 49 seems to be the biggest one that can populate all of them, so they hardcoded that. Not sure about the details though.

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

      Yeah I've racked my brain with this every time I see an AsyncRAT sample. I've looked at the source code itself, debugged, and run it by others, and still don't have a great explanation. Even the LLMs I've put the code through always say: "This line seems like a mistake" X-D You're right in that memoryStream will vary with the input, so some values are 64 bytes, others 128, and still others 736 bytes, for example. So array3 still gets allocated to different sizes depending on the length of input - not any hardcoded value - and that size is always a bit more than needed for the actual decrypted data. I'm of the mind that either: 1) They intentionally did this to leave a buffer at the end of array3 (though it doesn't make sense because at most array3.Length bytes will be read every time) 2) It's a mistake 3) I'm missing something crucial here haha

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

      @@jeFF0Falltrades Sounds good. To me it looks like they were a bit lazy, so they took a relatively big buffer to prevent memory leaking=). I want to thank you for the great content as well!

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

      @@LinuxIsBetter43 Yep, you are probably onto something 😂 And thanks so much for your kind words and engagement! So glad you enjoyed!

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

    Great video! Just subscribed. Definitely some gems in here I had not seen! Only things I would suggest are Hyper-V as your hypervisor or VMWare if you like, now that it's free for personal use. VirtualBox stability issues abound, especially when restoring snapshots and importing VMs. Also recommend a tracer for intermediate/advanced users, like Tiny Tracer (also by hasherezade) or DrMemory. Having the API calls are super helpful

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

    Great Video on Reverse Engineering

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

    Appreciated! keeping the legacy!

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

      @@dewmi4403 So glad you enjoyed! RCT never dies

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

      Tq jeff❣️

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

    just did the crackme, and it looks like the last question in the google forms is broken? I definitely did math right but google forms won't accept the any answer

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

      You are absolutely correct - thanks for reporting this! It was a validation typo. Good news is 1) It's fixed now and 2) This must mean you are among the first to get the crackme completed!

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

      There it is! Congratulations and well done!!!

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

      @@jeFF0Falltrades thank you! It was really fun solving the challenges!

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

      @@lukefidalgo8154 Glad to hear it! I'm always nervous leading up to a release b/c I have a lot of fun making them and testing them out, and there's always the "Ah damn, is this going to be something that's just fun for *me*?" X-D So glad you enjoyed!

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

    Good job, it would be amazing a video with more advanced topics explained clearly (like manual unpacking, handling anti analysis techniques, obfuscation...) 👏🏻

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

      @@wittingsun7856 Great suggestion! I wanted to start with the basics, but I think a follow-up video with more advanced techniques is called for, too. I’ll add that to the list :-)

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

      @@jeFF0Falltrades I'm happy to hear this, it definitely can't miss 😎

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

    wont running e.g. procmon or ida be detected by a lot of malware?

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

      @@xiaonguyen6693 Great question! Some families might have “stoplists” of processes they might monitor for and stop working if they detect them running written into the malware program, as an anti-sandbox measure. But it’s very easy to bypass this as the analyst: In fact, there’s a blog post on Medium by Mohammed Dief that’s a good example of this where he just changes a few attributes of the procmon executable to bypass a video game (of all things) program that checks for procmon as an anti-debug measure. So what I would say is: If it looks like a piece of malware is not running fully or you’re not getting results you expect, either throw it in a debugger like we do with Royal ransomware here to find out more OR, more simply, just experiment with your monitoring tools to see if closing one of them changes the behavior of the malware. That’s the benefit of using a hands-on lab, vs. a fully automated one. Thanks and good thinking!

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

    The most amazing re channel on the whole youtube, still watching the series but just wanted to point that out :)

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

      @@Jarvx Stahppppp 🥰 Seriously thanks for watching and being here 🙏

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

    Once again, awesome job, thanks.

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

      @@micha7863 Thanks so much and thanks for being here 🙏

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

    I really liked the first couple of episodes about the basics in this series perhaps could you make a video where your reverse engineer a game like gta vice city or any old game but tailored for beginers? i know you have the roller coster video but I think a more beginner friendly one would be better + the game is really old Thanks for taking the time to read the comment

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

      Yeah I think we’ll be due for another game-based video soon as many people (myself included) have so much fun with those, and they are great for learning the basics while keeping things fun. Thanks for the suggestion!

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

    Thank you I love your content

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

      @@CrusaderMen Thank *you*! I hope you enjoy this one too

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

    The king posted ! Stop what ur doing and open your best disassembler ;) Jokes aside i like how you introduction more and more useful tools each video

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

      @@0ri0nexe Man you made my day hahaha. I’m in the middle of finishing up editing Part 2 (which I can say DEFINITIVELY will be out tomorrow AM, Eastern Time), and I really needed this motivation. Thanks for being a great hype man and I am glad you find the tools useful! I’m so happy to finally share my lab setup as it’s been good to me all these years.

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

      ​@@jeFF0Falltrades Two videos in a row, what a time to be alive.

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

      @@0ri0nexe 🤣

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

    Just as I bought Practical Malware Analysis (the alien book), this video comes out! Some really good timing! :P

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

      YES!!! I'm so happy for you because that book is a treat. And you'll find my set up is very akin to the one in the book, so I hope this complements it well :-). Also, if you're interested, No Starch Press just this month came out with another book called "Evasive Malware" that I call out in this video. I haven't read through all of it yet, but what I have read has been really good! Thanks for watching and I hope you enjoy both this and PMA!

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

      The alien book is top tier :)

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

    Great job! Appreciate it veeery much. Also congrats on becoming a dad. BTW: I have tested VBox 7 Unattended installation for Win10 and I always had problems with the VM - freezes/slow running (problem is confirmed by other users having the same issue).

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

      Thanks so much on both accounts, and thanks for being here!

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

      @@micha7863 thanks for attesting to the unattended installation stuff as well - as you’ll see (if you haven’t already) it DOES cause issues for me as well 🥴

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

      @@jeFF0Falltradesoh ok, i was commenting while watching, thanks again!

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

      I figured haha. Didn't mean to spoil it for you, but yeah, had quite a few "live" troubleshooting instances with VirtualBox/Windows

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

    To my loyal and wonderful subs: I apologize again for the delay on this one - our 10,000 sub celebration is now an 11,000 sub celebration, which is awesome, but I am sorry it took this long to push this out and I hope the wait was worth it ❤️ Check this pinned comment for corrections and updates and thanks for watching! EDIT: Thanks to @BrakeSec for the suggestion, I added a simple helper script so you don't have to worry about commenting out the netplan configuration yourself; It's added to the repo!

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

    1:37:39 well that's easy: all you really had to do was so set up a WRITE breakpoint on the SCORE (its address you did figure out and that was a hard part), so the timer would decrease the SCORE and hit your breakpoint on doing so.

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

    I wonder if you have Svenska classes, Jeff. The way you explain I might even get it 😊

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

      @@b213videoz Nej det vill du inte 😉😂 There are much better Swedish teachers, I’ll just stick to my machine languages thanks 😆 Thanks for watching as always!

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

    25:08 I do not understand why this line is even there, the very same instruction already executed: EAX has retained its value as LEA did not affect EAX. You just so very casually skipped it and didn't explain at all. 25:45 once again so casually & happily skipped 1) what is that 0x34 for ? 2) how does it relate to +3 and that stack label 3) au_stack_4f ?!! - nothing, no explanation whatsoever Come on, this video is for complete beginners, right ? I was able to tug along but only because I know this stuff already (kind of) - if I didn't your happy casual skippings & omissions would have got me completely confused. Yes, you do explain most things well - but hey, really important stuff you just skip.

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

      Thanks again for this (and I mean sincerely - I appreciate candid feedback and I get scared when I only hear praise or general feedback) and your other comments. I'll also add these clarifications to the pinned comment in hopes that will help others who may have been confused by these segments: 25:08: Apologies for not calling it out; You're right in that it's important for beginners to understand the "why", and I think I was focused on switching to demo'ing it in the debugger and glossed over the extra instruction: This kind of "duplicative instruction" can happen due to compiler optimizations - Different compilers can hold themselves to different "guarantees" and rules around how they compile code, and I think in this instance, we humans can see that the extra instruction is not needed, but the compiler decided for some reason to include it. Why? It's very difficult to say without knowing a LOT about how the compiler is written to work. It could be accounting for optimizations in speed, or scheduling of instructions, or because it uses some standard pattern of instructions for this type of loop, and applies those rules regardless. 25:45: Apologies again as I was not as focused on the decompilation view vs the disassembly view in this segment. To answer your questions: The 0x34 is added to ESP because that happens to be where this array was placed on the stack by the compiler: 0x34 == 52 in decimal, which divided by 4 bytes is 13, so you can think of it as there are 13 other 4-byte segments between ESP and the array, which are other values on the stack. But put more plainly, the array starts at 0x34 past ESP, so we must add 0x34 PLUS our index*4 bytes (because every int is 4 bytes) to access each element of the array. Now (2) and (3) of your question are interesting: The additional "+ 3" of the decompilation you see there does not appear in other decompilers I used, and it's likely just a case of the decompiler "hallucinating" - meaning that it tried to decompile this segment, but realized the way it decompiled the address to the array was out of alignment, and so it compensated by just tacking on a "+ 3" to make the math work. Sounds silly, but this is why decompilers are not perfect. To see this practically, you can check the values in the debugger: The decompiler says that auStack_4f should be at EBP-0x4f But in the debugger, if EBP is at address 0x9FFB98, EBP-0x4f would be at 0x9FFB49, which is right after the first byte of a DWORD, so the decompiler adds 3 more bytes to align the array to the start of the next DWORD (4-byte) address. In reality, the array starts at EBP-0x44 in the debugger. That value makes more sense because according to our disassembly and decompiler math: auStack_4f + 3 should equal ESP+0x34 auStack_4f+3 should actually be auStack_44 because when we make that change, the math works: ESP == EBP-0x78 auStack_44 == ESP+0x34 == EBP-0x44== EBP-0x78+34 == EBP-0x44 == EBP-0x44 So why did the decompiler misinterpret the disassembly? Again, could be a number of reasons based on the decompiler logic/optimizations. I know that was a long answer to a short question, but please let me know if that helps, and I will add this to the correction pinned comment as well - Thank you again for calling out some great clarifying points!

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

    8:00 the only scary thing about pointers is... C syntax 😁 Seriously, just take a look at "unrefinded" Gidra's decompilation "C-like code", it's scary! Even assembly code is far more human readable than that. To get a grasp of pointers it's helpful to play with them in Pascal languages: Delphi, Free Pascal, Turbo Pascal. Concepts and use cases are 1:1 those of C but the actual syntax is human readable.