010 Editor Report
010 Editor Report
by Threat Actress
1. Target
1
regular expressions is supported along with comparisons,
histograms, checksum/hash algorithms, and column mode editing.
Different character encodings including ASCII, Unicode, and
UTF-8 are supported including conversions between encodings.
The software is scriptable using a language similar to ANSI C.
2
010 Editor has an online repository of Binary Templates
containing over 80 formats. When a binary file is opened in
010 Editor and a Binary Template exists for the file, the
software can automatically download and install the Template.
Templates can also be added to the repository or updated
directly from the software.
2. Objective
3. Reversing
3.1. Metadata Extraction
3
It is not packed/encrypted, it was built using Visual
Studio 2019.
Looking at the licensing window it is possible to extract
some more information that could be helpful in the next steps:
4
What messages are displayed when the wrong license is
entered?
5
Good, some sort of MessageBoxA/W is displayed but that
will be better verified in the following steps.
6
After a full search for the “Invalid name or license”
string, the result is pretty satisfying:
F5 for decompiling…
7
Scroll up like if there was no tomorrow!
8
As it is possible to easily spot during the scroll up,
the code validates the license online e.g.
“https://www.sweetscape.com/cgibin/010editor_check_license_9b.
php?t=[redacted]&sum=[redacted]&id=0&chk=[redacted]&typ=0”:
9
Even with a correct license (code wise), the website
won’t return as a valid license since the author has not been
paid:
10
After some reversing engineering, it is possible to
identify the function responsible for the license validation:
Better now…
The first function returns a value that determines if the
online validation will be necessary or not, by inputting the
wrong license this will never return the value necessary to
validate the license online. This first function can be just
ignored and the focus will be on the second one.
Both functions receive the same parameters (global
address for the validation class in RCX, 0x0f and 0x4c71).
Right at the beginning of the second function, it is
possible to spot the golden returning value:
11
The golden value is 0xDB.
This function run every where in the code:
12
Time to patch the code.
In xdbg64, by searching strings of all modules:
13
Finally, inspecting the function called before the
comparison of EDI with 0xDB:
14
Next time when the program is opened:
15
The program is validated.
You can fill it with any Name/License you want and it
will work:
16
17
Now the program will run forever. Just like sweet love is
meant to be.
Rest in peace, Lowell Sweet.
18