ioallocate/Ira
GitHub: ioallocate/Ira
Ira 是一个通过机器学习检测软件调试器的概念验证项目,利用鼠标轨迹分类和屏幕截图目标识别两种方式识别逆向分析工具的存在。
Stars: 0 | Forks: 0
# Ira
Ira - Interactive Reverser Analysis 是一个通过机器学习检测软件调试器的 POC。
## 感叹号
这个 POC 目前仅展示了 2 种可用于以这种方式检测软件调试器的攻击向量。
每个训练样本均由 [x64-dbg](https://x64dbg.com/) 执行并生成。
## 问号
### 鼠标移动
定制开发软件 [VectorField](Mouse%20Movement/vector) 允许你复制调试器的元素和 UI 布局,对路径进行可视化和定义,并以 {t, x, y} 的 JSON 数组格式导出它们。这些是从点击开始到点击结束,带有以毫秒为单位的时间戳的原始屏幕坐标。
然后,路径会被平移到原点并旋转,使端点位于 x 轴上,接着通过起点到终点的距离进行缩放(归一化)。随后将其沿弧长重新采样为恰好 50 个等距点。最后被展平为一个 100 维的向量。
训练过程包含一个 3 层 MLP(128->64->32->1,sigmoid 输出),该网络使用记录的正样本和生成的负样本(直线、偏离路径的随机曲线、带噪声的插值)进行训练。
BCELoss,300 个 epochs。为了更高效地训练和采样你的人类样本,请参考使用定制开发软件 [Nodes](Mouse%20Movement/nodes)。
### 屏幕截图 mss 将完整的桌面屏幕截图作为原始像素捕获,并将其编码为 PNG 字节数据,然后 POST 到 API(Flask 服务器)。 YOLOv8n 在 conf=0.7 的设置下对图像运行推理。它会在检测到的任何调试器周围输出边界框。它经过训练可以识别 UI 的特定视觉布局(包括标题栏、面板和工具栏)。 大约 5000 张带标注的屏幕截图通过 Roboflow 数据增强处理后构建成数据集。 ## 加号 ### 鼠标移动 #### 节点对 在“nodes”项目中,在 entry.cpp(window1_nodes)中定义新坐标,并通过新的 patternStep 案例扩展状态机。接下来,在 entry.cpp 中添加新的输出目录,并在 model.py/negative_generator.py 的 DIRS 中添加新条目。记录你的样本,生成负样本并进行训练。最后一步需要你在 recorder.py 中添加带有适当阈值的追踪器步骤。 #### 调试器 将 entry.cpp 中的 find_window_by_process("x64dbg.exe") 更改为新的目标进程,并重新映射节点坐标以匹配该窗口的布局。重新记录并重新训练——这些模型是与窗口无关的,只是节点位置发生了变化。 #### 准确率 为了提高准确率,如果你自己的操作出现假阴性,请记录更多的正样本并降低阈值。如果出现假阳性,请提高阈值。 ### 屏幕截图 #### 调试器 记录桌面上打开的新工具的屏幕截图,并在 Roboflow 中对它们进行标注。首先,在 data.yaml 的 names 列表中添加新的类名,并递增 nc。然后重新训练。 #### 置信度 为了提高检测置信度,请添加更多样化的屏幕截图,例如不同的主题、分辨率、部分遮挡的窗口和多显示器设置。在导出之前,通过在 Roboflow 中添加 occlusion/cutout 进行更深度的数据增强。 #### 导出 点击你的 Roboflow 项目并生成数据集版本,即可导出新数据集。 点击“Export Dataset”。格式选择 YOLOv8 —— 下载 zip 文件并将其解压到你的 train.py 旁边,然后直接使用 data.yaml。它将自动填充正确的路径、nc 和 names。当前的 data.yaml 只是一个模板,应将其替换为你实际的数据集。 ## 添加 ### 鼠标移动 - [Python 3](https://www.python.org/downloads/) - [PyTorch](https://pytorch.org/get-started/locally/) - [NumPy](https://numpy.org/install/) - [pywin32](https://github.com/mhammond/pywin32) - [OpenCV](https://github.com/opencv/opencv-python) - [Matplotlib](https://matplotlib.org/) - [Qt6](https://www.qt.io/download-qt-installer) - [CMake](https://cmake.org/download/) - [Visual Studio](https://visualstudio.microsoft.com/downloads/) ### 屏幕截图 - [Python 3](https://www.python.org/downloads/) - [Ultralytics](https://github.com/ultralytics/ultralytics) - [Flask](https://flask.palletsprojects.com/) - [Pillow](https://python-pillow.org/) - [mss](https://github.com/BoboTiG/python-mss) - [Rust](https://www.rust-lang.org/tools/install) - [Visual Studio](https://visualstudio.microsoft.com/downloads/) ## 致谢 我要感谢 [Crim](https://github.com/NtProtectVirtualMemory) 参与并帮助我构思了这个想法。
VectorField — path design tool![]() |
Nodes — live recorder![]() |
### 屏幕截图 mss 将完整的桌面屏幕截图作为原始像素捕获,并将其编码为 PNG 字节数据,然后 POST 到 API(Flask 服务器)。 YOLOv8n 在 conf=0.7 的设置下对图像运行推理。它会在检测到的任何调试器周围输出边界框。它经过训练可以识别 UI 的特定视觉布局(包括标题栏、面板和工具栏)。 大约 5000 张带标注的屏幕截图通过 Roboflow 数据增强处理后构建成数据集。 ## 加号 ### 鼠标移动 #### 节点对 在“nodes”项目中,在 entry.cpp(window1_nodes)中定义新坐标,并通过新的 patternStep 案例扩展状态机。接下来,在 entry.cpp 中添加新的输出目录,并在 model.py/negative_generator.py 的 DIRS 中添加新条目。记录你的样本,生成负样本并进行训练。最后一步需要你在 recorder.py 中添加带有适当阈值的追踪器步骤。 #### 调试器 将 entry.cpp 中的 find_window_by_process("x64dbg.exe") 更改为新的目标进程,并重新映射节点坐标以匹配该窗口的布局。重新记录并重新训练——这些模型是与窗口无关的,只是节点位置发生了变化。 #### 准确率 为了提高准确率,如果你自己的操作出现假阴性,请记录更多的正样本并降低阈值。如果出现假阳性,请提高阈值。 ### 屏幕截图 #### 调试器 记录桌面上打开的新工具的屏幕截图,并在 Roboflow 中对它们进行标注。首先,在 data.yaml 的 names 列表中添加新的类名,并递增 nc。然后重新训练。 #### 置信度 为了提高检测置信度,请添加更多样化的屏幕截图,例如不同的主题、分辨率、部分遮挡的窗口和多显示器设置。在导出之前,通过在 Roboflow 中添加 occlusion/cutout 进行更深度的数据增强。 #### 导出 点击你的 Roboflow 项目并生成数据集版本,即可导出新数据集。 点击“Export Dataset”。格式选择 YOLOv8 —— 下载 zip 文件并将其解压到你的 train.py 旁边,然后直接使用 data.yaml。它将自动填充正确的路径、nc 和 names。当前的 data.yaml 只是一个模板,应将其替换为你实际的数据集。 ## 添加 ### 鼠标移动 - [Python 3](https://www.python.org/downloads/) - [PyTorch](https://pytorch.org/get-started/locally/) - [NumPy](https://numpy.org/install/) - [pywin32](https://github.com/mhammond/pywin32) - [OpenCV](https://github.com/opencv/opencv-python) - [Matplotlib](https://matplotlib.org/) - [Qt6](https://www.qt.io/download-qt-installer) - [CMake](https://cmake.org/download/) - [Visual Studio](https://visualstudio.microsoft.com/downloads/) ### 屏幕截图 - [Python 3](https://www.python.org/downloads/) - [Ultralytics](https://github.com/ultralytics/ultralytics) - [Flask](https://flask.palletsprojects.com/) - [Pillow](https://python-pillow.org/) - [mss](https://github.com/BoboTiG/python-mss) - [Rust](https://www.rust-lang.org/tools/install) - [Visual Studio](https://visualstudio.microsoft.com/downloads/) ## 致谢 我要感谢 [Crim](https://github.com/NtProtectVirtualMemory) 参与并帮助我构思了这个想法。
标签:Apex, Bash脚本, DOM解析, 云资产清单, 凭据扫描, 反调试, 可视化界面, 机器学习, 目标检测, 计算机视觉, 逆向工具, 逆向工程

