I have cracked one bulgarian software for window
I have used ollydbg.
The steps were:
- I want to attach on “Start” button, but it was in cyrillic so I have to start some resource editor to change the text to latin characters.
 - I have put a breakpoint on the start handle and button messages
 - I got the message “Good bye” from the program.
NEVER put such a messages in your program if you want to survive longer. It is better to quit silently instead of point to the cracker “Here, here, crack me, please”. - I have run Boarland Decompiler, check the address where “Good bye” is used, and I have put a breakpointer there.
 - Then bypass the “protection” by making the jnz to jmp
 - save the executable to have in this stable state
 
Then it was simple. The code was in memory. But how I could be able to show it to the poor users? I have decided to use memory viewer and put some instructions there….not good. not nice. Then I have a plan. There was a button “Instructions for registrations” I thoutgh that this is the perfect place to give the real instructions for registrations and show the code there :)
- Some googling on how to display MessageBoxA and I have found this example here . \
 - Then I have replaced the end of the “Instructions for registrations” function with the following code
 
0047F903     A1 6C694800    MOV EAX,DWORD PTR DS:[48696C]
0047F908     6A 00          PUSH 0
0047F90A     50             PUSH EAX
0047F90B     50             PUSH EAX
0047F90C     6A 00          PUSH 0
0047F90E     E8 EF0DFD7D    CALL user32.MessageBoxA
0047F913     A1 70694800    MOV EAX,DWORD PTR DS:[486970]
0047F918     6A 00          PUSH 0
0047F91A     50             PUSH EAX
0047F91B     50             PUSH EAX
0047F91C     6A 00          PUSH 0
0047F91E     E8 DF0DFD7D    CALL user32.MessageBoxA
0047F923     A1 74694800    MOV EAX,DWORD PTR DS:[486974]
0047F928     6A 00          PUSH 0
0047F92A     50             PUSH EAX
0047F92B     50             PUSH EAX
0047F92C     6A 00          PUSH 0
0047F92E     E8 CF0DFD7D    CALL user32.MessageBoxA
0047F933     A1 78694800    MOV EAX,DWORD PTR DS:[486978]
0047F938     6A 00          PUSH 0
0047F93A     50             PUSH EAX
0047F93B     50             PUSH EAX
0047F93C     6A 00          PUSH 0
0047F93E     E8 BF0DFD7D    CALL user32.MessageBoxA
0047F943     90             NOP
0047F944     90             NOP                                      ; |
nop-ping till the end of the function here...
0047FA39     90             NOP
0047FA3A     90             NOP
0047FA3B     90             NOP
0047FA3C   . 5E             POP ESI
0047FA3D   > 5B             POP EBX
0047FA3E   . C3             RETN
Then save the patched file from ollydebug.
Final notes.
I am not happy on what I have done. I am writing also software and I know what means someone to crack your software. So I will publish the crack here but you should find it yourself. It is simple protection for the users which don’t want to pay :)