home *** CD-ROM | disk | FTP | other *** search
- f0dder's 1st crackme - solution by The+Q
- ─────────────────────═══════════════════
- This crackme emulates a new, rather simple, CPU. The whole protection
- works on a higher level, and the emCPU state is remotly connected to the
- values in the (real) CPU registers.
-
- Due to lack of time, I'll only mention the weak points in the crackme,
- and the steps I took to crack it.
- Even throu the emuCPU operates in a higher level, in depens on the real
- CPU to call it - this is the emCPU caller procedure, and this level
- cross is the first weak point. Simply put, if you breakpoint on the
- caller code, just before is jumps to the specific emulation block (emMOV,
- emADD or whatever) it would be like you single step the emCPU.
- There's of course another level-corss that takes place whenever the emCPU
- needs to call a system API (or interrupt). level cross == weak point.
- Two last things we need to take notice are the emIP and emFlags.
- all emulated CPUs can differ in their registers size, function and emulated
- instucrion, but they all must have a couple of state-registers.
- These emIP and emFlags are also weak points. Once you figure them out,
- you're half way through.
-
- Basiclly, i fugured where all the components are located:
- - cpu caller @401000
- - emopcodes stream (emImage) @40301C
- - (edx+8)-> emCPU registers
- - (*(edx+8)+3c) = emIP
- - (*(edx+8)+34) = emFlags
- - set emFlags procedure @401137
- - emInstructions blocks @40119d - @401242
- importent: 1) emJZ instruction @401247
- 2) emSystemCall (level cross) @401190
- - setup before emInstruction jump table @403000
- - encrypted text @403200
- Now, we are ready to "emDebug" - debug the emulated cpu.
- breakpoints:
- 1) cpu caller - this is like single step.
- 2) emSysCall - this is where the serial is processed
- 3) emJZ - to know where to stop tracing.
-
- The protection scheme is not complicated, so the emDebug mode was very
- little.
-
- Anyway, the password for the source archive is: 9558295373
-
- you'll find more information there.. it actually has a keygen there (:
-
-
- Thanks goes to f0dder, who has worked hard to produce this crackme :)
-
- later all,
- The+Q
-