#decompiler #disassembler #decompilation #file-path #input-file #fileinfo

bin+lib retdec

一个Rust库和工具,提供对retdec.com反编译服务的便捷访问

1 个不稳定版本

使用旧的Rust 2015

0.1.0 2017年5月21日

#7 in #decompiler

MIT/Apache

140KB
3K SLoC

包含 (DOS exe, 76KB) tests/samples/pe-hello.exe

retdec-rust

docs.rs crates.io

一个Rust库和工具,通过它们的公共 REST API 提供对 retdec.com 反编译服务的便捷访问。

您可以将库集成到自己的工具中

extern crate retdec;

use retdec::{Decompiler, DecompilationArguments, File, Settings};

let decompiler = Decompiler::new(
    Settings::new()
        .with_api_key("YOUR-API-KEY")
);
let mut decompilation = decompiler.start_decompilation(
    DecompilationArguments::new()
        .with_input_file(File::from_path("hello.exe")?)
)?;
decompilation.wait_until_finished()?;
let output_code = decompilation.get_output_hll_code()?;
print!("{}", output_code);

或者您可以使用提供的工具进行独立的反编译

$ decompiler -k YOUR-API-KEY hello.exe

无论哪种方式,您都会得到反编译的C代码

//
// This file was generated by the Retargetable Decompiler
// Website: https://retdec.com
// Copyright (c) 2017 Retargetable Decompiler <[email protected]>
//

int main(int argc, char ** argv) {
    printf("Hello, world!\n");
    return 0;
}

此外,该软件包还提供了对 fileinfo 服务(二进制文件分析)的访问。

状态

目前,该软件包仅提供对 反编译文件分析 服务的非常基本的支持。 更多功能的支持正在开发中。

目前支持的 retdec.com API 的概述可在此处找到 here.

安装

要将软件包包含到您的项目中以便将其用作库,请将以下行添加到您的 Cargo.toml 文件中

[dependencies]
retdec = "0.1.0"

如果您想使用开发版本(当前的 master 分支),请使用以下两行代替

[dependencies]
retdec = { git = "https://github.com/s3rvac/retdec-rust" }

如果您只想使用命令行工具(decompilerfileinfo),请按以下方式安装项目

cargo install retdec

文档

自动生成的API文档在此处可用

  • master(开发版本)
  • 0.1.0(最新稳定版本)

贡献

欢迎贡献。注意

  • 要生成API文档,请运行

    cargo doc --lib --no-deps
    
  • 要运行单元测试,请执行

    cargo test --lib
    
  • 要运行文档测试,请执行

    cargo test --doc
    
  • 要运行所有测试,包括集成测试,请执行

    RETDEC_API_KEY=YOUR-API-KEY cargo test
    

    注意:在运行集成测试之前,您需要将 RETDEC_API_KEY 环境变量设置为您的API密钥。集成测试与 retdec.com 的API通信,因此需要一个有效的API密钥。

许可

根据您选择的以下任一项许可

任选。

从其他语言访问

如果您想从其他语言访问 retdec.com 反编译服务,请查看以下项目

  • retdec-python - 用于从Python访问服务的库和工具。
  • retdec-cpp - 用于从C++访问服务的库和工具。
  • retdec-sh - 从shell访问服务的脚本。

依赖项

~13–22MB
~386K SLoC