text:004A4070 mov al, bl < Lưu ý .text:004A4072 pop ebx .text:004A4073 call loc_4EE297 .text:004A4078 mov esp, ebp .text:004A407A pop ebp .text:004A407B retn 8 < vệt sáng nằm ngay đây. Khi đó, AL=0 (vì chưa đăng ký hay đăng ký sai). Nhìn lên trên 1 xíu, ta thấy tại vị trí 4A4070 chứa mã lệnh mov al,bl. Như vậy, ta có thể thay đổi lệnh này sau cho giá trị của AL luôn là 1 > đổi từ mov al,bl sang mov al,01. >byte: 8A C3 sang B0 01 4. Crack tập tin WinTS: Trong IDA, nhảy tới vị trí lệnh 4A4070, nhìn vào thanh status bar nằm ở dưới, ta thấy có 2 số : + 4A4070 : là vị trí lệnh trong chương trình + A4070 : là vị trí của lệnh trong tập tin. Mở HexWorkshop lên, nạp tập tin WinTS.exe vào, gõ Ctrl-G, chọn Hex, gõ vào A4070. HexWorkshop sẽ chuyển tới vị trí này. Nhấn TAB để con nháy nằm bên phần có số Hex và gõ vào B001. Nhấn Ctrl-S để save lại. Như vậy bạn đã crack xong game TypeSHARK ver 1.00 của Popcap. IV. Viết Patch Generator bằng ngôn ngữ C và Pascal _Patch gen là gì? Thật chất đó là một chương trình tạo ra để làm thay cracker dùng crack phần mềm. Khi một cracker crack xong một soft, chẳng lẽ khi cài lại phần mềm đó một lần nữa lại phải hì hục ngồi crack lại. Rất bất tiện. Vì lẽ đó patch gen ra đời. Trên thế giới hiện có rât nhiều Patch Gen được viết sẵn cho cracker. Một vài patch gen nổi tiếng có thể kể ra như Code Fusion, Patch Engine, DZA patcher,Tola's PG, File Patcher v/v Nhưng tại sao chúng ta phải dùng của họ mà không tự viết một cái để xài nhỉ. He he nghe qua thì hơi phức tạp nhưng thật sự thì cũng có gì khó mấy nếu bạn có một chút kinh nghiệm lập trình về ngôn ngữ C, Pascal, Delphi, Vb, VC, MASM32 v/v. Cái quan trọng nhất là bạn phải nắm rõ được " Kiểu File". Vì Patch Gen được viết chủ yếu hoạt động trên kiểu này :d. _Sau đây là hai Patch Gen mà tôi thường sử dụng nhất. Patch Gen bằng ngôn ngữ Pascal là tôi chế biến từ Patch gen của NVH(c). 1.Patch Gen bằng pascal. (Patch gen để crack Mirc 603) uses crt; const offset1=$000C5A48; {Địa chỉ offset cần crack} var ch:char; procedure patch(location:longint); var F:file of byte; x:array[0 1]of byte; {Số byte cần crack} begin {$I-} Assign(F,'mirc.exe'); {gán tên file cần crack} Reset(F); {Mở file vừa gán để đọc } {$I+} If Ioresult<>0 then { Nếu tìm không thấy file} Begin clrscr; textcolor(lightgreen); Writeln;Writeln; Writeln('Ban Phai Chay File Crack Trong Thu Muc Co Chua File Can CraCk !'); Readln; End Else {nguoc lai} Seek(F,location); x[0]:=$75; {Giá trị cần đổi của file crack} Write(F,x[0]);{Ghi lên file} Close(F); { Đóng file} End; Begin Clrscr; textcolor(lightgreen); Writeln(' by hacnho from VCT '); Textcolor(white); Gotoxy(10,9); Writeln('Ban hay nhan phim P de Patch, Phim bat ky de thoat:'); Ch:=Readkey; If(ch='p')or(ch='P')then begin patch(offset1); Writeln;Writeln;Writeln; Gotoxy(17,15);Writeln('mIRC603 PaTcH successful !'); Gotoxy(17,17);Writeln('***** More CRaCk, please contact me at *****'); Gotoxy(20,18); Writeln; Gotoxy(20,19); Writeln('*************************************'); Gotoxy(20,20); Writeln('* E-Mail : tommy9982@yahoo.com *'); Gotoxy(20,21); Writeln('* YIM : tommy9982 *'); Gotoxy(20,22); Writeln('* http://www.vietcracks.com *'); Gotoxy(20,23); Writeln('*************************************'); Readln; end else Exit end. 2.Patch Gen bằng C. #include <stdio.h> #define EXEfile "mirc.exe" /* Tên file cần crack */ #define off1 0x000C5A48/* Địa chỉ offset cần crack */ #define progver "mIRC 603" /* Tên chương trình đang crack */ int crackit(long int location, FILE *tocrack) { unsigned char x[1]; /* Số bytes cần patch */ fseek(tocrack,location, SEEK_SET); x[0] = 0x75; /*Giá trị cần đổi của file crack */ fwrite(x,1,tocrack); return 0; } void throwbanner() { printf("\n\n"); printf(" %s crack\n\n",progver); printf(" by\n\n\n"); printf(" by hacnho from VCT\n\n\n"); } void waitforenter() { char wait[1024]; printf("\nPress enter to continue\n"); gets(wait); } void anylastnotes() { printf("\nNow start up mIRC 603, choose \"Options\", then \"Registration \"" ); printf("\nEnter whatever you want for your name and reg number and now you\n"); printf("are regged.\n\n"); } int main(){ FILE *part1; throwbanner(); part1 = fopen(EXEfile, "r+"); if (part1 == NULL) { printf("%s could not be opened! Are you running this crack in the same\n",EXEfile); printf("directory as %s, and are you sure %s isn't already \n",EXEfile,EXEfile); printf("loaded into memory?\n"); waitforenter(); exit(1); } crackit(off1,part1); fclose(part1); printf("\nPatch sucessfull! \n\n"); waitforenter(); anylastnotes(); waitforenter(); return 0; } VI.Lời Kết _Thế là chúng ta đã đi hết 8 phần đầu tiên của "How to become a cracker". Đáng lẽ tôi đã viết xong Phần Hai "Cracker! Who are You". Nhưng nghĩ đi nghĩ lại thấy rằng nếu viết tut dạy crack nữa thì anh em sẽ nói nhàm, cho nên hacnho quyết định không viết tut dạng này nữa mà sẽ viết từng tut một cho từng soft. Thí dụ đối với soft IconToy thì sẽ có tut Icontoy. Tôi sẽ không hướng dẫn tràn lan nữa mà sẽ gói gọn trong từng tut một để các bạn tiện theo dõi và học hỏi. Xuyên suốt những tut sắp tới đây sẽ có đầy đủ các dạng của crack như Patch, Tìm Serial, make loader, Unpacking, Make keygen v/v Cũng sẽ có những tut nước ngoài tôi sưu tầm về cho anh em đọc tham khảo. Dĩ nhiên là bằng Anh Ngữ. Để tạo hấp dẫn tôi sẽ viết một số crack me hoặc download về sau đó upload để anh em mình cùng crack cho vui để học hỏi thêm một số cách mã hoá và nâng cao tay nghề. _Các tut sẽ được tôi post trong Topic " Tut by member ". Bài viết của hacnho (Xin vui lòng để lại dòng này khi bạn trích dẫn- Chân thành cảm ơn) The End <<< =[Back]= [[<< . text :00 4A 407 0 mov al, bl < Lưu ý .text :00 4A 407 2 pop ebx .text :00 4A 407 3 call loc_4EE297 .text :00 4A 407 8 mov esp, ebp .text :00 4A 407 A pop ebp .text :00 4A 407 B retn 8 < vệt. sang mov al, 01 . >byte: 8A C3 sang B0 01 4. Crack tập tin WinTS: Trong IDA, nhảy tới vị trí lệnh 4A 407 0, nhìn vào thanh status bar nằm ở dưới, ta thấy có 2 số : + 4A 407 0 : là vị trí. Gotoxy (17 ,15 );Writeln('mIRC 603 PaTcH successful !'); Gotoxy (17 ,17 );Writeln('***** More CRaCk, please contact me at *****'); Gotoxy( 20 ,18 ); Writeln; Gotoxy( 20 ,19 ); Writeln('*************************************');