ある日ElixirのSlackにて、コンパイルされたElixirモジュールを逆コンパイルする方法を見かけたので、遊んでみます。
論よりRUN
michalmuskala/decompileをインストールする
mix archive.install github michalmuskala/decompile
Elixirプロジェクトを作る
❯ mix new toukon
❯ cd toukon
❯ ls
README.md lib mix.exs test
❯ cat lib/toukon.ex
defmodule Toukon do
@moduledoc """
Documentation for `Toukon`.
"""
@doc """
Hello world.
## Examples
iex> Toukon.hello()
:world
"""
def hello do
:world
end
end
コンパイルする
❯ mix compile
❯ ls
README.md _build lib mix.exs test
❯ tree _build
_build
└── dev
└── lib
└── toukon
├── consolidated
│ ├── Elixir.Collectable.beam
│ ├── Elixir.Enumerable.beam
│ ├── Elixir.Hex.Solver.Constraint.beam
│ ├── Elixir.IEx.Info.beam
│ ├── Elixir.Inspect.beam
│ ├── Elixir.List.Chars.beam
│ └── Elixir.String.Chars.beam
└── ebin
├── Elixir.Toukon.beam
└── toukon.app
逆コンパイルする
❯ mix decompile Toukon --to expanded
❯ ls
Elixir.Toukon.ex README.md _build lib mix.exs test
❯ cat Elixir.Toukon.ex
defmodule Toukon do
def hello() do
:world
end
end
ご参考までに