Xác lập mật khẩu cho chương trình dạng tệp có đuôi .COM” - Pdf 19

Lời nói đầu
Ngày nay công nghiệp máy tính đã trở thành mũi nhọn khi bớc vào kỷ
nguyên kỹ thuật hiện đại.Với tốc độ tăng trởng đáng kể những sản phẩm liên
quan đến máy tính từ phần mềm tới các thiết bị ghép nối.Việt Nam cũng đang
góp phần vào sự phát triển của công nghệ máy tính, chuyển mình dần từ thị tr-
ờng tiêu thụ các sản phẩm máy tính thành nơi phát triển công nghệ. Bên cạnh
đó công nghệ phần mềm của Việt Nam có nhiều bớc tiến triển góp phần thúc
đẩy sự phát triển của nền công ngiệp máy tính nói riêng và nền kinh tế nói
riêng.
Đã có rất nhiều ngôn ngữ lập trình đợc sử dụng để tạo nên sự phát triển
của nền công nghệ phần mềm. Một trong những ngôn ngữ lập trình xuất hiện
sớm nhất đó là ngôn ngữ lập trình Assembler. Đây là một trong những ngôn
ngữ lập trình bậc thấp thờng đợc sử dụng để lập trình hệ thống, nó có một u
điểm mà không một ngôn ngữ lập trình nào bì kịp, bởi lẽ nó tạo ra những ch-
ơng trình có dung lợng rất nhỏ, nó thờng đợc sử dụng để làm các chơng trình
quản lý trong công nghiệp ,diệt vius, tạo vius, tạo hệ điều hành, tạo mật
khẩu
Hiện nay hầu hết các chơng trình khi viết xong đều đợc xác lập mật khẩu
để bảo mật dữ liệu
Trong thời gian học tập tại khoá học 1996 2001 của tr ờng Đại học
Mở Hà Nội tôi đã đợc đào tạo một cách có hệ thống và tiếp thu những kiến
thức về ngôn ngữ Assembler Để kết thúc khoá học tôi đợc nhận và hoàn thành
đề tài Xác lập mật khẩu cho ch ơng trình dạng tệp có đuôi .COM .
Mục tiêu của chơng trình:
-Trớc tiên chạy chơng trình xác lập mật khẩu với những yêu cầu nhập
tên tệp thực hiện dạng .COM
-Sau đó nhập mật khẩu; Sau khi tệp .COM đã xác lập mật khẩu thì từ
đó trở đi chơng trình chỉ đợc chạy khi vào đúng mật khẩu đã xác lập
Chơng I
Cơ sở lý thuyết
Các file COM đợc lu trên đĩa là hình ảnh chính xác của nội dung bộ nhớ

thúc chơng trình. Nó kết thúc chơng trình và gọi một chơng trình thông báo, ch-
ơng trình thông báo này cho kết quả dới dạng một giá trị số . DOS không đặt ở
đây một giá trị cố định nào, nhng việc truyền giá trị chỉ có ý nghĩa nếu chơng
trình đợc goi và chơng trình gọi đều gán cho giá trị đó một ý nghĩa nh nhau. Thí
dụ, một khả năng hay đợc dùng là thông báo cho chơng trình gọi, thông qua giá
trị 0, rằng chơng trình đợc gọi kết thúc bình thờng, trong khi mọi giá trị khác
thông báo sự xuất hiện lỗi trong khi thực hiện chơng trình đợc gọi. Một ngời lập
trình ngôn ngữ bậc cao không cần phải quan tâm đến việc xây dựng một chơng
trình COM, vì trình biên dịch (compiler) sẽ làm thay mọi công việc cần thiết.
Ngợc lại, một ngời lập trình Assembler phải quan tâm đến nhiều vấn đè khi xây
dựng một chơng trình COM.
Chơng trình COM đợc lu dới dạng phản ánh chính xác nội dung bộ nhớ
RAM sau khi dã đợc nạp. DOS không nạp chơng trình này vào một địa chỉ xác
định trớc. Chúng có thể đợc nạp vào một địa chỉ bất kỳ(là bội nguyên của 16).
Do vậy, các chơng trình COM không nhất thiết phải chứa địa chỉ đoạn rõ ràng.
Nếu địa chỉ offset luôn dựa vào đoạn hiện thời và nó chỉ một địa chỉ bất kỳ
trong đoạn đó, thì vấn đề lại không phải nh vậy đối với các địa chỉ đoạn, vì các
địa chỉ này xác định các đoạn cố định cách nhau 16 byte.
Kích thớc một chơng trình COM bị hạn chế là 64KB nên ngời lập trình bị
giới hạn chỉ đợc dùng các lệnh NEAR, các lệnh này chỉ thay đổi địa chỉ offset
của con trỏ lệnh. Các lệnh FAR không đợc phép dùng trong chơng trình bởi vì
tất cả các lệnh FAR cho phép tiếp tục chơng trình ở một chỗ khác của chơng
trình bằng cách xác định lại không chỉ địa chỉ offset mà cả địa chỉ đoạn của con
trỏ lệnh (CS:IP). Do đó các giá trị không đổi có thể đợc nạp vào một thanh ghi ,
thí dụ nh địa chỉ đoạn của RAM màn hình.Nhng không thể nạp một địa chỉ
đoạn của các lệnh hay dữ liệu của chơng trình COM vào một thanh ghi đoạn.
Bởi lẽ các địa chỉ này thay đổi mỗi khi chơng trình đợc gọi chạy. Một chơng
trình COM không đợc chứa nhiều đoạn và các biến phải nằm trong một đoạn
duy nhất-đoạn mã lệnh. Vì chỉ có một đoạn, nên DOS có thể nạp chơng trình
vào các vị trí khác nhau, tuỳ theo tình trạng của RAM còn tự do. Các trơng trình

thanh ghi đoạn có giá trị khác nhau trong quá trình thực hiện chơng trình EXE.
Các file COM lu trên dĩa mềm hay đĩa cứng là hình ảnh chính xác của RAM
khi thực hiện chơng trình, trong khi các file EXE lại đợc lu trên đĩa theo một
cách đợc mã hoá.

Chơng II
Giới thiệu chơng trình
Chơng trình đợc chia làm 2 phần:
Phần Cài dặt (INSTALL):
Phần này thực hiện các chức năng sau:
-Vào tên tệp có dạng .COM cần cài mật khẩu
-Kiểm tra liệu tệp .COM đó trớc đã đợc xác lập mật khẩu hay cha?
. Nếu tệp .COM đó đã xác lập mật khẩu rồi thì 9 byte cuối của tệp .COM
mới (đợc hình thành bằng nội dung tệp .COM + nội dung đoạn chơng trình gộp
vào thêm sau) sẽ chứa chữ "PROTECTED". Không tiến hành cài đặt và kết thúc
phần chơng trình cài đặt.
. Nếu tệp .COM cha đợc xác lập mật khẩu thì 9 byte cuối của tệp .COM đó
không chữ Protected. Sẽ tiến hành nhập mật khẩu( 2lần : lần đầu nhập mật khẩu
vào, kiểm tra (verify) liệu nhớ đúng mật khẩu hay cha bằng cách nhập mật khẩu
lần nữa và kiểm tra mật khẩu giữa 2 lần nhập?). Đọc 3 byte đầu của tệp .COM
và cất nội dung 3byte đó vào một biến nhớ (để sau này có thể phục hồi đợc).
Tính độ dài của các byte tệp .COM cũ và cất bớc nhảy đó vào biến 3 byte có tên
JMPCODE: byte 1 là 0e9h - mã của lệnh JMP và 2 byte sau là bớc nhảy). Sau
đó tiến hành ghi thêm đoạn chơng trình cần gộp vào tệp .COM.
Bắt đầu
Vào tệp
dạng
.COM
Lu đồ thuật toán Xác
lập mật khẩu cho

gộp thêm vào sẽ tiến hành các chức năng sau:
- Yêu cầu nhập mật khẩu.
- Kiểm tra mật khẩu vừa nhập có đúng với mật khẩu đã xác lập hay cha?
. Nếu không đúng thì không cho chơng trình chạy và thoát.
. Còn nếu đúng mật khẩu thì hồi phục lại phần mã ở 3 byte đầu của tệp .COM
(trớc khi cài đặt mật khẩu), đa phần địa chỉ OFFSET về 100h và tiếp tục chạy
phần chơng trình .COM
Sai
Start
Nhập mật khẩu
Kiểm tra
mật khẩu
End
Khôi phục lại
chơng trình
Chạy chơng trình *.COM
Đúng
Lu đồ thuật toán
FIle.com đ đã ợc xác lập
mật khẩu
Toàn bộ ch ơng trình sẽ có dạng sau:
; Tạo Macro cho hiện ra màn hình một xâu ký tự
HienString macro xau
mov dx, offset xau
mov ah,9 ;Nap so ham vao AH
int 21h
endm ;Kết thúc macro
CODE segment
assume CS:CODE, DS:CODE, ES:CODE, SS:CODE
ORG 100h

mov CX,WORD PTR[BX] ; CX chua do dai cua KEYWORD (mat
;khau)
inc BX
inc BX ;BX tro den vung nho KEYWORD
mov DI,SI
add DI,53 ; DI tro den bien CHFLAG
STAR_CHECK:
mov AH,8 ; Nhap cac ky tu mat khau(khong hien)
int 21h
cmp AL,0dh
jz END_CHECK ;Neu la ENTER ket thuc nhap mat khau
jcxz WRONG
cmp AL,BYTE PTR[BX] ;SS voi cac ky tu mat khau da xac lap
jnz WRONG ; Neu sai thi nhay
mov DL,'*' ; Hien dau'*' ra man hinh
mov AH,2
int 21h
inc BX ; Tro den byte tiep theo cua KEYWORD
dec CX ; Giam so luong byte cua bien KEYWORD


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status