Wdestroier/sogen_dart
GitHub: Wdestroier/sogen_dart
为 Sogen 用户态二进制模拟器提供 Dart 原生 FFI 绑定,使 Dart/Flutter 开发者能够在代码中模拟运行 Windows 和 Linux 程序并拦截其 API 调用。
Stars: 2 | Forks: 0
# Sogen Dart 绑定
[Sogen](https://github.com/momo5502/sogen) 的原生 Dart FFI 绑定。
Sogen 是一个用于 Windows 和 Linux 二进制文件的用户态模拟器。每一条指令、内存访问和 API 调用都可以被 hook、检查和重写,并且整个模拟器状态都可以被快照和恢复。
Windows 和 Linux API 涵盖了工厂和后端选择、执行、
快照和序列化状态、内存和寄存器、调度、进程和
线程视图、诊断、端口、回调、模块以及底层 hook。
Windows 还提供同步的 API 观察/拦截功能。Linux 则提供
符号 hook 和调试器控制。
## 构建
要求:
- Dart 3.12 或更高版本(只需安装 Flutter)
- Git
- 在 Windows 上,需要安装带有 C++ 桌面开发工作负载的 Visual Studio
- 在 Linux 上,需要 C++20 编译器和平台开发头文件
- 在 macOS 上,需要 Xcode 命令行工具
## 示例
包含测试样本、DLL 等内容的现成模拟器 root 环境可从 获取。
```
import 'package:sogen/ctypes.dart' show uint32;
import 'package:sogen/windows.dart' show apiCall, createApplication;
main() {
final app = createApplication(r'c:/test-sample.exe', emulationRoot: './root');
final onSleep = apiCall(
cc: .stdcall,
params: const [uint32],
cb: (call, params) {
final milliseconds = params[0];
print('Sleep($milliseconds)');
},
);
app.hooks.apis['Sleep'] = onSleep;
app.start();
}
```
## 安全与许可证
Sogen 并不是一个恶意软件沙箱边界。模拟器 root 环境、路径映射、
网络映射和原生依赖可能会暴露宿主机资源。请仅运行
适合宿主机环境的工作负载。
Sogen 及其绑定均基于 `GPL-2.0-only` 许可证授权。
输出
标签:API钩子, Dart, FFI, 二进制模拟