fossable/resplice

GitHub: fossable/resplice

一个基于 Rust 宏的二进制代码级热修补工具,解决在目标进程中精准替换机器码的痛点。

Stars: 1 | Forks: 0

# 使用 Rust 进行声明式二进制补丁 **resplice** 将“用 Rust 重写”提升到了全新高度。它是一个宏, 让用 Rust(稍微)重新实现机器代码的部分变得更有趣。 ## 示例说明 以一个简单的例子开始:将 1 + 1 用汇编实现: ``` 0000000000001670
: 1670: d10043ff sub sp, sp, #0x10 1674: b9000fff str wzr, [sp, #12] 1678: 52800040 mov w0, #0x2 167c: 910043ff add sp, sp, #0x10 1680: d65f03c0 ret ``` 现在用 Rust 重新实现它(实践中可能需要借助反编译器): ``` use resplice::Splice; #[Splice(begin = 0x1670, end = 0x1680)] fn add_one_plus_one() -> i32 { 1 + 1 } ``` 现在得到的结果是:原始二进制文件被我们自定义的函数增强了! 如果有足够的动力,我们可以重复这一过程,迭代地将整个程序用 Rust 反编译出来。 但大多数情况下,我们只关心反向工程几个特定部分。 ## 工作原理 从名字你可能已经猜到了,`Splice` 会强制将 Rust 函数的机器代码插入到目标二进制文件中(通过直接替换或跳转表)。 ## 使用方法 ``` use resplice::Splice; #[Splice(begin = 0x1000, end = 0x1020)] fn my_replacement_function() -> i32 { // Your Rust implementation here 42 } ```
标签:Rust, SOC Prime, Splice宏, 二进制增强, 二进制补丁, 云资产清单, 内存重编写, 函数替换, 动态补丁, 可视化界面, 声明式补丁, 宏, 开发工具, 机器码重写, 程序增强, 网络流量审计, 逆向工程, 通知系统, 静态修补