erlic122

erlic122

Hi, I’m new to this ERLANG and BEAM language, I’m looking for a person with experience in Erlang, I want to know how I can decompile and compile a Beam file from my server, I know very little about that type of file or how I can edit it, when opening the file I find this at the beginning FOR1 can be a key piece, more information to the intern, I attach the file in case you need to see it, thank you very much in advance Payment for the service

File .Beam
https://github.com/granados12/decompile/blob/main/holiday_role_data4.beam?raw=true

Showing Posts 29 to 20

lud

lud

It should output an .erl file in the current working directory.

:\testproject\myproject>mix run tt.exs > holiday_role_data.erl
warning: function deps/0 is unused
  mix.exs:23

** (CompileError) mix.exs:10: undefined function deps/1 

How is your mix.exs file like? The deps({:decompilerl, github: "niahoo/decompilerl"}) is strange.

Generally you will have a deps: deps(), call in the project/0 function of the mix.exs file and dependencies defined like this:

  defp deps do
    [
      # ...
      {:decompilerl, github: "niahoo/decompilerl"}
    ]
  end

But you do not need the dependency in your project, you can just install the tool:

mix archive.install github niahoo/decompilerl
# or
mix archive.install github michalmuskala/decompile
rayleigh

rayleigh

hi thx for the anwser.
But how to use this in description is only this

mix decompile ElixirModule --to erlang

But this not working.
And the other solustion with mix.exs
I change this

deps({:decompilerl, github: "niahoo/decompilerl"})

but not realy working get this error

:\testproject\myproject>mix run tt.exs > holiday_role_data.erl
warning: function deps/0 is unused
  mix.exs:23

** (CompileError) mix.exs:10: undefined function deps/1 (expected Myproject.MixProject to define such a function or for it to be imported, but none are available)
lud

lud

niahoo is me. I forked the thing because I wanted to use it as a mix task, I do not remember why. It works just fine but yes, I should merge.

The best would be a tool with all the output formats as in GitHub - michalmuskala/decompile · GitHub but with stdio output as a default and configurable output path as decompilerl does.

GitHub - michalmuskala/decompile · GitHub can output Elixir code directly now, I guess it is the best tool for newcomers.

al2o3cr

al2o3cr

Not sure what you mean; this link works fine for me: GitHub - niahoo/decompilerl: 🃏 Decompile Elixir modules to Erlang abstract code · GitHub

FWIW, that’s a fork of GitHub - aerosol/decompilerl: 🃏 Decompile Elixir modules to Erlang abstract code · GitHub which appears to have been updated much more recently.

rayleigh

rayleigh

looks like the github niahoo/decompilerl is no more there.
So its not possible to decompile beam files?

erlic122

erlic122 OP

Damn, what bad news, possibly on the part of erlang it can be done but I already looked for many ways on google and I can’t find it. wait if any user can have the answer, thank you very much in the same way

lud

lud

It means that the BEAM file does not contain the part that would allow you to reconstruct the erlang representation of the source code. Basically you will not be able to generate a .erl file from those files unfortunately.

Maybe there is a way to generate Erlang Code from BEAM instructions but I do not know.

erlic122

erlic122 OP

Hello, well, I don’t understand much since I’m new to this, but from what I understand your message is that when compiling the file, it loses some codes and doesn’t compile 100% since it eliminates unnecessary code, but I don’t understand how to solve the other the problem, I tried @lud solution and it works perfectly but for most of the files I used the steps indicated, I created a new file with mix new project and I followed the steps and it worked, but some files throw me the error that I mentioned above

al2o3cr

al2o3cr

I’m not sure what you mean - that code from decompilerl depends on the existence of the Abst chunk in the BEAM file it’s used on. If the chunk isn’t there, it’s not going to work.

Each step of the compilation process drops information that’s not important to it, so the process isn’t 100% reversible - for instance, decompilerl uses local variables like _@4 because the original names are not present in the AST.

The Code chunk throws away more information - for instance, the Abst chunk contains AST for “populate a record named :holiday_info” in a function like list_open_total:

list_open_total() ->
    [#holiday_total{id = 104,
                    name = lang:get(<<"HĐ Gộp SV"/utf8>>), type = 2,
                    start_time = {merge_day, 1},
                    end_time = {merge_day, 56, 86399}, status = 1,
                    is_show = 1},
     #holiday_total{id = 103,
                    name = lang:get(<<"HĐ Mở SV"/utf8>>), type = 1,
                    start_time = {open_day, 1},
                    end_time = {open_day, 56, 86399}, status = 1,
                    is_show = 1}].

The corresponding BEAM code from the Code section is “desugared”: the record syntax is shorthand for building a tuple that starts with {:holiday_total, ...:

   {:function, :list_open_total, 0, 2,
    [
      {:label, 1},
      {:line, 1},
      {:func_info, {:atom, :holiday_role_data}, {:atom, :list_open_total}, 0},
      {:label, 2},
      {:allocate_zero, 1, 0},
      {:move, {:literal, "HĐ Gộp SV"}, {:x, 0}},
      {:line, 2},
      {:call_ext, 1, {:extfunc, :lang, :get, 1}},
      {:move, {:x, 0}, {:y, 0}},
      {:move, {:literal, "HĐ Mở SV"}, {:x, 0}},
      {:line, 3},
      {:call_ext, 1, {:extfunc, :lang, :get, 1}},
      {:test_heap, 28, 1},
      {:put_tuple, 11, {:x, 1}},
      {:put, {:atom, :holiday_total}},
      {:put, {:integer, 103}},
      {:put, {:x, 0}},
      {:put, {:integer, 0}},
      {:put, {:literal, {:open_day, 1}}},
      {:put, {:literal, {:open_day, 56, 86399}}},
      {:put, {:integer, 1}},
      {:put, {:integer, 0}},
      {:put, {:integer, 0}},
      {:put, {:integer, 1}},
      {:put, {:integer, 1}},
      {:put_list, {:x, 1}, nil, {:x, 1}},
      {:put_tuple, 11, {:x, 2}},
      {:put, {:atom, :holiday_total}},
      ...
erlic122

erlic122 OP

This is the code you have, what should I change?

defp do_decompile(beam_code) do
    {:ok, {_, [abstract_code: {_, ac}]}} =
      :beam_lib.chunks(beam_code, [:abstract_code])

    :erl_prettypr.format(:erl_syntax.form_list(ac))
  end

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews