Reverse engineering C programs (64bit vs 32bit) - bin 0x10

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

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

  • @krzysztofadamski2884
    @krzysztofadamski2884 8 лет назад +76

    Usin NOPs is useful but there is also another trick - compile with debugging symbols and then use "objdump" with "-S" parameter to interleave C code with disassembly.

  • @mrigankadas5435
    @mrigankadas5435 4 года назад +49

    I did a whole lot of research by myself to actually understand this video.

    • @kuldeepsharma7499
      @kuldeepsharma7499 4 года назад +9

      I am feeling like am not smart enough to understand 😞

    • @prashantd6252
      @prashantd6252 4 года назад +5

      Then you've made some progress...keep it up. If you need more help try to join forums online to better find useful resources and learn by building something.

    • @nagitokomaeda3237
      @nagitokomaeda3237 3 года назад +1

      Amazing! This is what youre supposed to dk on a LiveOverflow video.

  • @ronalerquinigoagurto555
    @ronalerquinigoagurto555 6 лет назад +5

    There should be more stuff like yours on youtube

  • @hikaru-live
    @hikaru-live 5 лет назад +17

    Suggestion: improve the makefiles so they would use -O0, -O2 and -Os optimization levels. That will change how the code is generated.

  • @damejelyas
    @damejelyas 6 лет назад +15

    Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure. It is our light, not our darkness, that most frightens us. Your playing small does not serve the world. There is nothing enlightened about shrinking so that other people won't feel insecure around you. We are all meant to shine as children do. It's not just in some of us; it is in everyone. And as we let our own lights shine, we unconsciously give other people permission to do the same. As we are liberated from our own fear, our presence automatically liberates others
    Thanks man.

    • @boweneveritt3400
      @boweneveritt3400 6 лет назад

      Me too

    • @uchihasurvival
      @uchihasurvival 5 лет назад

      Either I'm dumb or I've been nullified from literature symbolisms after programming daily for months.

  • @robinhood3841
    @robinhood3841 4 года назад +1

    i love you so much man you saved my life

  • @kuhluhOG
    @kuhluhOG 4 года назад +2

    In case somebody is asking how a big collection of numbers is getting used in a call (e.g. struct { int64_t a, b, c, d, e, f; } which is 48 Bytes), it's just puts everything onto the stack (also for returns).

  • @addonsOlivierESP
    @addonsOlivierESP 7 лет назад +9

    Why do you prefer using volatile for all variables over using gcc -O0 ?
    Nice vids btw :>

    • @nullnull6032
      @nullnull6032 5 лет назад

      because the compiler may try to optimize the code and remove some of these variables because they are unused

    • @nullnull6032
      @nullnull6032 5 лет назад

      so the compiler may also cache the values of unused variables and never read the value from memory again

    • @nullnull6032
      @nullnull6032 5 лет назад +6

      but when you use volatile you basically tell the compilers to fuck off

    • @Caellyan
      @Caellyan 4 года назад

      @@nullnull6032 Or simply, as others said '-O0'

  • @dedkeny
    @dedkeny 3 года назад +4

    I've watched these the last 7 episodes on repeat hand in hand with the art of exploitation v2 and they are almost the same for the first 5 chapters

  • @justfuture6585
    @justfuture6585 4 года назад

    Awesome video! :)

  • @bitcode_
    @bitcode_ 8 лет назад +5

    yes master...lol. I wish i understood everything...im taking a course on assembly x86 and C and Python, but i am not yet to understand everything here in the tutorial, one day hopefully will become second nature the more i practice, thanks for these tutorials, i will be coming back to these over and over.

    • @bitcode_
      @bitcode_ 7 лет назад +3

      ́ ̈ Whats up bro, wow you have made my day, man it has been a wild year, long story short I am studying full stack javascript, I might get an internship like in 4 to 6 months, my love for assembly and C are the same, still a fan of your videos, still have goals of participating on ctfs but my skills are not there yet but i have a much better understanding now, I have just bit concentrating a lot in javascript, but my ultimate goal is to travel and attend hackathons and ctfs, thank you for asking!!! i want to give back to the community like you do with your videos!

    • @user-xm6gb6pu1n
      @user-xm6gb6pu1n 7 лет назад +1

      mylampdatabases good to hear (: Have a nice day (y)

    • @XseuguhX
      @XseuguhX 6 лет назад +14

      It's time for the yearly report I think, dude.
      How's your assembly going ?

    • @boweneveritt3400
      @boweneveritt3400 6 лет назад +5

      b1tc0de, its been 2 years, do you have an internship and hows assembly going??

    • @compilationsmania451
      @compilationsmania451 4 года назад +1

      Welp, time for the 3 year report. How're you doing now?

  • @Edmondfreak
    @Edmondfreak 6 лет назад +4

    Great stuff but please use straight lines instead of freehand drawn for the arrows or box illustrations, it's not precise and guessing leads to confusion

  • @muudus_tv
    @muudus_tv 3 года назад

    Okay, i saw your content, nicely done. Now I want to understand the ins and out of this video and even have a further discussion. I know C language but I didn't understand anything about the content. so tell me what should I learn to be able to understand whatever is going on the screen and whatever you told about reverse engineering. Hoping to get a reply from you.

    • @muudus_tv
      @muudus_tv 3 года назад

      @blvckmetxlyeah that's true man.. anyways thanks for replying man. All Hail Gorgoroth, Amon Amarth, Carpathian Forest (Norwegian blvckmetxl). 🤘

  • @Windowicker
    @Windowicker 4 года назад +1

    I'm a happy watcher when I watch a video, and see another video. Makes you find new points to learn from. =] Tanks M8^_________^

  • @michimarz
    @michimarz 8 лет назад +10

    The reason behind placing mov eax, 0x0 instructions before fun1() and fun2() calls is that in 64-bit mode the eax register is used to pass information about the number of vector registers used to hold arguments to functions with variable arguments. In our case of fun1() and fun2() the compiler doesn't see the function declaration, which means it doesn't have enough information about function parameters so it has to zero the eax, just in case the function happens to accept variable arguments.

    • @krzysztofadamski2884
      @krzysztofadamski2884 8 лет назад +7

      This is not entirely true (but close). It is because the compiler treats fun1 as function with (potentially) variadic number of arguments but it's not because there is no function declaration. The real problem is that in C declaring function as "void func()" is not the same as "void func(void)". See C99 standard, "6.7.5.3", paragraph 14.

  • @mrigankadas5435
    @mrigankadas5435 4 года назад +1

    I actually like the way you point out the important informations to keep in mind. I made an Instagram account just to post what I understood and learnt about reverse engineering (basically the important things one should know before getting into Reversing stuffs)
    I got inspired from your research method and implemented it for myself, and it feels great. Thumbs up for the video, subscribed to your channel

  • @lopo8000
    @lopo8000 2 года назад

    Buffer Overflow!!!!!!!!!!!!!

  • @belowasmelashgebremariam
    @belowasmelashgebremariam 3 года назад

    Hello world

  • @xziaah6j63kx9
    @xziaah6j63kx9 2 года назад

    thanks for adding CC

  • @JakeDownsWuzHere
    @JakeDownsWuzHere 3 года назад

    still interesting in 2021

  • @RDY-ke4fn
    @RDY-ke4fn 6 лет назад +1

    Great job!

  • @nkapadia2711
    @nkapadia2711 3 года назад

    improve volume

  • @777pios
    @777pios 5 лет назад +2

    Good men,
    How do you learn ASM?! Reading books, only practicing and playing?
    Thanks master !

    • @giuseppelamalfa2966
      @giuseppelamalfa2966 5 лет назад +7

      practice is the best teacher, ASM is such a primitive language with so many instructions and so many variations (architectures, processor extensions, etc) that, even if a book were to extensively cover a good portion of it, it would be extremely hard for a beginner
      my favorite way of learning is getting a basic understanding of the fundamentals and then work my way up with practice and reference guides

    • @777pios
      @777pios 5 лет назад

      @@giuseppelamalfa2966 thanks for your advice men :) !!

    • @jaaps772
      @jaaps772 5 лет назад

      You could also download The Intel 64 and IA-32 Architectures Software Developer's Manual. At first this might look a bit overwhelming, but once you understand the basics of assembler it gets easy.

    • @vincenthuaweitien
      @vincenthuaweitien 4 года назад

      Try Microcorruption.com

  • @richardleandro8694
    @richardleandro8694 6 лет назад

    Thank you, your channel it's awesome!

  • @haru8414
    @haru8414 4 года назад +1

    Liveoverflow: dont be a script kiddie
    Me: thats why im here

  • @adib-enc
    @adib-enc 6 лет назад +1

    still great video in 2018 :)

  • @riesenblut7
    @riesenblut7 4 года назад

    He has a german accent

  • @inventionist172
    @inventionist172 5 лет назад

    yt just went completely down