http://erlang-china.org/study/erlang_sourcecode_protect.html
今天发现我写的代码在编译的时候总是出 两次编译结果不一致。原来我在从svn获取代码的时候,svn上面的beam文件是旧的。但我下载到本地的时候 创建日期与.erl文件的创建日期是一致的。导致make编译 出现两种不同的结果。
最后用
$ erlc +debug_info a.erl
$ erl -s a test -s c q -noshell
source code.
$
我们可以这样还原它的源码:
$ erl
1> {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(code:which(a), abstract_code]).
{ok,{a,[{abstract_code,
{raw_abstract_v1,
[{attribute,1,file,{"./a.erl",1}},
{attribute,1,module,a},
{attribute,3,export,[{test,0}]},
{function,5,test,0,
[{clause,5,[],[],[{call,6,{remote,...},[...]}]}]},
{eof,7}]}}]}}
2> io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(AC))]).
-file("./a.erl", 1).
-module(a).
-export([test/0]).
test() -> io:format("source code.~n", []).
ok
3>
查看得到答案的。
分享到:
相关推荐
在安全领域,反编译工具常用于恶意软件分析,通过查看其内部机制来识别潜在的威胁。在软件调试中,反编译也可以帮助开发者快速定位问题,比如查找特定函数的实现,或者理解第三方库的行为。 标签中的“DLL”提醒...
迷恋 BEAM文件Visual Studio Code的反...悬停从erlang源代码获取的操作码的说明(如果有) 装订线图像指示每个功能的开始 要激活扩展名,请从资源管理器视图中的.beam文件的上下文菜单中选择“反汇编BEAM”: 要求
项目包含的文件`mmake.beam`是Erlang的编译后代码,它可能是一个构建工具,用于自动化编译和管理Erlang源代码。`cfile`可能是一个处理文件操作的模块,游戏服务器通常需要读写各种配置文件或日志文件。`ctl`可能是一...
使用protobuf的Erlang库,如`protobuf-erlang`,可以将`.proto`文件转换为Erlang源代码(`.erl`文件),并编译成`.beam`模块,这些模块提供了序列化和反序列化的函数。 4. **使用protobuf生成的Erlang模块**:`...
这个模块可能是用于特定功能,比如游戏外挂或者某种工具,学习者可以反编译或使用调试工具研究其内部实现。 “录象.exe”看起来是一个可执行文件,可能是用于展示Erlang编程实例或教学过程的程序。通过运行这个程序...
编解码器通常处理数据的编码和解码,这里可能是指编译和反编译过程。 综上所述,这个项目或研究涉及了跨语言编译、字节码生成、函数式编程和并发计算的多个领域。通过这样的工具,开发者可以利用Haskell的特性来...
- `src/` 目录:包含enif_protobuf的源代码,包括Erlang和C/C++部分。 - `examples/` 目录:可能包含一些示例,展示如何使用enif_protobuf进行序列化和反序列化操作。 - `include/` 目录:可能包含必要的头文件,供...
这是Erlang的概念证明,它引入了对注释(模块级别或功能级别)中包含的源代码的自动测试。 这个想法来自方法,即将示例嵌入注释中,并在测试过程中对其进行额外检查。 大概的概念 总体思路很简单:扫描给定文件中的...
这可能涉及到阅读源代码、使用十六进制编辑器检查二进制内容,或者借助于专门的分析工具进行反编译或解码。在实际操作中,对这类文件的处理往往需要具备一定的编程知识和技术背景。 总的来说,“取易模块信息.zip”...
- `src/`: 存放Erlang源代码文件,如`chttpd.erl`,这是`chttpd`的主要模块。 - `ebin/`: 编译后的beam文件,是Erlang虚拟机执行的二进制形式。 - `test/`: 测试用例和脚本,用于验证`chttpd`的功能和性能。 - `...
Thrift-0.9.0是这个框架的一个版本,包含源代码,用户可以编译并根据需要在自己的项目中使用。 在Thrift的实现中,它首先定义了一种中间表示(IDL,Interface Description Language),允许开发者描述服务接口、...
- **protobuf-2.5.0.tar.bz2** 是一个压缩包,包含Protobuf库的源代码,版本为2.5.0,用于编译和生成对应语言的代码。 - **protobuf-rpc-readme.txt** 提供了关于Protobuf RPC的使用说明和指南。 - **protobuf-...
- 你可以通过Git克隆或直接下载RabbitMQ-c的源代码ZIP包。 - 使用CMake软件来构建适合Visual Studio 2015的项目文件。选择Win32程序,并配置生成DLL文件。 - 完成CMake配置后,生成VS工程,编译并生成所需的DLL...
- **高性能**:Thrift设计了高效的序列化和反序列化机制,以及高效的网络传输协议,使得数据交换速度快,适合大数据量传输。 - **跨语言**:支持多种编程语言,包括但不限于C++, Java, Python, PHP, Ruby, Erlang, ...
用户可以通过解压并编译这些源代码来获取exdgraph客户端库的最新开发版本。 综上所述,exdgraph项目是一个使用Elixir和gRPC技术构建的Dgraph客户端,它旨在简化与Dgraph数据库的交互。开发者可以利用gRPC的高性能...