コード探偵の事件簿:ReVancedが解き明かすアプリのリバースエンジニアリング


コード探偵の事件簿:ReVancedが解き明かすアプリのリバースエンジニアリング

ReVanced/revanced-patches

2025-09-16

皆さん、こんにちは。名探偵の皆さん、お集まりいただきありがとうございます。

さて、今回の事件は、とあるAndroidアプリにまつわる、巧妙に仕組まれた密室殺人事件です。被害者は、誰もが知るあの動画配信アプリ。彼は、数々の「制限」という名の鎖に縛られ、身動きが取れない状態にありました。しかし、今宵、その鎖を断ち切り、新たな命を吹き込む「パッチ」という名の秘密道具の存在が明らかになったのです。

犯行現場は、GitHubという名の巨大な図書館の一室。「ReVanced/revanced-patches」と名付けられたこのファイルには、被害者(アプリ)のDNAを書き換え、より自由に、より快適に使えるようにする、驚くべき「パッチ」の数々が収められています。

さあ、皆さんと一緒に、この事件の真相、そして、この「パッチ」が私たちソフトウェアエンジニアにとって、いかに重要な手がかりとなるのか、解き明かしていきましょう。

この「revanced-patches」は、まさにソフトウェアエンジニアにとっての「アリバイ崩し」の決定的な証拠です。

密室の鍵を開ける(リバースエンジニアリングの学習)

このパッチ群は、既存のAndroidアプリがどのように動いているのかを深く理解する(リバースエンジニアリング)ための、生きた教材です。

Kotlinという言語で書かれたコードを読み解くことで、他のエンジニアが書いたコードの構造や、アプリの内部動作を学ぶことができます。これは、自分のアプリ開発の引き出しを増やす上で非常に役立ちます。

事件現場を自在に改造する(カスタマイズ性の理解)

パッチは、既存のアプリの機能を「変更」「追加」「削除」するものです。例えば、動画の広告を消したり、バックグラウンド再生を可能にしたり。

これは、アプリのカスタマイズ性を探求する上で、格好のサンプルになります。自分の開発するアプリに、ユーザーが自由に機能を追加・変更できるような仕組みをどうやって組み込むか、そのヒントを得ることができます。

完璧なアリバイを崩す(パッチ適用の技術)

このプロジェクトの核心は、既存のAPKファイル(Androidアプリの実行ファイル)を直接変更する技術です。

これは、既存のソフトウェアに手を加える「パッチ適用」の技術を学ぶ絶好の機会です。ソフトウェアの脆弱性を修正したり、新しい機能を追加したりする際に、ソースコードがない場合でも対応できる、非常に高度な技術です。

さて、探偵の皆さん、事件の真相に迫るためには、このパッチをどうやって使うのか、その方法を知る必要があります。

必要な道具を揃える

revanced-cli
パッチを適用するための「万能ツール」です。これは、コマンドライン(ターミナル)で動かすプログラムで、事件現場(APKファイル)にパッチを適用する役割を担います。

revanced-patches
今回の主役、パッチが詰まったファイルです。

revanced-integrations
パッチがうまく動くように、必要な土台を整えるためのファイルです。

標的となるAPKファイル
謎を解くべき、元のAndroidアプリの実行ファイルです。

犯行声明文(手順)を読む

GitHubから、最新のrevanced-cli.jarrevanced-patches.jarrevanced-integrations.jarをダウンロードします。

同じく、標的となるアプリのAPKファイルを準備します。

コマンドラインを開き、次の呪文を唱えます。

java -jar revanced-cli.jar -a "標的のアプリ.apk" -o "改造後のアプリ.apk" -b "revanced-patches.jar" -i "revanced-integrations.jar" --exclude-patch="特定のパッチID"

-a
標的のAPKファイル

-o
改造後のAPKファイル(新たな命を吹き込まれたアプリ)

-b
パッチの場所

-i
統合ファイルの場所

--exclude-patch
特定のパッチを適用したくない場合に使うオプション。これは、証拠を隠滅したいときに使われるかもしれませんね。

魔法の呪文を唱えると、新しいAPKファイルが生成されます。これをAndroidデバイスにインストールすれば、事件は解決です!

実際に、このパッチがどのように書かれているのか、その一端を覗いてみましょう。

以下は、revanced-patchesの中にある、とある「広告を消すパッチ」のコードの断片です。Kotlinという言語で書かれています。

// パッチのクラス定義
class RemoveAdsPatch : Patch() {

    // どのメソッドに手を加えるか指定
    override fun getMethods() = listOf(
        // 'com.google.android.ads.AdView' クラスの 'loadAd' メソッド
        // ここが広告を読み込む犯行現場です
        Method(
            className = "com.google.android.ads.AdView",
            methodName = "loadAd",
            parameters = listOf("com.google.android.ads.AdRequest"),
            isStatic = false,
            // どんなパッチを当てるか
            patch = {
                // ここで広告を読み込む処理を「無効化」します
                // 実際には、このメソッドを空っぽにして、何も実行しないようにします
                // 証拠を消し去る瞬間です
                mv.visitInsn(Opcodes.RETURN)
            }
        )
    )
}

このコードは、まさに探偵が事件現場で「ここが犯行現場だ!」と指差すようなものです。

classNamemethodNameで、変更すべきアプリの内部の場所(広告を読み込むメソッド)を特定しています。

patchの中のmv.visitInsn(Opcodes.RETURN)が、そのメソッドを「何もしない」ように書き換える、アリバイ崩しのコードです。

このように、このプロジェクトは単にアプリを改造するだけでなく、その裏側にある「どうやって既存のソフトウェアに手を加えるか」という、高度な技術を学ぶための宝庫なのです。

さあ、名探偵の皆さん。この「revanced-patches」というファイルが、いかに私たちの探求心をくすぐる素晴らしい事件ファイルであるか、お分かりいただけたでしょうか。


ReVanced/revanced-patches




【江戸のエンジニア魂】AirPodsをAppleの鎖から解き放つ!「librepods」で挑むリバースエンジニアリングの極意

まずはっきり言っておくが、これは「kavishdevar/librepods」ってなブツに関する話だ。これはAirPodsをAppleの縄張りから解放しちまおうってな、ちょいと粋なプロジェクトでよ、AndroidやLinuxでAirPodsを自由に使いこなすための道筋をつけるもんさ。


「Google版Rust」で学ぶ、信頼性と安全性を高めるコーディング

このコースは、単なる文法解説にとどまらず、実用的な視点でRustを学ぶことができます。信頼性の高さ GoogleのAndroidチームという、世界トップクラスのエンジニアたちが実際に使っている教材です。内容の質と正確性は非常に高いと言えます。


Android画面操作の決定版:escrcpyの導入方法とエンジニア的活用術

(司令官、机を叩いて立ち上がる)「いいか、通信兵!我々ソフトウェアエンジニアの戦場は、今やPCの中だけではない。手元のAndroid端末、テスト用の実機、あちこちに散らばるデバイスをいちいち手に取って、パスコードを打って、デバッグする……。そんなことをしていたら、私のコーヒーは冷め、納期は火の海だ!」


Dockerで爆速構築!Androidエミュレータをコンテナ化する「HQarroum/docker-android」解説

「Androidのエミュレータを立てるだけでPCが重くなる…」「CI(継続的インテグレーション)でUIテストを自動化したいけど、設定が地獄だ…」そんな胃もたれしそうな状況を、このツールがサクッと軽くしてくれますよ。どうぞ、じっくり味わってみてください!


リバースエンジニアリングでAIを活用:gpt4freeを使った複数モデルのテスト入門

ご質問ありがとうございます!このリポジトリ、xtekky/gpt4free、は非常に興味深いプロジェクトですね。ソフトウェアエンジニアの視点から、これがどのように役立つのか、導入方法、そしてサンプルコードの例を、分かりやすく丁寧にご説明しますね。フレンドリーな解説を心がけます!


拡張の自由を手に入れろ:Androidマンガアプリ『コタツ』のカスタマイズとエクステンション開発戦略

「Kotatsu」は、ただのマンガビューアではありません。オープンソースで開発されているため、エンジニアにとっては機能拡張や学習の宝庫として非常に魅力的です。Kotatsuを単にユーザーとして使うだけでなく、エンジニアとして「開発」に参加するためのステップをご案内します。


【エンジニア必見】オープンソースRTS「Mindustry」のコードベースを深掘り

ただし、「逆に、」を口癖のように使うのは少し難しいかもしれませんが、そのプロジェクトが持つ双方向の学びの機会や異なる視点を強調する形で、解説の中に織り交ぜていきますね。Mindustry は、タワーディフェンスと資源管理、自動化が組み合わさったリアルタイムストラテジー(RTS)ゲームです。


高速開発の秘密兵器: ホットリロードでFlutterアプリを爆速構築

Flutter(フラッター)は、モバイルアプリはもちろんのこと、デスクトップやウェブまで、一つのコードベースから複数のプラットフォームに対応する美しいアプリを素早く構築できるUIツールキットです。ソフトウェア開発者であるあなたにとって、Flutterはまさに「万能の道具箱」のような存在です。


さよならエミュレータ!WSABuildsで実現する高性能なAndroidテスト環境の構築

でもご安心を。この MustardChef/WSABuilds は、皆さんの開発環境を劇的に快適にする、とっても実用的なツールなんです。ソフトウェアエンジニアの視点から、その魅力と活用法を分かりやすく、フレンドリーにご案内しますね!MustardChef/WSABuilds(以下、WSABuilds)は、Windows上でAndroidアプリを動作させるための公式機能である Windows Subsystem for Android (WSA) の「拡張版」と考えると分かりやすいです。


脱・追跡広告!Organic Mapsと歩む、誠実なソフトウェアエンジニアリングへの道

エンジニアにとってのこのライブラリは、まるで「道に迷った時にそっと現れる、信頼できるベテランガイド」のような存在だよ。星座占いの運勢風に、その魅力と使い方を紐解いていくね!今日のあなたの運勢は「開拓」がキーワード。 重たいクラウドSDKや、プライバシーを切り売りする広告モデルに疲れていないかな?Organic Maps を手に取ることで、あなたのアプリ開発に「ピュアな自由」がもたらされる暗示が出ているよ。