2010-11-14 37 views
5

Tôi phải lập trình một động cơ đa hình đơn giản. Tôi sử dụng Linux (32-bit) và tôi có thể mã trong lắp ráp và c. Tôi không biết bắt đầu như thế nào.Động cơ đa hình đơn giản

Bạn có thể cho tôi một giản đồ để xây dựng một công cụ như vậy không? Ý tưởng của tôi là để thực hiện một chương trình rằng:

  1. đọc phần mã của một tập tin
  2. mã hóa nó trong một bộ đệm,
  3. làm không gian ngay từ đầu (là nó có thể?) để thêm các thói quen giải mã
  4. viết bộ đệm mới bên trong phần mã của chương trình.

Có đúng không? Nó có phản ánh hoạt động của một động cơ như vậy không?

+0

Hướng dẫn có vẻ tốt: https://www.pelock.com/articles/polymorphic-encryption-algorithms. Đã được đăng dưới dạng câu trả lời chỉ dành cho liên kết bởi @Twistd. –

Trả lời

3

Giản đồ cơ bản hoàn toàn khác với lược đồ bạn đã mô tả. Thông thường chỉ có cơ thể virus được mã hóa, không phải là toàn bộ phần mã. Hãy xem xét một loại vi-rút đơn giản kéo dài phần mã, hoặc tạo ra một phần mới cho phần thân của nó. Bây giờ, để làm cho nó đa hình, bạn phải thêm mã hóa và làm cho đoạn code decryptor là không liên tục, ví dụ:

1) chèn nops ngẫu nhiên (nop, add reg, 0, push reg; pop reg, vv)

2) thay đổi dòng chảy chương trình với (jmp next, clc; jc next, vv)

3) sử dụng hướng dẫn với hiệu ứng số học cùng (add eax, 3 ->add eax, 9; sub eax, 6)

đa hình có nghĩa là nó có thể có một số cố định của mã hóa , do đó, cách đơn giản nhất để tạo một mã là phá vỡ mã giải mã trong nhiều khối và cung cấp một số mã hóa có cùng độ dài cho mỗi mã.

EDIT: Có, nó là một phần của cơ thể vi-rút. Để sử dụng nó, bạn đặt tất cả các "viên gạch" này vào trong cơ thể vi-rút và khi một tệp khác bị nhiễm, bạn tạo một phiên bản ngẫu nhiên của trình giải mã cho nó.

+0

cảm ơn câu trả lời này! Nó đã cho tôi một bức tranh đẹp về quy trình. Vì vậy, động cơ là một phần của virus không phải cái gì đó có sự tồn tại độc lập của riêng mình (như một chương trình tôi có ý nghĩa)? –

Các vấn đề liên quan