erlang beam_lib

一个简单的测试模块

-module(test1).

-export([test/0]).  

test() ->  

  io:format("source code.~n", []).

 

通过compile:file("test1",[debug_info]),将test.erl文件编译,会生成一个test.beam文件

 

通过{ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(code:which(test1), [abstract_code]).

  io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(AC))]).

对test.beam文件操作么,可以获取test.beam文件中的源码内容。

结果如下:

-file("e:/workspace/demo/src/test1.erl", 1).

-module(test1).

-export([test/0]).

test() -> io:format("source code.~n", []).

ok

 

 

encrypt_debug_info 加密处理

建立一个.erlang.crypt 文件,文件内容是[{debug_info, des3_cbc, [], "my_source_code_secret_key"}]. %%string类型的内容是密钥,可以自己随便填写,

                                                            存放和test.erl文件同一目录下

通过compile:file("test1",[encrypt_debug_info])对test.erl文件进行编译,这时会生成一个test.beam文件,

只有当test.beam文件和.erlang.crypt 文件都在的时候,beam_lib:chunks(code:which(test1), [abstract_code])才能通过。

posted on 2014-09-02 14:25  Vinlan  阅读(500)  评论(0)    收藏  举报

导航