![]() I wrote a script to do that and it printed the key right away. The serial key is formatted in 5 groups of 6 uppercase letters separated by dashes, so the Z-separated bytes just need to be shifted right once in order to retrieve the key (which is what ascii_unshift does). So where does 0x400d00 come from and why is it important? If you look at the symbols again, you can see shifted_serial is at that address, so let's check it out. This may seem confusing if this is your first time reversing, so here's a cleaned up version of ascii_unshift to help you understand:Įssentially we get var_30 from a bitwise right-shift operation on a given string, in this case main passes 0x400d00 to ascii_unshift. It takes in 2 parameters, loops over the bytes in the second one, bitwise right-shifts them by 1 and saves the result in the first parameter. Now let's look at what ascii_unshift does and why var_30 is relevant. So it basically asks the user to input the serial key, passes some sequence of bytes at address 0x400d00 to ascii_unshift and compares the user input to var_30. strcmp compares var_60 to var_30 and returns 0 if they are the same.ascii_unshift is a user-defined function that we will look at shortly. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |