1つの検査だけで「安全」とは言い切れません。 まず配布元と公式のSHA-256を確認し、Android SDKのapksignerで署名を検証して証明書指紋を信頼できる基準値と比べます。権限、スキャン結果、Play Protectも重ね、出所や指紋を確認できないAPKは入れないのが停止条件です。
30秒で判断する:1つでも当てはまればインストールを止める
野良APKは、Google Play以外のWebサイト、ファイル共有、メールなどから取得するAPKを指す通称です。野良APKがすべて悪意を持つわけではありませんが、ストア側の審査や配布経路に代わる根拠を利用者が確認する必要があります。
| 確認点 | 止める状態 | 次にすること |
|---|---|---|
| 配布元 | 開発元との関係を確認できない、URLが似せられている | 公式サイトや公式リポジトリから入り直す |
| SHA-256 | 公式値がない、または値が一致しない | 一致しないファイルは削除し、再取得する |
| 署名 | apksignerが失敗する | 改変・破損・非対応条件を切り分けるまで入れない |
| 証明書指紋 | 信頼できる旧版・公式掲載値と一致しない | 鍵変更の公式告知を確認できなければ入れない |
| 要求権限 | 用途に説明できないSMS、アクセシビリティ、端末管理等を求める | 開発元の説明とAndroid設定を確認する |
| 警告 | Play Protectや端末が有害・不明として警告する | 保護機能を切って迂回しない |
ダウンロード・一覧・展開・インストール・起動は別の状態
不安を正しく切り分けるには、APKを持っている状態と、Androidへ導入した状態を分けます。Windows上でAPKを保存し、KaruzipでZIPコンテナを一覧・テストする操作は、Androidアプリとしてインストールして起動する操作ではありません。ただし、未知のファイルを後で開く、脆弱なソフトで処理する、端末へ移して許可する、といった別のリスクは残ります。
| 状態 | 実行されること | 安全確認 |
|---|---|---|
| ダウンロード | ファイルが保存される | 入手URLとSHA-256を記録し、まだインストールしない |
| Karuzipで一覧・テスト | ZIP層の項目名とCRC等を読む | 書庫破損は調べられるが、DEXの悪意は判定できない |
| 展開 | 内部ファイルを保存する | 展開先のDEXやXMLが自動でAndroidアプリとして動くわけではない |
| Androidへインストール | パッケージ、署名、権限をOSが処理する | Play Protectと署名・配布元を確認する |
| アプリを起動 | コードが動作し、許可済み機能や通信を使い得る | 権限、通信、挙動を継続して確認する |
各チェックで分かること・分からないこと
| 確認項目 | 分かること | 分からないこと |
|---|---|---|
| 配布元 | 開発元からファイルまでの入手経路 | 配布元のサーバーやアカウントが侵害されていない保証 |
| SHA-256 | 2つのファイルが同じbyte列か | 比較する公式値が正しいか、コードが無害か |
| APK署名 | 署名後の改変有無と署名証明書 | 証明書の持ち主が公式開発者か、コードが安全か |
| 証明書指紋 | 信頼できる基準値と同じ鍵か | 基準値の掲載元自体が信頼できない場合の本人性 |
| Manifest・権限 | 宣言されたコンポーネント、権限、端末条件 | 全コードの挙動、未宣言のサーバー側処理 |
| VirusTotal等 | 既知の特徴や一部の疑わしい挙動に対する各エンジンの見解 | 0件なら無害という保証、1件なら悪意という確定 |
| Play Protect | 端末上のインストール時・定期的な安全確認 | すべての未知脅威を必ず検出する保証 |
| Karuzip | APKのZIP層を一覧・テスト・展開できるか | 署名、権限、DEX、通信、マルウェアの判定 |
野良APKをインストールする前の8ステップ
-
1
インストールせず公式配布元へ戻る
入手URL、版番号、公開日を記録し、公式サイトや公式リポジトリからReleaseへ入り直します。
-
2
SHA-256を比較する
ローカルで計算し、公式が別の信頼できるページに掲載した値と完全一致するか確認します。
-
3
APK署名を検証する
Android SDKのapksigner verify --verbose --print-certsを実行し、失敗・警告・署名方式を確認します。
-
4
証明書指紋を照合する
Signer certificate SHA-256を、信頼できる旧版または公式のアプリ署名証明書と比較します。
-
5
Manifestと権限を確認する
APK Analyzerで用途に説明できない権限やコンポーネントがないか確認します。
-
6
VirusTotalはハッシュから調べる
まずSHA-256で既存レポートを検索し、0件を安全保証にせず、機密APKは通常スキャンへ送信しません。
-
7
Play Protectを有効のまま使う
端末側の警告やスキャンを確認し、警告を解除して強行しません。
-
8
根拠がつながらなければ止める
配布元、ハッシュ、署名指紋のいずれかを確認できなければインストールしません。
手順1:公式の配布元とSHA-256を確認する
最初に、検索結果の転載ページではなく、開発元の公式サイトや公式リポジトリからReleaseへ移動します。アプリ名、パッケージ名、版番号、公開日、更新履歴を照合し、配布元が掲載したSHA-256がある場合はローカル計算値と比較します。Windows PowerShellならGet-FileHash .\sample.apk -Algorithm SHA256で計算できます。
| 結果 | 判断 |
|---|---|
| 公式値と完全一致 | 公式値が指すファイルと同じbyte列。次に署名と指紋を確認する |
| 1文字でも不一致 | 別ファイル。再取得しても一致しなければインストールしない |
| 公式値がない | 自分で計算した値は記録にはなるが、真正性の比較根拠にはならない |
| ダウンロードサイト内の値だけ一致 | そのサイトが用意したAPKと値の組み合わせにすぎず、公式版の証明にはならない |
手順2:apksignerでAPK署名を検証し、証明書指紋を比べる
Android公式のapksignerでは、apksigner verify --verbose --print-certs "sample.apk"を実行します。成功可否、ERROR:やWARNING:、v1・v2・v3等の結果を確認し、Signer #1 certificate SHA-256 digestを記録します。警告も失敗扱いにする場合は-Werrを加えます。
| 確認 | 意味 | 停止条件 |
|---|---|---|
| Verifies | 対象Android範囲で署名が技術的に成立する | これだけで安全とは判断しない |
| 署名失敗 | 改変、破損、署名構造、対象版条件等の問題 | 原因を確認できるまで入れない |
| 証明書SHA-256一致 | 比較した信頼できる旧版・公式掲載値と同じ鍵 | Play App Signingではアップロード証明書と取り違えない |
| 証明書SHA-256不一致 | 別の鍵、または正式な鍵変更 | 公式の鍵変更告知を独立した経路で確認する |
手順3:Manifestと要求権限を用途に照らす
APK内のAndroidManifest.xmlは通常バイナリXMLです。Karuzipでファイルの存在を確認・抽出できても、そのままでは権限一覧を読み取れません。Android StudioのAPK AnalyzerでManifestを開き、パッケージ名、版番号、コンポーネント、権限を確認します。
| 問い | 確認例 | 判断の限界 |
|---|---|---|
| 機能に必要か | 地図に位置情報、カメラに撮影権限など | 必要そうでも取得後の使い方までは分からない |
| 説明があるか | 公式プライバシー説明、アプリ内の利用目的 | 説明文だけで実装が同じとは限らない |
| 強い権限か | アクセシビリティ、端末管理、SMS、他アプリ上の表示等 | 強い権限があるだけでマルウェアとは断定しない |
| 依存ライブラリ由来か | 広告、分析、通知等のSDK | 権限が少なくても安全とは限らない |
手順4:VirusTotalは先にハッシュ検索し、0件を安全証明にしない
VirusTotalでは、まずローカルのSHA-256で既存レポートを検索します。既存結果があればファイルを再送せずに済みます。通常スキャンへ提出したファイルや結果は検査パートナー、コミュニティ、条件を満たす利用者等と共有される場合があるため、社内版、未公開版、個人情報や顧客データを含むAPKを無断でアップロードしません。
| 表示 | 読み方 | 次の確認 |
|---|---|---|
| 0件 / undetected | その時点で各エンジンが検出意見を出していない。cleanの証明ではない | 分析日時、配布元、署名、権限を確認 |
| 1社のみ検出 | 誤検知の可能性も、新しい脅威の可能性もある | 検出名、エンジン、再解析、同一署名の公式版を照合 |
| 複数社が近い名称で検出 | 疑いが強まる | インストールせず、配布元とセキュリティ事業者の情報を確認 |
| timeout / failure / unsupported | 検査結果が出ていない | 0件として数えず、時間を置いて再確認 |
| 古いレポート | 現在の定義やサンプル評価とずれる | 最終分析日時とファイルSHA-256を確認 |
手順5:Google Play プロテクトを有効のまま使う
Google Play プロテクトは、Google Playと他の提供元のアプリをインストール時に確認し、端末を定期的にスキャンします。未知のアプリはGoogleへ送信して評価される場合があります。警告時は保護機能を切って強行せず、配布元、署名、指紋、権限へ戻ります。
Karuzipで確認できるのはAPKのZIP層まで
APKはZIP形式に従うAndroidアプリパッケージです。Karuzipは.apkを直接開き、AndroidManifest.xml、classes.dex、resources.arsc、META-INF/等を一覧・書庫テスト・選択解凍できます。APKをAndroidへインストールしたり、DEXやネイティブコードを実行したりはしません。
| 操作 | できる | できない |
|---|---|---|
| 一覧 | APK内のファイル名、サイズ、階層を見る | v2・v3署名ブロックはZIP entryではないため一覧だけでは判定不可 |
| 書庫テスト | ZIP層のCRCや末尾欠損等を検出する | Androidアプリとして成立・安全・インストール可能とは証明しない |
| 選択解凍 | Manifest、DEX、証明書関連ファイル等を個別保存する | バイナリManifestの解読、DEX解析、署名検証はしない |
| 全体解凍 | 内部ファイルをフォルダーへ取り出す | APKの変換、修復、再署名、実行はしない |
APKの開き方と内部構造だけを確認したい場合は、APKを開いて中身を見る手順へ進んでください。このページでは安全確認の判断鎖に範囲を絞ります。
固定APKで確認した:ZIPが正常でも署名や構造は別に壊れる
実測にはMIT LicenseのHelloWorldSelfAware v1.1.0を使いました。asset ID 265977330、120,512 B、SHA-256 009B4671…CC848CC41で固定し、34ファイル、展開後121,181 Bを確認しました。公式apksignerは未導入のため、記事のコマンドはAndroid公式手順として掲載し、実行済みとは扱っていません。
| 試験 | ZIP層 | 署名・構造側の結果 |
|---|---|---|
| 元APK | 一覧・テスト・全体解凍・主要6項目の選択解凍PASS | v1 PKCS#7 PASS、Manifest digestと31/31 entry digest一致、v2 content digestとsigned-data署名PASS |
| classes.dex圧縮データを1 byte反転 | 一覧は通るが書庫テストはCRCエラー | v2署名ブロックは残るがcontent digest不一致 |
| classes.dexを変更して再ZIP | 書庫テストPASS | v2署名ブロック消失、v1のclasses.dex digest不一致 |
| AndroidManifest.xmlを削除して再ZIP | 書庫テストPASS | Manifest entry欠落、v2署名ブロック消失。ZIP成功はAPK成立を示さない |
| 末尾128 Bを削除 | 一覧・書庫テストとも失敗 | ZIP末尾欠損として検出 |
| 同じbyte列を.apkから.zipへ改名 | サイズとSHA-256は同一 | 署名ブロックも同一。拡張子変更は安全性を変えない |
FA0B27BF…CC82F486でした。この値は実測対象を識別するための記録で、Appliberatedの法的本人性やアプリの無害性を保証する値ではありません。変異APKは検証用であり、Webサイトでは配布しません。すでに野良APKをインストールした場合
まだ不審な挙動がなくても、出所を確認できないアプリは放置しません。Play Protectのスキャンを実行し、Androidのアプリ情報から要求・許可済みの権限、特別なアクセス、データ使用状況を確認します。必要性を説明できない場合はアンインストールし、同じ提供元のAPKを再取得して入れ直すのではなく、公式配布へ戻ります。
| 順番 | 行動 | 補足 |
|---|---|---|
| 1 | 不審なアプリを起動しない | 警告画面を迂回しない |
| 2 | Play Protectでスキャンする | 結果が問題なしでも他の根拠を確認する |
| 3 | 権限と特別なアクセスを確認する | メニュー名はAndroid版・メーカーで異なる |
| 4 | 出所、SHA-256、署名指紋を再確認する | 公式基準と結び付かなければ削除する |
| 5 | 不審ならアンインストールし、OSとアプリを更新する | 認証情報を入力した場合は別の信頼できる端末からパスワード等も見直す |
APKのウイルス・署名・野良アプリに関するFAQ
APKファイルのウイルスチェックは、何から始めますか?
まずインストールせず、公式配布元とSHA-256を確認します。次にapksignerの署名・証明書指紋、Manifestの権限、VirusTotal等の複数エンジン、Play Protectを順に重ねます。
VirusTotalで検出が0件なら安全ですか?
安全とは言い切れません。VirusTotalのundetectedは、そのエンジンが検出意見を出していない状態です。分析日時、配布元、署名指紋、権限も確認します。
VirusTotalで1社だけ検出されたら誤検知ですか?
誤検知とも悪意とも即断できません。検出名、エンジン、再解析結果、同じSHA-256への評価、公式版との署名指紋差を確認し、説明できるまでインストールしません。
署名検証に成功すれば安全ですか?
いいえ。署名成功は署名後の改変を検出し、署名証明書を取り出せることを示します。悪意のあるAPKも自分の鍵で署名できるため、信頼できる公式指紋との比較が必要です。
SHA-256は何と比較しますか?
開発元の公式サイト、公式Release、Play Console等の信頼できる独立経路に掲載された同じ版の値と比較します。ダウンロードサイトがAPKと一緒に載せた値だけでは公式版の証明になりません。
野良APKはすべて危険ですか?
すべてが悪意を持つとは限りません。ただし、ストアの配布経路に代わる根拠を利用者が確認する必要があります。出所や署名指紋を確認できなければ入れません。
APKをダウンロードしただけで感染しますか?
保存しただけではAndroidアプリとしてインストール・起動されません。ただし、後で実行する、別の脆弱なソフトで処理する等のリスクは残るため、開かずに出所とハッシュを確認します。
KaruzipでAPKを開いたり展開したりするとアプリが動きますか?
KaruzipはAPKをZIP系パッケージとして読み、内部ファイルを一覧・テスト・保存します。AndroidへインストールしたりDEXを実行したりしませんが、内容の無害性も判定しません。
AndroidManifest.xmlの権限だけでマルウェアを判断できますか?
判断できません。権限は用途との整合性を見る静的な手掛かりです。強い権限があっても正当な用途はあり、権限が少なくても安全とは限りません。
すでに野良APKを入れた場合はどうしますか?
起動を止め、Play Protectをスキャンし、権限と特別なアクセスを確認します。出所・ハッシュ・署名指紋を確認できない場合はアンインストールし、OSとアプリを更新します。
Karuzipで確認した条件
- 確認日
- 2026-08-01
- 環境
- Windows 11 / Node.js 24.12.0 / Karuzip v1.4.0開発版と同じ同梱7-Zip 25.01 / OpenSSL 3.5.4。Android SDK公式apksignerは未導入。
- 標本
- HelloWorldSelfAware v1.1.0の固定Release asset(asset ID 265977330、120,512 B、SHA-256 009B467109C4D48D4B00610B06F37F3A77EED75178FBAAE344A111ACC848CC41、MIT)。正常APKと、classes.dex圧縮データ1 byte反転、classes.dex変更後再ZIP、AndroidManifest.xml削除後再ZIP、末尾128 B欠損、同一byte列.zip改名を生成。
- 確認項目
- 34ファイル・展開121,181 B、一覧・書庫テスト・全体解凍・主要6項目の選択解凍SHA-256一致、v1 PKCS#7 CERT.RSA→CERT.SF、Manifest digest、31/31 entry digest、v2 0x0103 content digest、signed-data RSA/SHA-256署名、signer public keyと証明書SPKI一致、各負例のZIP/署名差をfail-fast gate付きで確認。
正常APKはv1/v2確認PASS。1 byte反転は一覧のみ成功・CRCとv2 digest失敗。再ZIP2種はZIPテスト成功でもv2 Signing Blockがなく、v1は変更または欠落を検出。末尾欠損は一覧/テスト失敗。同一byte列の.zip改名はサイズ・SHA-256・v2署名ブロック不変。これは無害性、配布元本人性、権限、DEX挙動、端末互換性の証明ではない。
根拠と更新方針
Windowsの操作、ZIP形式の仕様、Karuzipの機能を混同しないよう、判断ごとに根拠を分けています。
- APK Analyzer | Android Developers developer.android.com APKのZIP形式、Manifest・DEX・resources等の構造、バイナリManifestの表示。
- Permissions on Android | Android Developers developer.android.com インストール時・実行時・特別な権限と判断境界。
- App signing | Android Open Source Project source.android.com 全APKの署名要件、自署証明書、CA本人確認を前提にしないこと、v1/v2/v3の概要。
- APK Signature Scheme v2 | Android Open Source Project source.android.com ZIP Central Directory直前のSigning Blockとchunked content digest。
- apksigner | Android Developers developer.android.com verify、--verbose、--print-certs、-Werrの公式手順と結果の範囲。
- Google Play プロテクト | Google Play ヘルプ support.google.com インストール時と定期スキャン、他の提供元、未知アプリのGoogle送信可能性。
- How VirusTotal works | VirusTotal docs.virustotal.com 通常提出物・結果の共有範囲。
- The antivirus green circle | VirusTotal docs.virustotal.com undetectedをcleanやinnocuousと扱わない公式説明。
- Private Scanning | VirusTotal docs.virustotal.com 通常提出と別の有料private scanning、共有と解析結果の違い。
- HelloWorldSelfAware v1.1.0 Release github.com 固定fixtureのReleaseとasset。
- HelloWorldSelfAware MIT License github.com 固定fixtureのライセンスと著作権表記。
APKをインストールせず、まずZIP層をローカルで確認
KaruzipはWindows 10 / 11向けの無料解凍・圧縮ソフトです。APKを直接一覧し、書庫テスト、全体または選択解凍ができます。署名検証やマルウェア判定は行わず、広告やバンドルもありません。
Karuzipを無料でダウンロード