62815


引数のポインタ渡しについてのプログラムなのですが、パソコンに入っているスーパーセキュリティというセキュリティソフトに引っかかってしまいました。参考書通りのプログラムなのでプログラム自体の問題かセキュリティソフトの問題なのかわかりません。プログラムの問題でウイルスが検出されるということがあるのかお教え願います。

[code]

    #include <stdio.h>
    
    void myFunc1(int a) {
        a = a * 2;
        printf("myFunc1関数を実行しました\n");
        printf("仮引数aの値は%dです\n", a);
        return;
    
    }
    
    void myFunc2(int *a) {
        *a = *a * 2;
        printf("myFunc2関数を実行しました\n");
        printf("仮引数aの値は%dです\n", *a);
        return;
    }
    
    int main(void) {
        int x = 1; 
        int y = 1;
    
        myFunc1(x);
        myFunc2(&y);
    
        printf("変数xの値は%dです\n", x);
        printf("変数yの値は%dです\n", y);
    
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2020-02-05T06:45:05.610
62801
2021-04-15T08:23:47.700
2020-02-10T01:10:19.193
3060
34680
question
c security
自作のプログラムがウイルスとして検出されてしまうのはなぜですか？


短い答え：今回のこの件は誤検出です。無視してよいですが、下記設定をしておくとセキュリティソフトの誤検出に悩まされなくてよいでしょう。

長い答え：

> プログラムの問題でウイルスが検出されるということがあるのか

それはもちろん「ウイルスを作っている」のであればビルドしてできた実行形式ファイルがリアルタイム検索で即時ウイルス認定されることはあるでしょう。提示のソースコードには「ウイルス」扱いされる要素は一つも含まれていないので誤検出です。

セキュリティソフトも人間が作っているので完璧ではなく、よってフツーに誤検知があります。オイラも過去に何度も誤検知されたことがあります。またリアルタイム検索とビルドシステムが喧嘩してうまくいかないこともあります。セキュリティソフトの検疫エンジン更新で挙動が変わることもしょっちゅうです。

例： [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") の gcc
が作る実行形式ファイルのデフォルト名は `a.exe` ですが、これを「トラップドア」 (コマンドプロンプトで `C>a`
と誤入力するだけで起動する＝操作員の単純ミスで起動し感染することを狙ったソフト）とされた。中身は `int main() {}` のみ。

例： gcc-9.2.0 ソースコードを cygwin64 上でコンパイルしようとすると、ビルド中にウイルスバスター Corp
が脅威検出といって失敗させてくれる

例： `cvs checkout` すると `CVS/Entries` の書き換えとリアルタイム検索とが衝突してソースコードの取得に失敗する

提示ソースコードにいわゆる「脅威」はありませんので心配いりません。むしろ厳密規格合致なとても良いお題だと思います。

PC
用ソフトの開発の際には、開発用に使うディレクトリはいわゆるリアルタイム検索の対象外にしておきましょう。開発途中のソフトウエアがバグっている＝セキュリティソフトから見て脅威アリと判断されるのはごく普通のことです。それをいちいち検疫されてしまうとデバッグできません。一通りバグがなくなって対外リリースの前には一応検査してみるとよいです。

具体的にどう操作するとよいかはセキュリティソフトによって違うのでご自分で確認してください。


CC BY-SA 4.0
2020-02-06T01:21:23.047
62815
2020-02-06T06:41:05.323
2020-02-06T06:41:05.323
8589
8589
62801
answer


まず、回答としては、「それは誤検知なのでスーパーセキュリティなるソフトのバグです。」

で、何か「よくある事だから気にするな」の様に勘違いして、自分が悪いかのように思われる人がいるとかわいそうなのではっきり意見を述べておきます。

ウィルス対策用のソフトウエアとは「損害を与えるような悪意のあるソフトウエアから環境を守る」のが仕事です。  
もし、一般のソフトウエアを悪意のあるソフトウエアだと誤って検知するような結果は、言わば逆に損害をあたえているわけですから、それは一般には「あってはならない」瑕疵です。  
ただし、「誤検知するので気を付けてね」の様な商品としてややみっともない説明がついている場合を除きますけど。


CC BY-SA 4.0
2020-02-10T01:27:53.287
62913
2020-02-10T01:27:53.287
3793
62801
answer


myFunc1が引数のスタックのaに値を書いています。おそらくこれが原因かと


CC BY-SA 4.0
2021-04-15T08:23:47.700
75302
2021-04-15T08:23:47.700
44827
62801
answer