我有要反编译的 Erlang 应用程序的梁文件。
应用程序使用“debug_info”选项编译和构建。这是用于构建应用程序的 emake 文件片段:
{"apps/my_app/src/*", [debug_info, nowarn_export_all, {outdir, "apps/my_app/ebin"},{pa, "deps"},{parse_transform, lager_transform}, {parse_transform, events_transform}]}.
我已经尝试过来自 beam_lib 模块的函数,但得到以下错误:
1>{ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(abc,[abstract_code]).
** exception error: no match of right hand side value {error,beam_lib,{not_a_beam_file,'abc.beam'}}
我还尝试了以下帖子中提到的解决方案,即在没有 debug_info 的情况下编译的反编译 erlang .beam 文件, 但它对我不起作用。我收到以下错误:
1> file:write_file("/tmp/my_module_disasm", io_lib:fwrite("~p.\n", [beam_disasm:file(abc)])).
ok
/tmp/my_module_disasm 文件包含:
{error,beam_lib,{not_a_beam_file,'abc.beam'}}.
有人有想法吗?