2010-06-17 32 views
5

Tôi đang chạy một chương trình C++ rất đơn giản:AVG Truy cập cảnh báo bị từ chối khi chạy ++ chương trình C đơn giản nhất

#include <list> 
#include <vector> 

int main(int argc, char **args) { 

} 

tôi đi đến dấu nhắc lệnh và biên dịch và chạy:

g++ whatever.cpp 
a.exe 

Thông thường các công trình này bình thường. Nó biên dịch tốt, nhưng khi tôi chạy nó nói Access Denied và AVG bật lên nói với tôi rằng một mối đe dọa đã được phát hiện Trojan Horse Generic 17.CKZT. Tôi đã thử biên dịch lại bằng cách sử dụng Microsoft Compiler (cl.exe) và nó chạy tiền phạt. Vì vậy, tôi đã quay lại và thêm:

#include <iostream> 

được biên dịch bằng g ++ và chạy. Lần này nó hoạt động tốt.

Vì vậy, bất kỳ ai cũng có thể cho tôi biết lý do AVG báo cáo phương pháp chính trống như một con ngựa trojan nhưng nếu tiêu đề iostream được bao gồm thì không?

UPDATE:

tôi đã thêm một tuyên bố trở lại với phương pháp chính và bây giờ tôi thấy rằng tôi chỉ nhận được lỗi nếu tôi trở về 0. Bất kỳ giá trị trả về khác và có vẻ như để làm việc tốt.

Điều gì đang xảy ra ở đây?

+3

Theo kinh nghiệm của tôi, phần mềm chống vi-rút là một đề xuất bị mất nói chung và * hoàn toàn * không được chấp nhận trên máy phát triển. –

+0

Hơi chủ đề, nhưng từ những gì tôi hiểu, hiện tại là Avast! Antivirus và NOD32 có động cơ heuristic tốt hơn so với AVG. – greyfade

+0

Câu trả lời tuyệt vời ở đây là lý do tại sao chương trình C++ của bạn được gắn nhãn vi-rút bằng AVG: http://stackoverflow.com/a/17431911/445131 –

Trả lời

4

You're not the first person to encounter false positives by antivirus software.

gì có thể xảy ra là các công nghệ tự động diệt virus vấp lên trên các thư viện runtime tiêu chuẩn hiện trong các chương trình của bạn, vì phần mềm độc hại sử dụng chúng là tốt. Tất nhiên, phần mềm hợp pháp cũng sử dụng chúng! Thực tế là nó không đi lên trên iostream có thể có nghĩa là iostream không phải là rất phổ biến giữa các nhà văn phần mềm độc hại.

+0

Cảm ơn bạn, vì tôi mới bắt đầu bằng C++ nên biết rằng một lỗi như vậy không phải vì điều gì đó ngu ngốc mà tôi đã làm. – DaveJohnston

+1

LOL. Không. Đó là vì thứ gì đó ngu ngốc mà * một người khác * đã làm. Và nó không phải là một vấn đề chính xác cho một người mới bắt đầu. Cảm ơn Chúa vì StackOverflow. –

1

Nếu bạn chỉ muốn khắc phục sự cố nhanh nhất có thể,
chỉ cần đặt thư mục của các tệp thi hành vào danh sách trắng của AVG.

bước ưa thích của tôi:

  1. Để an toàn, bạn nên gửi thực thi của bạn
    để một virus trực tuyến/máy quét phần mềm độc hại như thế này:
    • www.virustotal.com: VirusTotal - miễn phí trực tuyến Quét vi-rút và phần mềm độc hại
    • virusscan.jotti.org/en: Quét phần mềm độc hại của Jotti

  2. nếu họ báo cáo 'dương tính giả', sau đó chèn đường dẫn của file thực thi biên soạn
    vào AVG của whitelist, vì vậy nó không quét thư mục đó. Tôi không tương tác với AVG,
    nhưng mọi antivirus đều có tùy chọn loại trừ tệp khỏi quá trình quét.

  3. Nếu bạn đủ can đảm, hãy gỡ lỗi tệp thực thi và tìm cuộc gọi gây ra.

  4. Một giải pháp thay thế có thể để ảo hóa hệ thống linux nhẹ,
    cài đặt gcc (với g ++, tất nhiên) vào nó, và sử dụng rằng "g ++ môi trường chuyên"
    để phát triển ứng dụng dòng lệnh của bạn.


// Bước 1 là một tổng hợp của this conversation.
// Nếu bạn gửi cho tôi nguồn và tệp thực thi 'bị nhiễm' mà bạn đã biên soạn, thì tôi sẽ kiểm tra.
// Mất tích return trong hàm (C++) main có nghĩa là returns 0.

+0

Câu trả lời hay, nhưng điều này có vẻ như cực kỳ quá mức đối với câu hỏi được hỏi. – Akusete

+0

:) vâng, bạn có thể đúng .. nhưng chính xác những gì có thể quyến rũ những thứ "độc hại"? điều gì tạo ra hiệu ứng như vậy thông qua #include ? nó là gì? Hay đây là một câu hỏi khác? – ch0kee

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