Làm thế nào để tạo được thư mục có tên là CON và sử dụng được thư mục này. Nếu ta tạo được thư mục này thì chỉ có ta mới là người sử dụng được nó mà thôi. Khó hiểu quá phải không các bạn. Mình sẽ chỉ cho các bạn cách làm như sau:
- Đầu tiên, khi hệ điều hành khởi động máy sẽ load tất cả các lệnh nội trú của DOS vào trong bộ nhớ tại địa chỉ Segment:Offet là 00000:00000 với kích thước là 65535 byte. Vì tên thư mục là CON nên trùng với tên từ khóa cuả lệnh COPY CON, do do máy sẽ báo lỗi nếu ta tạo như mục trùng tên.
- Vậy thủ thuật đơn giả là ta sẽ quét vùng nhớ này và tìm từ khoá CON thay bằng một từ nào khác (vd: XON, DON, COP...), nếu thành công ta sẽ tạo được thư mục CON và lệnh COPY CON của hệ thống bây giờ sẽ là COPY + tên do bạn đặt ra (COn,XON, COP...). Lưu ý là khi thư mục CON sẽ được sử dụng cho đến khi bạn tắt máy. Khi khởi động lại thì sẽ không sử dụng được nữa và ta phải chạy lại đoạn chương trình thay thế như trên mới sử dụng được. Và việc khoá này chỉ có tác dụng khi thao tác trên DOS, trên Windows sẽ không có tác dụng.
Khoa thu muc
//////////////////////////////////////////////////////////////
// Chuong trinh tao va su dung thu muc CON tren moi truong DOS.
// Chuong trinh khong co tac dung tren moi truong Windows.
// Copyright by quyjupiter
// Email: quyjupiter@yahoo.com
//////////////////////////////////////////////////////////////
#include
#include
//////////////////////////////////////////////////////////////
// Tim chuoi bat dau la CO + UnLock va thay bang CO + mLock
//////////////////////////////////////////////////////////////
void LockDirectory(unsigned char mLock, unsigned char UnLock)
{
asm {
mov BX,0
mov ES,BX
mov AL,mLock //Tim chuoi CO + noi dung AH
mov AH,UnLock //Thay bang CO + noi dung AL
}
Lap:
asm {
cmp byte ptr ES:[BX],' C'
jne Tiep
cmp byte ptr ES:[BX+1],' O'
jne Tiep
cmp byte ptr ES:[BX+2],AH
jne Tiep
mov byte ptr ES:[BX+2],AL
}
Tiep:
asm {
inc BX
cmp BX,65533
jne Lap
}
return;
}
//////////////////////////////////////////////////////////////
void main(void)
{
clrscr();
unsigned char c;
do {
clrscr();
printf(" CHUONG TRINH TAO KHOA THU MUC.\n" );
printf(" 1. Khoa thu muc.\n" );
printf(" 2. Mo khoa thu muc.\n" );
printf(" 3. Thoat\n" );
printf(" --> Chon (1-3):" );
do {
c=getch();
if (c==' 3' ) return;
if (c>=' 1' && c<=' 3' ) break;
} while (1);
if (c==' 1' )
{
LockDirectory(' N' ,' P' );// Doi chuoi COP thanh chuoi CON
printf(" \nThu muc CON da duoc khoa." );
}
else {
LockDirectory(' P' ,' N' );// Doi chuoi CON thanh chuoi COP
printf(" \nDa mo khoa thu muc CON.\n" );
textcolor(10);
cprintf(" Warning: Lenh COPY CON cua DOS duoc thay bang lenh COPY COP." );
textcolor(7);
}
getch();
}while (1);
}
- Đầu tiên, khi hệ điều hành khởi động máy sẽ load tất cả các lệnh nội trú của DOS vào trong bộ nhớ tại địa chỉ Segment:Offet là 00000:00000 với kích thước là 65535 byte. Vì tên thư mục là CON nên trùng với tên từ khóa cuả lệnh COPY CON, do do máy sẽ báo lỗi nếu ta tạo như mục trùng tên.
- Vậy thủ thuật đơn giả là ta sẽ quét vùng nhớ này và tìm từ khoá CON thay bằng một từ nào khác (vd: XON, DON, COP...), nếu thành công ta sẽ tạo được thư mục CON và lệnh COPY CON của hệ thống bây giờ sẽ là COPY + tên do bạn đặt ra (COn,XON, COP...). Lưu ý là khi thư mục CON sẽ được sử dụng cho đến khi bạn tắt máy. Khi khởi động lại thì sẽ không sử dụng được nữa và ta phải chạy lại đoạn chương trình thay thế như trên mới sử dụng được. Và việc khoá này chỉ có tác dụng khi thao tác trên DOS, trên Windows sẽ không có tác dụng.
Khoa thu muc
//////////////////////////////////////////////////////////////
// Chuong trinh tao va su dung thu muc CON tren moi truong DOS.
// Chuong trinh khong co tac dung tren moi truong Windows.
// Copyright by quyjupiter
// Email: quyjupiter@yahoo.com
//////////////////////////////////////////////////////////////
#include
#include
//////////////////////////////////////////////////////////////
// Tim chuoi bat dau la CO + UnLock va thay bang CO + mLock
//////////////////////////////////////////////////////////////
void LockDirectory(unsigned char mLock, unsigned char UnLock)
{
asm {
mov BX,0
mov ES,BX
mov AL,mLock //Tim chuoi CO + noi dung AH
mov AH,UnLock //Thay bang CO + noi dung AL
}
Lap:
asm {
cmp byte ptr ES:[BX],' C'
jne Tiep
cmp byte ptr ES:[BX+1],' O'
jne Tiep
cmp byte ptr ES:[BX+2],AH
jne Tiep
mov byte ptr ES:[BX+2],AL
}
Tiep:
asm {
inc BX
cmp BX,65533
jne Lap
}
return;
}
//////////////////////////////////////////////////////////////
void main(void)
{
clrscr();
unsigned char c;
do {
clrscr();
printf(" CHUONG TRINH TAO KHOA THU MUC.\n" );
printf(" 1. Khoa thu muc.\n" );
printf(" 2. Mo khoa thu muc.\n" );
printf(" 3. Thoat\n" );
printf(" --> Chon (1-3):" );
do {
c=getch();
if (c==' 3' ) return;
if (c>=' 1' && c<=' 3' ) break;
} while (1);
if (c==' 1' )
{
LockDirectory(' N' ,' P' );// Doi chuoi COP thanh chuoi CON
printf(" \nThu muc CON da duoc khoa." );
}
else {
LockDirectory(' P' ,' N' );// Doi chuoi CON thanh chuoi COP
printf(" \nDa mo khoa thu muc CON.\n" );
textcolor(10);
cprintf(" Warning: Lenh COPY CON cua DOS duoc thay bang lenh COPY COP." );
textcolor(7);
}
getch();
}while (1);
}