-Để chương trình đẹp mắt đồng thời các nhóm cracker thường thực hiện bản quyền của keygen bằng cách add vào Dialog một hình bimap là biểu tượng của nhóm crack.. Bây giờ màn hình chương t
Trang 1Benina’s TutASM #1 Basic template Keygen
Author: Benina
Tòan bộ code của tut này các bạn download tại link:
http://h1.ripway.com/benina/files/Keygen1.rar
Hôm nay tui sẽ hướng dẫn các bạn cách làm một template Keygen cơ bản trong RadASM
Nói sơ qua về Keygen cho ai chưa biết về nó: Keygen chính là một chương trình nhỏ có tác dụng cho người dùng nhập vào một name user, từ đó nó sẽ tính tóan ra một số serial để đăng ký sử dụng 1 soft nào đó Các cracker trên thế giới hay sử dụng lọai chương trình này để cung cấp cho người sử dụng Vậy giao diện của 1 Keygen về căn bản như sau :
-Thanh tiêu đề là “Keygen- NameSoft” : để xác định chức năng của chương trình là tạo key đăng ký cho soft có tên là NameSoft
-Add một Icon cho chương trình (các nhóm cracker thường add Icon của nhóm crack của mình) -Để chương trình đẹp mắt đồng thời các nhóm cracker thường thực hiện bản quyền của keygen bằng cách add vào Dialog một hình bimap là biểu tượng của nhóm crack
-Một Static là “User:” để báo chức năng của hộp Edit Text theo sau đó cho phép người dùng nhập vào tên user Một Static là “Serial :” để báo chức năng của hộp Edit Text theo sau là hiển thị Serial đã tính tóan được
-Hai hộp Edit Text , một cho phép người dùng nhập vào một tên user, hộp thứ hai hiển thị serial
đã tính tóan
-Hai nút Button là Generate khi nhấn nó sẽ thực hiện tính tóan serial và nút button còn lại là Exit
để thóat chương trình
Các bạn xem hình:
Trang 2có tên là Keygen1 Kế đến ta chuẩn bị 2 file bitmap và icon , copy nó vào thư mục /res của
project chúng ta vừa tạo
Trong cửa sổ Project ta Dclick vào file Keygen1.dlg để bắt đầu tạo giao diện cho Keygen Bây giờ màn hình chương trình của ta như sau:
1.Thay đổi thanh tiêu đề của program:
Trong cửa sổ Properties ta chon Caption và đánh vào tên thanh tiêu đề : “Keygen-NameSoft”
2.Add Icon cho chương trình
Các bạn làm theo tut “Using RadASM tut #1”
-Add resource icon:
Trang 3-Khai báo biến cho Icon trong file Keygen1.Inc tại section data ?
hIcon dd ?
-Trong file Keygen1.Asm ta add thêm lệnh trong section code tại DlgProc phần xử lý thông điệp
WM_INITDIALOG:
invoke LoadIcon,hInstance,500
mov hIcon,eax
invoke SendMessage,hWin,WM_SETICON,NULL,hIcon
giống như hình sau:
Trang 4Bây giờ chúng ta nên kiểm tra bước này xem có lỗi gì xảy ra ko bằng cách nhấn nút “GO” Ok rồi nhé:
3.Add 1 hình biểu tượng cho Keygen:
Dclick vào file Keygen1.dlg để sọan thảo giao diện Bây giờ ta click vào button Image trên thanh toolbar như hình :
Trong giao diện sọan thảo ta click và drap một hình chử nhật như sau:
Trang 5Trong cửa sổ Properties ta thay đổi các mục:
-Mục Type ta đổi thành Bitmap
-Mục Image ta chọn file bmp đã copy vào thư mục /res lúc đầu
Chương trình của ta bây giờ sẽ có dạng sau :
Ta thay đổi chỉnh sửa để image có vị trí như sau:
Trang 6Bây giờ nếu bạn hit vào nút “GO” thì hình ảnh của chúng ta sẽ ko xuất hiện trong chương trình như mong muốn Vì trong resource của chương trình ko có hình bmp này Do đó ta vào menu Project/Resource để add bitmap.Trước hết ta click vào hình Image trong cửa sổ sọan thảo để kick
nó và nhìn vào của sổ Properties để lấy thông tin về ID và Name của Image
Vậy ID=1001 và Name=IDC_IMG1
Trên menu chọn Project/Resource ta thực hiện như hình sau:
Trang 7Sau khi thực hiện xong ta vào file Keygen1.Inc để khai báo biến định nghĩa resource để ta sử dụng sau này nếu cần Đây là một thói quen các bạn nên làm:
Trong section CONST ta khai báo:
Như hình sau:
Bây giờ ta hit GO thử xem Nếu hình bmp chưa xuất hiện trong chương trình thì ta dời hình sang trái cho nó out ra ngòai cửa sổ chương trình của ta 1 chút như sau:
Trang 8Sau đó ta hit nút “GO” lại xem sao OK rồi nhé Bây giờ cho dời hình lại như cũ đi bạn và cứ hit
GO thử coi Nó OK đúng ko?
4 Cài đặt 2 Static:
Click vào button Static trên thanh toolbar để tạo 2 Static
Chọn lần lược các Static và thay đổi Caption thành “User” và “Serial”
Trang 9Như tui đã nói, chúng ta nên có thói quen khai báo biến định nghĩa các item của chương trình trong file Keygen1.Inc để tiện sử dụng sau này Thực hiện các bước tương tự như khai báo Image ở bước trên
Khai báo thêm 2 biến như sau trong file Keygen1.Inc:
5 Cài đặt 2 EditText và 2 Button :
Làm tương tự như trên Trên thanh Toolbar ,button cài đặt các đối tượng EditText và Button là:
Trang 10Trong file Keygen1.Inc ta khai báo các biến định nghĩa các item vừa add:
Giống hình sau:
Bây giờ ta hit “GO” xem sao OH, tốt rồi!
Trang 116 Một số chỉnh sửa thêm:
-Bây giờ ta chọn Dialog của chương trình , vào cửa sổ Properties thay đổi :
-MiniButton thành FALSE
-MaxButton thành FALSE
để làm mất hiệu lực 2 button này trên thanh tiêu đề chương trình
-Kế đến ta chọn Edit Text dùng để chứa Serial là IDC_EDT2 và thay đổi Properties của nó tại mục Locked thành TRUE, mục đích ko cho người dùng sọan thảo Edit Text này
7.Viết code cho các Button:
* Code cho Button &Exit:
Trong phần xử lý thông điệp WM_COMMAND của thủ tục DlgProc ta đánh vào các lệnh sau:
; -
; -
.if eax==IDC_BTN2
invoke EndDialog,hWin,0
endif
; -
Như hình sau:
Như vậy , khi ta nhấn button &Exit, code trên sẽ thực hiện hàm EndDialog để kết thúc Dialog
* Code cho Button &Generate:
Trước tiên trong file Keygen1.Inc ta khai báo 2 biến tòan cục để chứa Name và Serial tạo ra: Đó
Trang 12Các bạn xem hình sau:
Trong file Keygen1.ASM trong phần xử lý thông điệp WM_COMMAND ta thêm phần code sau đây:
.elseif eax==IDC_BTN1
INVOKE GetDlgItemText, hWin,IDC_EDT1, ADDR sName, SIZEOF sName
invoke KeyProc
INVOKE SetDlgItemText, hWin,IDC_EDT2, ADDR sSerial
.endif
Hình minh họa:
Theo code trên, đầu tiên ta lấy chuổi Name người dùng đánh vào trong IDC_EDT1 rồi lưu vào
biến sName bằng hàm GetDlgItemText
Kế đến thực hiện hàm tạo key là KeyProc , hàm này tính tóan key dựa trên sName nhập vào Giá
trị trả về của hàm luôn được lưu trong biến sSerial được xử lý trong thủ tục hàm của nó
Ta cần khai báo prototye của hàm KeyProc trong file Keygen1.Inc như sau:
Trang 13KeyProc PROTO
Xem hình sau:
Bây giờ ta viết thủ tục KeyProc trong file Keygen1.ASM tại vị trí sau cùng của code (nhưng
trước lệnh end start):
KeyProc proc
invoke lstrcpy,ADDR sSerial,ADDR sName
ret
KeyProc endp
Thủ tục này chỉ có chức năng copy string trong biến sName , và gán vào biến sSerial
Và cuối cùng ta dùng hàm SetDlgItemText để gán sSerial cho Edit Text hiển thị Serial
Đây là tòan bộ code ta vừa sọan thảo
Trang 14Bây giờ bạn hảy hit nút GO và thử lại mọi thứ xem sao
Ổn chứ các bạn!
Sau khi biên dịch xong chương trình của ta cực nhỏ , chỉ có 96KB mà thôi
Tòan bộ code của tut này các bạn download tại link:
http://h1.ripway.com/benina/files/Keygen1.rar
Tut đến đây xin hết Chắc chắn sẽ ko khỏi sai sót Mong các bạn thông cảm và chỉ điểm
Hẹn gặp lại trong các tuts sau
Benina 26/12/2005
Update 26/12/2005
Mail: benina@walla.com
(Không đồng ý bất kỳ ai sử dụng tài liệu này cho mục đích thương mại nếu ko được phép của người dịch)