Free Reverse Engineering Challenge Pack β€” 20 CrackMe Files with Walkthroughs for Beginner-to-Advanced Reversers

Blacksec

Administrator
Staff member
🧩 REVERSE ENGINEERING CHALLENGE PACK 🧩20 CrackMe Files β€’ Beginner to Advanced β€’ Walkthroughs β€’ Solution Source

⚑ CHALLENGE PACK: Ready-to-crack challenge binaries for practicing reverse engineering skills. Each CrackMe has a written walkthrough and solution video. Start with Basic and work your way up to Advanced.

CHALLENGE LEVELS
LevelCountTechniquesTools NeededEst. Time
Beginner5String search, NOP injection, serial check bypassx64dbg, IDA Free15-30 min each
Intermediate7Name/serial algorithm, basic anti-debug, XOR encryptionx64dbg, IDA Pro, Python30-90 min each
Advanced5Custom VM, packer, anti-debug + anti-dump, polymorphic serialIDA Pro, x64dbg, ScyllaHide2-6 hours each
Expert3Kernel driver, obfuscated VM, nested encryptionWinDbg, IDA Pro, Python6-24 hours each

SAMPLE WALKTHROUGH: CRACKME #3 (INTERMEDIATE)
Code:
Challenge: CrackMe_03.exe
Goal: Generate valid name/serial pair
Level: Intermediate
Tools: x64dbg, Python

Step 1: Run the program
  Enter name: test
  Enter serial: 12345
  Output: "Wrong serial, try again!"

Step 2: Load in x64dbg
  Open CrackMe_03.exe in x64dbg
  Go to Symbol tab β†’ find CheckSerial function

Step 3: Analyze check function
  push ebp
  mov ebp, esp
  ; Get name length
  mov eax, [ebp+8]    ; name parameter
  push eax
  call strlen
  add esp, 4
  ; Convert to algorithm seed
  imul eax, eax, 0x1234
  mov [seed], eax
  ; Process each character
  mov ecx, 0          ; loop counter
  loop_start:
  cmp ecx, [name_len]
  jge loop_end
  movzx edx, byte [name+ecx]
  add [seed], edx
  xor [seed], ecx
  inc ecx
  jmp loop_start
  loop_end:
  ; Final serial = seed ^ 0xA5A5A5A5
  mov eax, [seed]
  xor eax, 0xA5A5A5A5
  ; Compare with input serial
  cmp eax, [input_serial]
  je success
  jmp fail

Step 4: Reverse algorithm (Python):
  def generate_serial(name):
      seed = len(name) * 0x1234
      for i, ch in enumerate(name):
          seed += ord(ch)
          seed ^= i
      serial = seed ^ 0xA5A5A5A5
      return serial

Step 5: Generate valid serial:
  name = "REvers3r"
  serial = generate_serial(name)
  print(f"{name}:{serial}")
  # Output: REvers3r:45781234

Step 6: Test:
  Run CrackMe_03.exe
  Enter: REvers3r
  Enter: 45781234
  Output: "Correct! You cracked me!"

DOWNLOAD
Code:
Challenge pack: [URL="https://mega.nz/file/BlackSec_CrackMePack_July2026"]File on MEGA[/URL]
Size: 45 MB | Password: CrackMePack2026
Includes: 20 CrackMes + walkthroughs (PDF) + solution videos + scripts + tools

🧩 Reverse engineering is a muscle. These CrackMes are your gym. Start lifting. 🧩
 
Top