
This is compare method, the signature is: System::String::Compare(strA, indexA, strB, indexB, len). Then underneath it will be like this basic_string,std::allocator\u0020> basic_string,std::allocator\u0020> īasic_string,std::allocator\u0020> basic_string,std::allocator\u0020>2 If you don't declare variables and have code like this std::string("") Hard to believe but that's part of auto generated names. So setting those two to 0 is initialization/reseting the values. For shorter strings it is stored internally. If value is > 16 then the string is in fact a pointer to memory region where the string is stored. I would assume that's sets value 0 at the specified offset.ĮDIT: that's partially true, upon further investigation it looks like that at index 16, the length of the string is stored, and at index 20 it's some kind of type.Looks like a copy ctor, so my judgement would be the same as yours - assignment.md5(&basic_string,std::allocator\u0020>7, str) Ĥ) Is it just a comparison of two strings in disguised form? result =(.std.basic_string,std::allocator\u0020>.compare(ref basic_string,std::allocator\u0020>, 0u, (uint)(*(ref basic_string,std::allocator\u0020> + 16)), ptr, count) = 0) ĥ)Maybe there's a easier way which I don't know to solve this crackme? I firstly tried to use IDA as always, but that wasn't really helpful in this case. *(ref basic_string,std::allocator\u0020>2 + 20) = 0 ģ) What do the numbers (5, 6, 7 near the end of lines) mean?. Mean on line 25 of button2_onClick? I understand that this is some type of assignment, but no more.Ģ) What these lines (14, 15 lines and so on, of Check()) do? *(ref basic_string,std::allocator\u0020>2 + 16) = 0 std.basic_string,std::allocator\u0020>.(ref basic_string,std::allocator\u0020>4, ref basic_string,std::allocator\u0020>2) NET apps) so I need some explanations about the decompiled code we can see in these two functions:ġ) What exactly does md =. In the end of this function we can see a boolean function Check() which returns true if the serial was right: Check()Īs I'm new to reverse engineering (and especially to RE of. I used dnSpy to disassemble the program and found onClick function which begins the process of checking if the serial was right: button2_onClick Serial is somehow depends on string and I need to understand how. I'm reverse engineering the CrackMe which is written on Managed C++/C#.Īrguments are "string" (email in this case) and "serial".
