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 |
|
#37 in #hacking
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