私は Android アンチウイルスを開発しようとしていますが、それを行うための可能な方法を見つけようとしています。
これまでのところ、唯一の方法の 1 つは、PackageManagerを使用して、インストールされているアプリケーションとそのパッケージ名のリストを取得し、それをブラックリストと比較することであることがわかりました。これを回避するより良い方法はありますか?
ルートとして実行するプロセス、またはそれ以上の方法で実行するプロセスを開発します。プロセスとファイルシステム ファイルを監査する Linux カーネル モジュールです。
完全にユーザーランドの構成としてアンチウイルスを実装する際の問題は、通常、マルウェアがより高い特権で実行されるため、検出を簡単に回避できることです。これが、ルートキット感染への対処が非常に困難な理由です (「軌道上から核攻撃するだけです。確かに」)。
次の問題は、virii のデータベースを維持することです。1990 年代のオリジナルの AV システムは、既知のマルウェアのハッシュのデータベースを保持していました。問題は、ポリモーフィックな実行可能ファイル、他のプログラムに自分自身を添付して拡散するもの、または Word マクロなどに対して防御しないことです。別の方法は、ヒューリスティック ベースのシステムを開発することです。プログラムの動作を簡単に分析できる VM ベースのシステム (マルウェアに使用されるシステム関数の呼び出しを見つけるなど) では、これを回避できるかもしれませんが、優れたウイルスは「ネイティブ」言語で記述され、検出を行います。不可能ではないにしても非常に困難です (Norton Anti-virus を使用していたとき、彼らの "Bloodhound" ヒューリスティック システムは機能せず、常にあまりにも多くの誤検知を生成していました)。
最後に、そのようなデータベースを調査して維持するという膨大なタスクがあります。これが、大規模なセキュリティ企業 (Symantic、McAfee、NOD、Microsoft など) だけが AV プログラムを開発する理由です。
私があなただったら、あなたが時間を無駄にする前に今すぐあきらめます。これが教育的な演習である場合、マルウェアを阻止しようとするシステムを作成するのではなく、独自のウイルスを作成することによって、マルウェアについてより多くを学ぶことができます。