我的个人博客网站云诺说上线啦!所有文章都搬到新地址了,点击围观吧!
hello~ ,
如果erlang源码被意外删除只留下编译后的beam文件的时候怎么办?如果源码能还原也就大事化了, 如果不能就懵了?都有手误的是时候,今天就来聊聊erlang的反编译,到时也不至于乱了手脚。
在仔细翻阅文档之后终于找到了erlang反编译相关的说明,地址:http://erlang.org/doc/man/beam_lib.html 。beam_lib 模块就是对deam文件格式的接口。
其中最主要的是这两行代码:
{ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(Beam,[abstract_code]).
io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(AC))]).
so ~ 废话少说,直接上代码。
源码:
-module(test).
-export([hello/0,say/0]).
hello() ->
"hello ~".
%%@doc say hello~
say() ->
lists:foreach(fun hello/0 , lists:seq(1, 10)).
先看下面