.SMALI

SMALI ファイル

Android Smali Assembly Source File
質問する
クイック回答

.smali ファイルは、apktool や baksmali を使用して APK を逆アセンブルした際に生成される Android Dalvik アセンブリソースコードです。これはリバースエンジニアリングの成果物であり、一般のユーザーが目にすることはありません。任意のテキストエディタや Visual Studio Code で開くことができます。.smali ファイルのフォルダを APK に戻したい場合は、apktool を使用して再アセンブルします。

開発元: Ben Gruver (JesusFreke) - original author; now maintained by Google (baksmali/smali v3) カテゴリ: 開発用ファイル MIME: text/plain
対応OS Windows macOS Linux Android
関連: .DO · .MD · .HEX · .XSD

このページの内容

19k+ 個の拡張子を索引済み
最終確認日:Aug 12, 2026

ファイルの種類がわかりませんか?

ファイルを識別ツールにドロップしてください。最初の数バイトを読み取って形式を特定します。

ファイルを識別する

SMALI ファイル形式とは?

.smali ファイルには、人間が読める形式の Dalvik または ART バイトコード(Android アプリケーションコードのアセンブリ言語表現)が含まれています。smali および baksmali という名前は、アイスランド語でアセンブラと逆アセンブラを意味します。これらのツールは 2010 年に Ben Gruver (JesusFreke) 氏によって作成され、現在は Google によってメンテナンスされています。

Android の .apk が apktool または baksmali を使用して展開されると、.dex ファイル内のコンパイル済みクラスがそれぞれ個別の .smali ファイルとして抽出されます。構文では、.class、.super、.implements ディレクティブでクラスのメタデータを宣言し、.field でフィールドを、.method....end method ブロック内でメソッドを宣言します。個々の Dalvik オペコード(invoke-virtual、move-result、return-void など)は、名前付きレジスタ(v0、v1、p0 など)を操作します。

.smali ファイルは主に Android のリバースエンジニアリング、セキュリティ研究、CTF(Capture The Flag)チャレンジで使用されます。一般的なワークフローは、apktool d で APK を展開し、.smali ソースを編集して動作をパッチし、apktool b で再パッケージ化して再署名するというものです。これらは中間的な逆アセンブル成果物であり、通常の Android ユーザーが生の .smali ファイルに遭遇することはありません。

各 .smali ファイルは、匿名内部クラス(個別のファイルとして表示されます)を含め、正確に 1 つのクラスに対応します。使用可能なオペコードは Android の API レベルによって異なり、それは .dex フォーマットのバージョン(例:Android 5 の場合は 035、Android 12 以降の場合は 039)に反映されます。

セキュリティと安全性

リスク: MEDIUM

.smali ファイル自体はプレーンテキストであり、エディタで表示してもシステムに害を及ぼすことはありません。リスクは文脈に依存します。 1. 不審な APK を逆アセンブルした場合、.smali ファイルはその挙動を明らかにします。難読化された文字列、動的なコード読み込み (DexClassLoader)、不審なホストへのネットワークコールがないか確認してください。 2. APK にパッチを当てて配布用に再署名することは、アプリの利用規約や、一部の管轄区域では著作権法に抵触する可能性があります。個人利用は一般的に認められていますが、再配布は認められません。 3. 未知のソースから .smali の「パッチ」をダウンロードする場合は、実行可能コードと同様に扱い、適用前に内容を確認してください。

形式の詳細

概要
正式名称Android Smali Assembly Source File別名 Smali file, Dalvik assembly
開発元Ben Gruver (JesusFreke) - original author; now maintained by Google (baksmali/smali v3)登場時期 2010 (baksmali 1.0 by Ben Gruver/JesusFreke)
MIME タイプtext/plain
タイププレーンテキストアセンブリソースコード (Dalvik/ART バイトコード表現)

SMALI ファイルを開くプログラム

Windows3 apps
NotePad++ text editor オープンソース 「ファイル」>「開く」から .smali ファイルを選択します。NP++ コミュニティで公開されているユーザー定義言語を使用することで、smali の構文ハイライトが利用可能です。
Visual Studio Code オープンソース .smali ファイルを直接開きます。VS Code マーケットプレイスから «smali» 拡張機能をインストールすると、構文ハイライトが有効になります。
apktool オープンソース «apktool d app.apk» で .smali ファイルのフォルダを生成します。«apktool b folder/» でそれらを APK に再構築します。
macOS3 apps
TextEdit 標準搭載 TextEdit で .smali ファイルを開きます(「フォーマット」>「標準テキストにする」で標準テキストモードを使用してください)。
Visual Studio Code オープンソース .smali ファイルを直接開きます。VS Code マーケットプレイスから «smali» 拡張機能をインストールすると、構文ハイライトが有効になります。
apktool オープンソース «apktool d app.apk» で .smali ファイルのフォルダを生成します。«apktool b folder/» でそれらを APK に再構築します。
Linux3 apps
gedit オープンソース gedit で .smali ファイルを開いて閲覧・編集できます。
apktool オープンソース «apktool d app.apk» で .smali ファイルのフォルダを生成します。«apktool b folder/» でそれらを APK に再構築します。
Vim / Vi オープンソース «vim file.smali» で開けます。コミュニティ製の smali 構文プラグインが利用可能です。
Android1 app
Not applicable 無料 Smali ファイルは開発およびリバースエンジニアリング用の成果物であり、Android デバイス上で直接開かれることはありません。

技術的詳細

詳細仕様
開発者Ben Gruver (JesusFreke) 氏(原作者)。現在は Google がメンテナンス(baksmali/smali v3 以降)
ファイルタイププレーンテキストで人間が読める形式の Dalvik/ART バイトコードアセンブリ
エンコーディングUTF-8
名前の由来smali と baksmali はアイスランド語でアセンブラと逆アセンブラを意味します
1クラスにつき1ファイル各 `.smali` ファイルは、匿名内部クラスを含め、正確に 1 つの Java または Kotlin クラスに対応します
コンパイル済みの対応形式`.dex` (Dalvik Executable) - `.smali` はその逆アセンブルされた人間が読める表現です
一般的なサイズ1ファイルあたり 1 KB ~ 200 KB。複雑な Android アプリでは数千の `.smali` ファイルが生成されます
レジスタ構文ローカルレジスタ: `v0`, `v1`, ...、パラメータレジスタ: `p0`, `p1`, ...(インスタンスメソッドでは `p0` が `this`)
オペコードのバージョン管理`.dex` フォーマットのバージョンに依存: 035 (Android 5-6), 037 (Android 7), 038 (Android 8-11), 039 (Android 12+)
標準的なワークフローAPK → `baksmali` 逆アセンブル → `.smali` 編集 → `smali` アセンブル → 再パッケージ化 APK(再署名が必要)
ツールの統合`apktool` は APK の逆アセンブルと再構築のために内部で `smali`/`baksmali` を使用しています
主なユースケースAndroid リバースエンジニアリング、アプリのパッチ適用、セキュリティ脆弱性の調査、CTF チャレンジ
リリース日2010 (baksmali 1.0 by Ben Gruver/JesusFreke)
最新バージョンsmali/baksmali 3.x (Google-maintained as of 2024)
仕様書github.com

SMALI の変換

コミュニティ Q&A

ユーザーからの質問
質問する
SMALI ファイルを扱うユーザーからヘルプを得られます。OSやソフトウェアのバージョンなど、具体的に記載してください。
アカウント不要 ・ 通常1日以内に回答されます

まだ質問はありません。SMALI ファイルについて最初の質問をしてみましょう。

よくある質問

APK から .smali ファイルを取得するにはどうすればよいですか?
apktool を使用します。ターミナルで «apktool d yourapp.apk» を実行してください。各クラスの .smali ファイルを含むフォルダが作成されます。または、APK 内の classes.dex に対して直接 baksmali を使用することもできます。
.smali ファイルを APK に戻すにはどうすればよいですか?
apktool を使用します。«apktool b foldername/» を実行して APK を再構築し、その後 apksigner または jarsigner で再署名します。
.smali を Java にデコンパイルできますか?
間接的に可能です。APK に対して直接 jadx を使用して Java ソースコードを取得してください。手動で smali→Java と変換するよりも jadx を使う方が効率的です。
Dalvik レジスタの構文 (v0, p0) は何を意味しますか?
レジスタは smali におけるローカル変数に相当します。「v」レジスタは一般的なローカル変数、「p」レジスタはメソッドのパラメータ(インスタンスメソッドでは p0 = «this»)です。
.smali ファイルは安全に開けますか?
はい、これらはプレーンテキストファイルです。テキストエディタで表示しても実行されることはありません。
APK を smali にデコンパイルすることは合法ですか?
合法性は管轄区域やユースケースによって異なります。相互運用性、セキュリティ研究、個人利用を目的としたリバースエンジニアリングは一般的に許可されていますが、改変された APK の再配布は著作権や利用規約に抵触する可能性があります。

参考文献

1GitHub - baksmali/smali (official, Google-maintained)github.com
2apktool - A tool for reverse engineering APKsapktool.org

さらに探索

データベース全体から

今週のトップ拡張子

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.BINCD/DVD Disc Image (BIN/CUE)
4.DATProgram Data File (generic)
5.PARTPartial Download File
6.EXEWindows Executable (Portable Executable)
7.NOMEDIAAndroid No-Media Marker File
8.RPMSGRestricted Permission Message
9.TMPTemporary File
10.TXTPlain Text File

関連する拡張子

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

無料ファイルツール

ブラウザで動作するファイル識別および画像変換ツール。すべてお使いのデバイス上で実行されます。

ツールボックスを開く

ファイル拡張子を A-Z で閲覧