Trao đổi với tôi

http://www.buidao.com

10/28/09

[Virus] Để AutoIt không bị Bkav báo là virus

Để AutoIt không bị Bkav báo là virus, vậy chúng ta tìm hiểu xem cách BKAV nhận diện ra một chương trình AutoIT là gì?. Thường cách nhận diện là một chuổi bytes giống nhau (ta thường gọi là signature) mà bất kỳ chương trình AutoIT nào sau khi biên dịch thành file exe đều có. Muốn tìm được chuổi bytes này thường chúng ta dùng phương pháp ..."mò". Vậy mò bằng cách nào ?. Chúng ta thử biên dịch các chương trình AutoIT ra file exe và so sánh tuần tự xem 2 file exe dịch từ AutoIT có các bytes nào giống nhau tại offset nào. Cứ mò mò như vậy từ từ thì có thể tìm ra được signature. (Đây là ngu ý của tui, các bạn có phương pháp nào thì share nhe, cùng học hỏi).
Tôi ko biết chính xác BKAV nhận diện như thế nào. Nhưng lúc trước có 1 bài viết trên mạng cho rằng khi thay icon của file exe dịch từ AutoIT thì có thể qua mặt được BKAV. Vậy suy ra rằng, khi biên dịch chương trình AutoIT thì các chương trình exe sau khi biên dịch đều có icon giống nhau (các bytes chứa icon trong resource của file exe giống nhau). Vì vậy BKAV nhận diện các chương trình AutoIT qua signature là các bytes icon này. (Đây là suy luận, ko biết chính xác nhe, chỉ đưa ra giúp lý luận mà thôi).
Để BKAV không nhận diện được là virus?, chúng ta có nhiều cách , cách đơn giản là dùng các chương trình packer, protector nén (pack) file exe, hay protect file exe lại để phá bỏ signature nhận diện đi. Thậm chí tôi có viết 1 bài dùng WINRAR để qua mặt BKAV. Còn siêu nữa thì sau khi tìm ra signature nhận diện mà BKAV sử dụng thì với kiến thức file PE, asm bạn có thể phá signature "bằng tay " bằng cách dùng tool edit file PE.
Nếu bạn nào chưa biết pack, unpack là gì thì tôi xin nói sơ qua để các bạn tham khảo:

Để giải thích về unpack là gì, tôi xin nói qua 1 file bị pack (nén). Để chống lại các cracker, các coder viết ra 1 chương trình packer, nó có nhiệm vụ nén file .exe lại thành 1 file mới cũng có đuôi là .exe ( khác với các file nén thông thường là .zip và .rar). Vì là file .exe nên nó có thể tự động run và khi run nó cũng tự động giải nén file lúc đầu bị pack vào memory. Sau khi giải nén xong, nó chuyển điều khiển control đến vùng memory chứa phần code giải nén và cho thực thi . Điểm đầu tiên trong memory giải nén sẽ thực thi gọi là OEP (Original Entry Point) . Các bạn nên phân biệt OEP và EP. EP là điểm đầu tiên trong memory mà Windows chuyển quyền điều khiển cho file exe thực thi sau khi Windows mapping file .exe vào vùng nhớ . Vậy EP là nói về Entry Point của file sau khi pack xong, còn OEP là Entry Point của file gốc bị pack sau khi được giải nén vào memory.

Các cracker cũng ko chịu thua các coder, để crack được, họ tìm cách xây dựng lại một file .exe từ code sau khi giải nén trong memory. Hành động này gọi là unpack. Vậy unpack tức là sau khi file pack giải nén vào memory và chuyển điều khiển đến OEP thì ta cho chương trình dừng lại tại OEP ( ko thực thi lệnh tại OEP) và copy vùng nhớ giải nén ra thành 1 file .exe. hành động copy này gọi là DUMP. Sau khi dump vùng nhớ ra thành file .exe, file này vẫn chưa run được, ta cần phải fix IAT (IAT là Import Address Table :bảng địa chỉ hàm nhập khẩu), các bạn sẽ tìm hiểu đề tài này sau, các bạn chỉ biết fix IAT tức là sửa chửa bảng quản lý các hàm “nhập khẩu” từ các file thư viện .dll thì file sau khi dump mới run được.

Còn protector là gì thì để các bạn khác cho ý kiến cho sinh động
Vài lời tham gia diễn đàn, xin các bạn đừng cười
Benina

Ps:
Pack phải hỗ trợ overlay vì code của autoit nằm ở phần overlay (snowflake)