First Stack Buffer Overflow to modify Variable - bin 0x0C

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

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

  • @barclayiversen376
    @barclayiversen376 8 лет назад +162

    I cannot express enough gratitude for how much I love these videos. Live0verflow is the only person ON PLANET EARTH explaining exploitation this well.

    • @reyuki-i
      @reyuki-i Год назад

      in the 8:00 section
      do you know why the integer variable needed to be placed in the higher offset instead of just the current RSP offset ? I am a little bit confused 😔
      and would appreciate it if someone enlightened me 😁

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

    This is some of the best stack explanation I have seen, allowing the viewers to easily follow along with the diagram and the gdb. Thanks a lot!

  • @peideng1318
    @peideng1318 7 лет назад +7

    just wanna say thank you to the author. this series of video is even more informative than the $1000 course I purchased before

    • @LiveOverflow
      @LiveOverflow  7 лет назад +4

      If you don't mind, which course?

    • @peideng1318
      @peideng1318 7 лет назад

      yup, OSCP certification training course. Lab hours are included of course.

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

      Are they provided by the OSCP guys? Mind dropping the link? I am looking forward to do it. Thanks

  • @hahoangmanh2086
    @hahoangmanh2086 6 лет назад +3

    that stack illustration is brilliant

  • @whocares3061
    @whocares3061 8 лет назад +47

    Just for the record: I did this on Ubuntu and used gcc to compile the code. When i tried to exploit the exec the error " *** stack-smashing detected *** ... terminated" showed up.
    The solution: When compiling use the "-fno-stack-protector" argument to aviod extra protection.

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

      USE GDB

    • @EvilSapphireR
      @EvilSapphireR 5 лет назад +17

      The extra protection is the addition of a stack canary value for anyone curious.

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

    This playlist is pure gold. I wish you could make videos on topics such as ELF Code Injection, Packers, Crypters one day. Keep up the great work bud!

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

      conway's game of life pfp??

  • @qaguado97
    @qaguado97 9 лет назад +6

    Thanks for making those videos, I hadn't found such a good hacking related channel ever

  • @Leo-sg5qd
    @Leo-sg5qd 3 года назад +1

    I saw something wrong with the value of esp at 6:30, but so thank you about this video, very basic and clear, i lost much time to meet this video!

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

    I dont even know how many times I have watched this. But every time I watch it, I manage to learn something new. How??? I watched the video 10 times to fully understand

  • @coolakhil123
    @coolakhil123 8 лет назад +15

    I cannot thank you enough for the nice stack animation! At 06:14 , esp has value 0xbffff7d8 and is subtracted 0x60 , the video shows that esp now becomes 0xbffff770, but doing "hex(0xbffff7d8 - 0x60)" in python gives '0xbffff778'. Any hints would be helpful!

    • @LiveOverflow
      @LiveOverflow  8 лет назад +8

      +Akhil I may have screwed up this when I made the video. Thanks for watching my videos so closely!

    • @coolakhil123
      @coolakhil123 8 лет назад +2

      +LiveOverflow. Thanks for the clarification. I am trying to learn as much as I can from your awesome videos. Cheers :)

    • @bbit-solutions7004
      @bbit-solutions7004 7 лет назад +6

      +Akhil Sharma You forgot the "and"-operation in the line before, where the last 4 bits of esp are set to 0, so that the value of esp before the subtraction is 0xbffff7d0
      +LiveOverflow Thank you for your videos. They're really great!

    • @effeKtSVK
      @effeKtSVK 6 лет назад +2

      I've had this exact problem and I found out that the `and esp, 0xfffffff0` operation does this. If I understood correctly BBIT-Solutions' comment, it just serves as a "clean up" so that the address ends with 0. LiveOverflow also mentioned it at 4:48. Please correct me if I'm wrong.

  • @jancheck
    @jancheck 9 лет назад +2

    Thank you for these videos! They keep getting better and better :)

  • @samberg248
    @samberg248 8 лет назад +1

    Amazing vids man. I hope you get way more views, you definitely deserve it.

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

    FINALLY I understand buffer overflows and what they have to do with the IP register :)

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

    Fantastic content! But I would prefer if you draw the stack upside down, since it starts at a higher-numbered address, and ends at a lower-numbered address.

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

    Amazing illustrations. Thank you very much, it couldn't have been explained better.

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

    10:53 in this scenario you just simply need to echo those characters that over flow the address and pipe it to wc -c to count how many characters and multiplay it with A :)

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

    I just set a break point at the * Test eax, eax * and then set it's value to 0, and it magically worked!!

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

    The video is amazing and the explanations as well. Thank you :)
    I would prefer to see that the Stack in the visualisation grows downwards as we "start" at the highest memory address and then move the stack pointer to lower address.
    And I think there is something messy with the addresses of the base pointer, when I compare it to the maped address space you showed earlier in this video. The newer comments here seem to be confused as well so maybe a update on that video would be helpful for all of us who are new to that topic :)
    @5:37 the base pointer ebp = 0xbffff900. At 3:49 in the mapped address space, the start and end address of the stack are 0xbffeb000 and 0xc000000 respectively. I thought the base pointer points at the highest address of the stack - why isn't that here?
    And why is the stack pointer address at 05:41 0xbffff7dc, at 05:43 0xbffff7e4 and at 05:47 back to 0xbffff7dc?
    At 6:07 you say we overwrite ebp with the value of esp, but you did the reverse: you overwrote esp with the value of ebp. Or what did you mean with "value"?
    But tbh at 10:09 I was just mindblown. For the first time I really understood what a Stack Buffer overflow is. Thank you!
    And it would have been helpful to enumerate the memory addresses in you visualisation at 5:49 to have one row with the memory address and the other row with the content in there.

  • @DarshitSuratwala
    @DarshitSuratwala 5 лет назад +1

    Great video.
    Thanks for explaining with the help of animations, really helped me to understand.

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

    *_Just a tip for whoever is doing stack2 exercise:_* you can escape characters on the environment variable on without Python but using Bash by doing the following:
    WHATEVER=$'\x41\x42\x43\x44'
    result of echo $WHATEVER:
    ABCD
    PS: you can also use \u0041 and so on, but then you need to see the ways of escaping characters. \u is for UTF-16 (or UTF-8), for example. \U I believe is for UTF-32 (or UTF-16 or UTF-8). And there may(must?) be other ways. You can also escape in octal, for example.

    • @reyuki-i
      @reyuki-i Год назад

      Woahh awesome trick, very helpful and save a lot of my time!

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

    Nice video :)
    You should have way more subscribers

    • @LiveOverflow
      @LiveOverflow  9 лет назад +2

      +VoOoLoX Thank you! You can help by sharing this with your friends ;)

    • @VoOoLoX
      @VoOoLoX 9 лет назад

      +LiveOverflow I know i already shared your channel with few of my friends

  • @issacccom
    @issacccom 3 года назад +7

    When professor says do your own research instead of teaching the real stuff, here I come :)

  • @dawidskrodzki
    @dawidskrodzki 8 лет назад

    Hey man,
    I am loving your videos. Fantastic content and great production quality. Thanks a lot for this and please keep it up. :)

  • @hacker2ish
    @hacker2ish 6 лет назад +1

    8:30
    If esp is a register, that contains an address then adding 0x1c to it will us directly the address at offset 0x1c. Why then do we need to use bracket notation if we want to store the address itself in eax and not the value that it points to?

  • @mattt2684
    @mattt2684 6 лет назад +17

    Can you make a video on writing shellcode for buffer overflows?

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

      I believe this is what you mean? You probably don't need it anymore, but others might, so I decided to still answer. This is the video, hopefully (in playlist mode): ruclips.net/video/HSlhY4Uy8SA/видео.html

  • @SR-er6hx
    @SR-er6hx 4 года назад +11

    "Don't be a script kiddie" - Every master once a script kiddie.

  • @th3xer0
    @th3xer0 8 лет назад

    The stack animation is great! Thanks.

  • @515sensei
    @515sensei 6 лет назад

    That's goddamn best tut on youtube ever. Keep it up, man!

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

    I leave this comment to prove that during my life, i've watched this video "First Stack Buffer Overflow to modify Variable - bin 0x0C" and i've done this level

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

    Wow......... this is SO AMAZING!!!!!! THANK YOU MAN!!!!!!!!

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

    6:38 new ebp is pointing to the old ebp.Not able to digest it. Can anyone give a simple explanation for it @liveoverflow

    • @brd5548
      @brd5548 3 года назад +2

      It's a little bit ambiguous. But by "new ebp is pointing to the old ebp" at 6:38, he meant that the memory ebp is pointing to now stores the value of ebp of the previous function.
      More specifically, at 6:38, value of ebp is 0xbffff7d8, which means it now points to memory address 0xbffff7d8, and at this address, the memory stores value 0xbffff900. And remember that "push ebp" at first line of the main function disassembly? It just pushed value of ebp into stack, value of ebp at that time was still the "old one", which was 0xbffff900.
      Hope I can help to explain well. Just remember that value of these pointer registers stand for memory address they are pointing to.

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

      yeah, i got stuck there for 3 months don't worry :)

  • @lynd6121
    @lynd6121 2 года назад +1

    Thank you very much for your awesome videos !! if anyone doesn't mind, at 6:36 why is ebp still pointing to the old value of ebp even after overwriting it with esp ? doesn't it point to the memory address it has as value (in general) ? your help is much appreciated !

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

      i don't know why but a lot of people get very confused right there including me, caller(function that callled current function) ebp got pushed on the stack so its on the stack and it is also the top of the stack because its the only thing in stackframe right now so esp is pointing to it, then new ebp is made to point to esp which points to the old ebp and then esp is decremented sub esp xxx for local variables

  • @billybabcokcs8224
    @billybabcokcs8224 6 лет назад +1

    How can I love the video not just like it ?

  • @reyuki-i
    @reyuki-i Год назад

    9:00
    char buffer char[64];
    I take it to mean 64 bytes, Why is there no 0x40 hex value on the shown disassembly output that corresponds to the number 64 in decimal?

    • @reyuki-i
      @reyuki-i Год назад

      0x60 - 0x5c = 0x4
      96 - 90 = 4
      is that actually mean the int size is 4 byte?

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

      yes! 32bit integer is 4 bytes

  • @pauribelles7920
    @pauribelles7920 6 лет назад +2

    I have a problem. My gcc has registered the 0x0 of the int modified variable at esp-0x54. What means that it's even more deeper on the stack than the buffer. So then, I cannot affect the variable.

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

      I would recommend to not compile it yourself, but find and use the protostar VM

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

      @@LiveOverflow I found an easy solution for this by just grouping the data on a struct, and worked. But you're right, I'm going to start using it. By the way, if you are reading this, the exploit exercicies links are down

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

    Noob here. Isn't it setting ESP value into EBP?? You said the opposite at 7:05 but at 4:30 the Intel document states that ESP is set to EBP

  • @nivmoshe5536
    @nivmoshe5536 6 лет назад +3

    There is no longer a website running on www.exploit-exercises.com
    do you have another link to download the image of the exploit-exercises ?

    • @RyanMurphyx
      @RyanMurphyx 6 лет назад +2

      drive.google.com/drive/u/0/folders/0B9RbZkKdRR8qbkJjQ2VXbWNlQzg

    • @GRBtutorials
      @GRBtutorials 6 лет назад +3

      web.archive.org/web/20171027043402/exploit-exercises.com/

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

    03:14 Can it be set as default forever so that I wouldn't have to type-in that command every time I run GDB? :q

  • @qyezdcion6699
    @qyezdcion6699 7 лет назад

    Sorry but, I can't understand you at 9:50. How did you counted these rows? Thank you.

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

      "4 characters here". AAAA -> 0x41414141. "Then 4 times 4 that's 16 for a row". so 16 bytes per full row. We have 3 rows that are filled full with 4. "And with the next fill row we can ...". So the fourth full row would write over the 0x00000000.

    • @qyezdcion6699
      @qyezdcion6699 7 лет назад

      LiveOverflow Thank you very much:).

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

    I'm curious about the stuff that is in the stack frame memory region before we write our As, Bs, and Cs into it. Presumably it is just junk from some previous program that happened to use that part of memory before or even random stuff from turning on our machine.
    Now, if we write the pattern of letters into memory and not properly clean it up, it should still be there somewhere, right? Is it at all possible to try to access data in memory that served as a stack frame of some prior program? Or does memory virtualization prevent that one can reliably find that region of (physical) memory ever again?

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

    I replaced the gets function with scanf and hoped to observe the same thing as in the video because I've heard people say that scanf is also an insecure function, but it never overflowed, what do you think?

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

    ok, i have decided i will study this video until i understand it

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

    Thanks a lot for the presentation but I have few questions trying to understand it... Is the following representation of "leave" and "ret" instructions correct?
    leave is like:
    mov esp, ebp
    mov ebp, [esp]
    add esp, 0x8
    ret is like:
    mov eip, [esp] // move value at current stack pointer to eip (that value was stored at top of the stack when "call" instruction was used)
    add esp, 0x8
    Would it be possible to actually use the instructions above instead of "leave" and "ret"?
    And why both instructions increase esp register by 8 instead of 4 which would be expected knowing that registers are 4 bytes in size? Is it the way how 32-bit system can be ran on 64-bit processor? Meaning that if I ran the same program (recompiled?) using old 32-bit processor then "leave" and "ret" would actually increase esp by 4?

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

    Great video, but at 6:12 you said mov esp,ebp and its mov ebp,esp ( since you are using the intel syntax that is not correct, as you already know) its just a note ;)

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

      huh? I'm rewatched the part like 5 times and I'm sure I said "mov ebp,esp"? Or what do you mean?

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

      I know what is going on ... You are moving into ebp esp and you said that, but if you read using the intel syntax ( dest , source ) you should say mov esp "into" ebp ) ... Or am i wrong ?

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

      I say: "Now we overwrite EBP with the value from ESP. move ebp, esp". I don't get it? First I say what the instruction does, and then I mention the instruction again.

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

      I understand you both, its very confusing, but is just a interpreting thing

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

      I don't understaaaaaand :D I didnt say it the wrong way around, did I? Or am I looking at the wrong minute?

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

    So, the task sold is to share to stack0 a big amount of "AAA" to rewrite zero variable.

  • @ddjazz
    @ddjazz 6 лет назад +1

    Could someone explain why the buffer is 64 bytes but 0x60 size is reserved on the stack? Shouldnt that be 0x40 just for the buffer?

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

      Did you find a answer to this question? My guess would be the binary automatically allocates some extra space for protection against buffer overflows even when accounted for the other variables to be pushed to the stack.

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

      0x60 is hexadecimal notation so in decimal it is 96. Why 96? there is some other things that stack needs to store.

  • @ianjones7440
    @ianjones7440 7 лет назад +1

    this is still a bit murky... so you push on the stack and push the modified variables address where?

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

    Why does the program allocates 0x60 (96) bytes on the stack while the summed size of the variables is 64+4=68 bytes??

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

      0x60 is hexadecimal notation so in decimal it is 96. Why 96? there is some other things that stack needs to store.

  • @th3xer0
    @th3xer0 8 лет назад

    What software did you use for creating the stack animation?

  • @wolfrevokcats7890
    @wolfrevokcats7890 2 года назад +1

    8:50 nice trick everytime breakpoint was hit
    define hook-stop
    info registers
    x/24wx $esp
    x/2i $eip
    end

  • @gabriellove4361
    @gabriellove4361 7 лет назад

    To crack stack 1I ran it in gdb and found it was comparing 0x61626364 with $eax, I then ran the stack1 program with test values AAAA, AAAAAAAAA... to see at what point i would overflow into the register it was checking i eventually ran it with AAAAAA and saw the message saying "try again you got 0x414141... i then went back and ran the program with the values AAAA...dcba and it worked, is this an effective way of breaking the c program or should i have done it using a different method?

  • @MichalMonday
    @MichalMonday 5 лет назад +1

    I come back to this video sometimes for the stack frame animation. It all made sense and I think I understood what is pushed/popped from the stack and in what order. Today I looked at stack example from this book (page 130, figure 6-5):
    www.electroons.com/8051/ebooks/expert%20C%20programming.pdf
    and the order seems "flipped". Did the author make mistake or in some circumstances the order is just different?
    I mean, order of stack frame contents in relation to order of stack frames themselves is different. It looks like in the book the return address is pushed onto the stack as the last thing (which seems weird considering it actually happens first).

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

      That's just due to different memory layout. Sometimes the stack grows towards the end, sometimes at the start of the address space.

    • @cvionis
      @cvionis 2 года назад +1

      I know this is a little late, but for anyone else who is wondering why this is the case, it's simply a matter of which computer architecture you're working with.

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

    but the stack grows down ? why is it up in the video ???

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

    Does this exploit have to be compiled inside the given Linux VM to work ?. I tried to compiled the source code on my Mac and seems like the same technique doesn't work anymore

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

      I think your system has to be 32bit but not sure

  • @mankan3765
    @mankan3765 6 лет назад +1

    You are best

  • @shubhamsingh-fc2ge
    @shubhamsingh-fc2ge 4 года назад +1

    Why did u only use x/24wx for examining the esp and not x/32wx or x/28wx

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

      Did you understood after 9 months?

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

      @@coder_rc Did you get this after 2 year? I'm still confused :(

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

      @@amberchen7817 I think it's better if you start with a blog post on buffer overflows on linux

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

    I cant understand. Please guide me so that i can gather some basic knowledge and come back

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

    When something is pushed on to the stack, the stack pointer isn't incremented, it's decremented?

  • @katschmidt6419
    @katschmidt6419 6 лет назад +1

    The website for protostar is down

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

    Those who didnt understood this video can read this article by null byte and comeback to here

  • @morsiskoPC
    @morsiskoPC 7 лет назад

    And what with the stack canaries? Why the protection doesn't work there?

    • @LiveOverflow
      @LiveOverflow  7 лет назад +1

      This is an oldschool example before stack canaries. But in episode 0x23 we compile this challenge on a more modern Ubuntu Linux, with stack cookies, and try to exploit it again ;)

    • @morsiskoPC
      @morsiskoPC 7 лет назад

      Oh ok that makes sense, thanks for really quick answer :)

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

    why can't we dynamically modify the "modified" variable?

  • @vequeemnheveque3778
    @vequeemnheveque3778 8 лет назад

    The best video

  • @wizkobenaempire3277
    @wizkobenaempire3277 8 лет назад

    i like the fonts you use.. can you please name them

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

    Is anybody else getting:
    Program exited w/ code 013
    Error while running hook_stop:
    The program has no registers now.
    :(

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

      got it..
      I had to add the second memory address break point. back to work :)

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

    if you should never use gets why does it exist to use?

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

    Straight proof

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

    Good video

  • @thedarkside0007
    @thedarkside0007 7 лет назад

    cant i just change the value from gdb using set command ?

    • @yehmon6117
      @yehmon6117 7 лет назад

      you could. the obvious implication, then, is that you have to run the program with gdb (or any debugger).

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

    If you are looking for the website, here you go; www.exploit.education

  • @zliang111
    @zliang111 7 лет назад

    Why is Eax compared to Eax shouldn't the be equal?

    • @LiveOverflow
      @LiveOverflow  7 лет назад

      Please add the time, I don't have time to rewatch a 10min video and guess what you are referring to

    • @zliang111
      @zliang111 7 лет назад

      yeah sorry about that i kinda sent the questions in sucession so it is at 8:40

    • @LiveOverflow
      @LiveOverflow  7 лет назад

      stackoverflow.com/questions/13064809/the-point-of-test-eax-eax

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

    this is great

  •  6 лет назад +1

    I cannot acces to protostar

  • @ShortGiant1
    @ShortGiant1 6 лет назад +2

    Amazing! Can we donate (buy you a beer?)

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

      Don't know if you still need this, but he has a patreon and a channel membership

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

      @@arandomstranger6954 yeah was a member for a while :) thanks.

  • @adam-nw5cn
    @adam-nw5cn 2 года назад +1

    why is this hard to follow :(

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

    Over C++ 11, there is no function get

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

    When I tried it I observed that in my case the input buffer came after the modified variable, resulting in me not being able to overwrite the buffer. Basically the stack looked like this (from bottom to top):
    0x00000000 ('modified')
    0x41414141 (input buffer)
    ...
    I tried it on my own machine instead of a virtual machine so maybe that's the reason why ?
    But I guess it should work on any machine right ?

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

    My solution, bash only :) enjoy ;
    echo $(for x in $(seq 64) ; do printf A ; done ; echo 0666) | ./binary

  • @smart_bar
    @smart_bar 2 года назад +1

    lol vtf is that stack still don't understand

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

    *_A question. I've been on stack1 exercise._* And I've been for the last half-hour or something XD. Trying to understand the endianness and I think I finally got it but I'm unsure and I'd like anyone to tell me if I'm right or not, please.
    So for stack1 I wrote as input string "ABCDBBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPQRSdcba" and ABCD, PQRS and dcba seem to be in opposite order in IDA's Stack View (using IDA Freeware 7.0 - AMAZING program for Windows, Linux and Mac). BUT...... It's only in opposite order in THAT LINE of 4 bytes (32 bits). So my guess is: the CPU reads the first ABCD all at once and writes starting at D through A. The same for the others... Then the same for PQRS which starts on S through P, and then it gets to dcba and it writes a, b, c and d in memory --> all this starting ALWAYS on the lower addresses first.
    Address Value
    FDB477C 44434241
    FDB4780 42424242
    FDB4784 43434343
    FDB4788 44444444
    FDB478C 45454545
    FDB4790 46464646
    FDB4794 47474747
    FDB4798 48484848
    FDB479C 49494949
    FDB47A0 4A4A4A4A
    FDB47A4 4B4B4B4B
    FDB47A8 4C4C4C4C
    FDB47AC 4D4D4D4D
    FDB47B0 4E4E4E4E
    FDB47B4 4F4F4F4F
    FDB47B8 53525150
    FDB47BC 61626364
    So it's all in the "correct" order LINE BY LINE but in the opposite order IN THE SAME LINE - because it reads 32 bits at a time and switches the bytes at those 32 bits. Then reads the next 32 bits and switches the bytes again. But it's reading every 32 bits in the "correct" order!
    Now... Is this right? I'd love it to be, so it would mean I got this hahaha.
    EDIT: from here I think I'm correct, but I'd still like a confirmation: www.scadacore.com/tools/programming-calculators/online-hex-converter/.
    EDIT 2: with this helping much on the positive side: stackoverflow.com/questions/2846914/what-is-meant-by-memory-is-8-bytes-aligned (in this case it would be on a 64-bits CPU, not on a 32-bits one).
    EDIT 3: I think the inside the parenthesis on EDIT 2 is wrong. I think I should say not depending on CPU bits, but on the data being read. If it's only 1 byte (character), 2 bytes, 4 bytes or 8 bytes (or 16 in case of SSE instructions acording with a StackOverflow user) - that's what I think that defines the alignement. That would say the number of nibbles to be swapped. Not sure though.
    EDIT 4: Nope, I think it's wrong... :´-(

  • @bitcode_
    @bitcode_ 9 лет назад +1

    thanx

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

    Can u crack anti debugger apps .

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

      Depending on the app and what anti debuging techniques it using

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

    mind ones business not the other

  • @solomontan1524
    @solomontan1524 7 лет назад

    Machst du auch ein solches Video auf Deutsch? Wäre geil.

    • @LiveOverflow
      @LiveOverflow  7 лет назад

      +Solomon Tan Dafür habe ich leider keine Zeit

    • @solomontan1524
      @solomontan1524 7 лет назад

      Schade drum. Übrigens, deine Videos sind die besten. Die gefallen mir sehr. :) Gut gemacht! Hast du Patreon? Ich unterstütze gerne.

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

    in today there is pwndbg for that trick 🤣🤣🤣🤣

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

    you are cool

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

    ">alert('super')

    • @d1rtyharry378
      @d1rtyharry378 5 лет назад +1

      youtube doesnt allows your script huh? sad :(

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

      @@d1rtyharry378 i am waiting for haha react button on youtube replies

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

    I just typed to it 66 As xD

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

    i can't even say in words how 6:30 annoying and not understandable it was for me

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

    oh...my...god...is to much bug

  • @ragnarlothbrok367
    @ragnarlothbrok367 7 лет назад +1

    cant understand a shit from assembler, and i thought JS is a fucking nightmare...

    • @LiveOverflow
      @LiveOverflow  7 лет назад

      +Ragnar Lothbrok you should watch the angularJS JavaScript sandbox escape series I did ;)

    • @ragnarlothbrok367
      @ragnarlothbrok367 7 лет назад

      Sure man, I plan to watch all your vids even though some are too damn smart for me.Cheers

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

    Hi

  • @wizkobenaempire3277
    @wizkobenaempire3277 8 лет назад

    i like the fonts you use.. can you please name them