This series is dedicated to documenting my journey of learning to crack.
The CrackMe used in this article: 【反汇编练习】160个CrackME索引目录1~160建议收藏备用 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
First time playing a crackme. Let’s just launch it directly and get familiar with the various screens, and check the message shown when the serial is wrong.
It has two types of verification: one is serial + registration name, the other is serial-only. After roughly understanding the flow, close it and attach x64dbg.
Serial number
Start with the simpler one. After loading the program, search all modules for strings, search for the error message “Try Again!!”, then jump to it.

First, you must know what the assembly instructions mean — for example, jmp is an unconditional jump, jne is a conditional jump, etc.
(Actually, you don’t need to memorize them: in x64dbg, dashed arrows mark conditional jumps and solid lines mark unconditional jumps.)
Then you’ll see near the jumped-to “Try Again!!” one dashed arrow and one solid arrow.
Let’s work out the program flow: first it validates the input data, then uses jne to check whether it matches. If it doesn’t match, it outputs “Fail, try again!!”; if it matches, it does nothing.
So fill the jne instruction with nop, and the first problem is solved.

Serial number + registration name
First use the string search to find the “Sorryxxxxxx” message. Two results will appear, because it validates the serial number and the registration name twice, so there are two messages.
Start with the first one. jge is also one of the conditional jump instructions; just change jge to jmp and this part is cracked.

Then find the second one,

Roughly trace the flow — it’s basically the same as before: just change the conditional jump jne to nop.
Conclusion
At this point, no matter what you enter, it will show a congratulation for success.
Finally, you can export the patched program — the cracked program.