======= Program Name: MCW (Miracle C Compiler) Version: 2.2 Cracker: Jok3r Where?: Http://www.softseek.com (Search for it: MCW C Compiler) Tools: Hacker's View 6.xx Tutorial No.: 1 ======== [ Let's start ] 1. Run MCW.EXE, click HELP | About.. and then you will see that UGLY-as-hell NAG screen. Guess what? Whenevr you compile and/or build a file in MCW, that NAG screen will appear! 2. Now we know that the screen appears via an ABOUT box task, REMEMBER this! 3. Copy MCW.EXE to MCW.EXX (for backup) and copy MCW.EXE to CRACK.EXE (for use by Hacker's View) 4. Move CRACK.EXE to the Hacker's View (aka HV) folder, wherever that may be. 5. Load CRACK.EXE into HV (Hacker's View) and press F4, then choose HEX. (This is to change code modes...) 6. Press F7 (Search), we are going to search for: "about" (No quotes). (You should've remebered that kind of box, because it is useful when removing NAGs!!!!) 7. Guess what we see buried into all this Hex Junk? Hmm... an ABOUTBOX call! Look at your LEFT for the address (00000610 <-- Our address!) 8. Press F4 once more and choose DECODE (To view the ASM code..). Press F5 (GOTO) and type in our address, in this case type in "0610" (no quotes, no need for the extra 0's either). 8. Ok, so the ABOUTBOX call looks like this: 00000610: 084142 or [bx] [di] [00042],al 9. Im not going into every bit of ASM code because i would probably end up teaching you assembler instead of how to crack MCW!! 10. What more do you need? You know that that is the call so RTN it, for those who don't know what a RTN is, it stands for RETURN, and here is how to imply it... 11. Make sure that the cursor is on: 084142 Press F3, and enter: C3 Did you see that OR turn into a RTN? Well, it did! 12. Press F9 to update, and then press F10 to leave HV. 13. YOU ARE DONE!!!! Now, go double click CRACK.EXE. Goto HELP, then About. Hey, wait a minute, nothing happens. Of course nothing happens, when the RTN is made the NAG is eliminated and when you BUILD/COMPILE programs in MCW, the NAG does NOT appear...kewl! [ Patcher: Asm and Pascal ] Pascal: ------------------------------------BEGIN------------------------------------ Uses Crt; Const A: Array[1..1] of Record {<-------- 1 byte to be patched} A : Longint; B : Byte; End = ((A:$0610;B:$C3)); {<--------------- offset "0610" and byte "C3" = RTN} Var Ch:Char; I:Byte; F:File; FN:file of byte; Size:longint; Begin Writeln('Jok3r''s [GH4] Patch); Writeln('Http://gha.cjb.net'); Writeln('Crack for MCW 2.2 by Jok3r ''00'); Assign(F,'MCW.EXE'); {<-------------- filename to be patched} {$I-} Reset(F,1); {$I+} If IOResult <> 0 then begin writeln('File not found!'); halt(1); end; For I:=1 to 1 do {<---------------------- 1 byte to be patched} Begin Seek(F,A[I].A); Ch:=Char(A[I].B); Blockwrite(F,Ch,1); End; Writeln('File successfully patched!'); End. -------------------------------------END------------------------------------- ASM: ------------------------------------BEGIN------------------------------------ DOSSEG .MODEL SMALL .STACK 500h .DATA .CODE PatchL EQU 6 Buffer Db PatchL Dup(1) handle dw ? intro db "Jok3r's Patch",0dh,0ah,"[ Http://gha.cjb.net ]",0dh,0ah,"Crack for MCW v2.2 by Jok3r [GH4] '00$" FileName db "MCW.EXE",0 ;<------- filename to be patched notfound db 0dh,0ah,"File not found!$" cracked db 0dh,0ah,"File successfully patched. Enjoy!$" Cant db 0dh,0ah,"Can't write to file.$" Done db "File has been made.$" String db C3h,0 ;<------------- byte C3 to be patched START: mov ax,cs mov ds,ax mov dx,offset intro ;point to the time prompt mov ah,9 ;DOS: print string int 21h jmp openfile openfile: mov ax,cs mov ds,ax mov ax,3d02h mov dx,offset FileName int 21h mov handle,ax cmp ax,02h je filedontexist jmp write filedontexist: mov ax,cs mov ds,ax mov dx,offset notfound mov ah,9 ;DOS: print string int 21h ;display the time prompt jmp exit Write: mov bx,handle mov cx,0000h mov dx,0610h ;<------------- offset "0610" mov ax,4200h int 21h mov cx,patchl mov dx,offset String mov ah,40h mov cx,01h int 21h mov ax,cs mov ds,ax mov dx,offset cracked mov ah,9 ;DOS: print string int 21h ;display the time prompt jmp Exit Exit: mov ah,3eh int 21h mov ax,4c00h int 21h END START -------------------------------------END------------------------------------- [ IMPORTANT!!! ] You COULD of also NOPped it. NOP = No Operation, so it would of worked out exactly the same. BUT, in the cracking world, try ANYTHING else before you do a NOP, in time you will see what I mean! Also, you could make a very good patch with PCW, (Patch Creation Wizard, available at my site) BTW: Instead of 'C3' for RTN, the NOP is a '90'. [ Notes ] The program 'CRACK.EXE' which should be included here is the patch for removing the NAG. It was made using my patch (The ASM one). The patch and source is 100% free as long as I get credit for my work... [ Greetz ] - The Keyboard Caper [tKc (Phrozen Crew)] = Read his tuts they r0ck! - Earthquaker = What up my dutch nigg4? kidd1n' - Everyone at D3F, EQX, GH4, UCU, and ACU... Special shoutoutz to Nyke Gyrl - what up gyrl? [ Cont4ct ] Well, you can find me via the following ways: - ICQ [UIN: 49655940 ] - WWW [URL: Jok3r.cjb.net ] - Email [Jok3r@globalhacking.com] Quote [ Not sure who said it ] " If you give a person a crack, he will be hungry again. If you teach a person to crack, he will never be hungry again! " C0pyr1ght3d © 2K, by d4 j0k3r [ 2 - 4 - 2000 ] INVOKE OpenPEFile,ADDR Directory,ADDR PE_File