#dll #proxy #hacking

已删除 proxyify

使用Rust编写的DLL代理生成器。注意:我已经将这个crate重命名为proxygen。如果您想使用这个crate名称,请联系我。

4 个版本 (2 个重大更改)

0.4.1 2023年11月7日
0.4.0 2023年11月7日
0.3.0 2023年11月7日
0.2.0 2023年11月7日
0.1.0 2023年11月7日

#37 in #hacking

MITGPL-3.0 许可证

17KB
321

proxyify

使用Rust编写的DLL代理生成器。轻松代理任何DLL。

特性

  • 导出DLL函数名
  • 生成代理DLL Rust项目
  • 将新的DLL导出合并到现有的代理DLL项目中
  • 更新现有DLL项目的导出(自动取消代理被截获的函数)

使用方法

A DLL export dumper and proxy generator

Usage: proxyify <COMMAND>

Commands:
  dump-exports  Prints out the exported functions from a given PE file
  generate      Generate a new proxy DLL project for the given DLL file
  merge         Merges the given DLL's new exports into an existing DLL proxy project
  update        Updates an exisitng DLL proxy project's exports based on the intercepted exports
  help          Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

注意:生成的项目需要使用nightly Rust构建。

示例用法

proxyify generate path/to/some_library.dll my_some_library_proxy

就这样,您已经拥有了一个可编译的DLL代理Rust项目。

然后,将您想要替换的导出添加到 intercepted_exports.rs 中。

例如:

#[no_mangle]
pub extern "C" fn some_dll_export(x: u64, y: u64) -> u64 {
    println!("Proxy some_dll_export function called...");
    5
}

然后,在构建之前,在项目根目录下运行此命令来更新您的导出

proxyify update .

使用Rust nightly版本构建DLL

cargo +nightly build --release

接下来,将原始DLL重命名,并在末尾添加一个下划线。将目标文件夹中的dll文件复制到与原始DLL相同的文件夹中。

运行程序,您应该会看到一个控制台出现。您发送到stdout或stderr的任何内容都将出现在该控制台。

依赖项

~10–20MB
~269K SLoC