IsDebuggerPresent for anti-debug. Using rand() to determine successful input so I didn't bother looking into the algorithm any further. Fill the instruction below with NOPs and you patch the check.
0000000140001C73 | 75 20 | jne 140001C95 |
==> |
under 1000000.
Password I used: jXqmXyYrgJRVqs |
==> |
The logic of the program seems to be as follows -
esi = 2 * input[7]
+ input[0]
* input[1]
* (input[2] - input[2] * input[0] * input[6] * input[5] * input[4] * input[3] * input[9] * input[8] * input[8]);
unsigned int calculated_value = esi / input[11] / input[12] / input[13] * input[2] * input[0] * input[1]
calculated_value -= 148000000
if calculated_value = 1000000
fail()
With this in mind, providing a specific set of characters will result in a calculated value |
==> |
That was really creative, nice one.
SHA512 of the password:
3D51B8B68E4680EB2BCD66D1A3735F7CE0BDD782CB04BA719AC9A3B38E06198C1AD409BA1A5DDAC07E13A7A4A8831C7AACF1AC30162588EF0DF8E1A69A45220A |
==> |