Ark VM のデコンパイル(ark-vm-decomp)
概要
このリポジトリは「ark-vm-decomp」と名付けられた、ArkoseLabs の FunCaptcha に含まれる API.js 内の仮想マシン(以下 VM)をデコンパイルして可読化したものです。作者は軽い気持ちで公開したとあり、decomp.js に解析ロジックが含まれている簡素な構成です。解析対象の VM はしばしば難読化や動的生成コードを用いるため、デコンパイルで得られる成果はバージョン依存かつ限定的ですが、解析・研究の出発点として有用です。一方で、キャプチャ回避など悪用に繋がる用途は倫理的・法的問題があるため注意が必要です。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 3
- ファイル数: 3
- メインの言語: JavaScript
主な特徴
- ArkoseLabs FunCaptcha の API.js に含まれる仮想マシンを対象にしたデコンパイルスクリプトを収録
- 単一ファイル(decomp.js)で VM 命令列の解析・可視化を行う軽量実装
- 研究・解析用途を想定した成果物で、バージョン差による非互換があることを明記
- ライセンス情報と簡潔な README を同梱し、利用者への注意喚起を含む
技術的なポイント
このリポジトリの核心は、JavaScript で実装された VM を解析してその内部命令や制御構造を人間が読みやすい形に戻すことにあります。一般に ArkoseLabs のようなサービスはブラウザ側で動く API.js にカスタムの仮想機械(専用バイトコード、命令セット)を埋め込み、難読化や動的コード生成で解析を困難にしています。decomp.js はそのバイトコード列を取り出し、各バイト(またはトークン)を既知の命令へマッピングし、命令単位での処理を再構成するアプローチを採っています。
技術的には以下の点が注目できます:
- 命令マッピング: バイト列やトークンを解析して命令名やオペランドを復元するテーブル駆動式の処理を含む想定。これにより低レベルのVM命令が擬似コード風に表示可能になる。
- 制御フロー復元: 分岐命令やジャンプを解析し、基本ブロックや制御フローを再構成することで、関数相当のロジックが追えるようにする試みが見られる(規模により部分的な復元に留まる)。
- 静的解析と限界: decomp.js は主に静的解析寄りのツールで、動的に生成されるコードやランタイム依存の値は解析困難。API.js のバージョン差やランタイムチェック(タイムスタンプ、難読化キーなど)による破壊的変更には脆弱。
- 可読化の工夫: 変数名や一時変数を再命名し、命令列を整形して人間が追いやすい出力にする処理を備えている可能性が高い。これによりデバッグや調査の初動が速くなる。
- 運用上の注意: リポジトリ自体は解析結果を提示するものであり、キャプチャ回避や自動化に直接利用することは倫理的・法的に問題あり。公開者自身もバージョン差やサポートの範囲を限定しており、研究目的での利用が想定されている。
総じて、ark-vm-decomp は「VM の構造を可視化してリバースエンジニアリングの初動を助ける」ための軽量ツールセットとして価値がありますが、完全なデコンパイラではなくバージョン依存性と静的解析の限界を持つ点に注意が必要です。利用する際は法的・倫理的側面を十分に考慮してください。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- decomp.js: file
- license.md: file
(decomp.js が本体で、README は簡潔な説明と連絡先、license.md は利用条件が記載されています。)
まとめ
研究・解析の出発点として有用だが、悪用は避けるべき軽量ツール。
リポジトリ情報:
- 名前: ark-vm-decomp
- 説明: ArkoseLabs’ FunCaptcha API.js virtual machine decompiled.
- スター数: 2
- 言語: JavaScript
- URL: https://github.com/zoyoxd/ark-vm-decomp
- オーナー: zoyoxd
- アバター: https://avatars.githubusercontent.com/u/269083640?v=4
READMEの抜粋: bored so i decided to publish this
if a new capi version releases and i dont update message me
if you need help implementing or making a solver and are willing to pay, message me