应用安全 --- vmp流程

news/2025/10/29 5:57:04/文章来源:https://www.cnblogs.com/GKLBB/p/19173068

应用安全 --- vmp流程

VMP (2.0.3-2.13) 寻找OEP详细教程

📋 前置准备

  • 工具: OllyDbg / x64dbg / IDA Pro
  • 插件: OllyDumpEx、Scylla(用于后续dump)
  • 目标: 被VMP保护的程序

🎯 方法一:VirtualProtect断点法(经典方法)

第一步:设置VirtualProtect断点

text
1. 打开调试器,加载目标程序
2. Ctrl+G 跳转到 VirtualProtect 函数
3. 在VirtualProtect入口处下断点(F2)

第二步:分析区段保护修改

assembly
运行程序(F9),每次断在VirtualProtect时:
- 查看堆栈参数:
  参数1: lpAddress (要修改的内存地址)
  参数2: dwSize (大小)
  参数3: flNewProtect (新保护属性)
  参数4: lpflOldProtect (旧保护属性指针)

- 记录修改的是哪个区段:
  .text   - 代码段
  .data   - 数据段
  .rdata  - 只读数据段

关键点:当VirtualProtect修改 .text段 的属性为可执行(如PAGE_EXECUTE_READ)时,说明即将执行原始代码!

第三步:寻找VM_RETN

text
1. 最后一次VirtualProtect后,不要按F9
2. 单步跟踪(F8),寻找特征:
   - PUSHAD/PUSHFD (保存寄存器)
   - 大量垃圾代码
   - 寻找RETN指令
   
3. 在关键RETN处下断点
4. F9运行到RETN

第四步:.text段内存断点

text
1. 查看内存映射(M键或View->Memory)
2. 找到.text段基址
3. 右键 -> Breakpoint -> Memory, on access(访问断点)
4. F9运行
5. 断下时查看EIP,可能已在OEP或附近

🎯 方法二:ESP定律法(更简单)

完整步骤:

assembly
1. 程序停在入口点
2. 记录ESP的值(例如:0012FFA4)
3. 右键ESP寄存器 -> Follow in Dump
4. 在数据窗口,选中前4字节 -> Breakpoint -> Hardware, on access -> DWORD
5. F9运行
6. 断下后,单步几下(F8),通常会到达OEP

特征识别:
- 看到PUSH ebp / MOV ebp, esp
- 或 PUSH ebx / PUSH esi / PUSH edi
- 标准的函数序言 = OEP!

🎯 方法三:内存镜像法(针对2.0x版本)

text
步骤:
1. Ctrl+G -> ImageBase(程序基址,如00400000)
2. 右键 -> Follow in Dump
3. 在数据窗口,右键 -> Breakpoint -> Memory, on execution
4. F9运行
5. 第一次断下继续F9
6. 第二/三次断下,查看附近代码,可能是OEP

🎯 方法四:StrongOD插件自动化

text
使用OllyDbg + StrongOD插件:

1. 加载程序
2. 插件 -> StrongOD -> VMP
3. 选择版本(2.0x)
4. 点击"查找OEP"
5. 自动停在OEP或附近

手动验证:
- 查看代码是否正常
- 是否有标准函数序言
- 交叉引用是否合理

✅ OEP识别特征

真正的OEP通常有这些特征:

assembly
典型C/C++程序:
00401000  PUSH EBP
00401001  MOV EBP, ESP
00401003  SUB ESP, XXX

或Delphi程序:
00401000  PUSH EBX
00401001  PUSH ESI
00401002  PUSH EDI

或简单程序:
00401000  CALL XXXXXXXX  ; 调用初始化函数
00401005  MOV EAX, XXX

错误的位置特征:

  • 大量垃圾指令
  • 不正常的跳转
  • 没有函数调用
  • 全是NOP或重复指令

📊 调试示例(实战)

assembly
假设目标:test.exe (VMP 2.08)

1. OD加载,停在: 00D51000
2. 下VirtualProtect断点
3. F9运行,第1次断下:修改.data段
4. F9运行,第2次断下:修改.rsrc段
5. F9运行,第3次断下:修改.text段 ← 关键!
   
   堆栈参数显示:
   00401000  ; lpAddress (.text段基址)
   00003000  ; dwSize
   00000020  ; PAGE_EXECUTE_READ

6. F8单步几下,看到:
   00D52341  POPAD
   00D52342  POPFD
   00D52343  RETN
   
7. F8执行RETN后,跳到:00401000

8. 查看00401000处代码:
   00401000  55           PUSH EBP
   00401001  8BEC         MOV EBP, ESP
   00401003  6AFF         PUSH -1
   
   ✅ 这就是OEP!

⚠️ 注意事项

  1. 不同版本差异:

    • VMP 2.0x 相对简单
    • VMP 2.13 可能有多层虚拟化
  2. 多次虚拟机嵌套:

    • 可能需要多次使用方法
    • 注意识别真假OEP
  3. STOLEN BYTES:

    • OEP前几个字节可能被偷取
    • 需要从虚拟机中提取还原
  4. 后续工作:

    • 找到OEP只是第一步
    • 还需Dump内存、修复IAT
    • 使用Scylla或ImportREC修复导入表

🔧 完整脱壳流程

text
1. 找OEP (上述方法)
2. Dump内存 (OllyDumpEx)
3. 修复IAT (Scylla)
4. 测试脱壳后程序
5. 如有问题,检查Stolen Bytes

需要具体某个样本的详细演示吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语言-地图slam ConceptGraphs: Open-vocabulary 3D scene graphs for perception and planning, - MKT

语言-地图slam ConceptGraphs: Open-vocabulary 3D scene graphs for perception and planning,ConceptGraphs: Open-vocabulary 3D scene graphs for perception and planning,好的,​​ConceptGraphs​​ 这篇论文…

语义slam Fusion++ - MKT

语义slam Fusion++ 2. Fusion++的核心思想:范式转变 Fusion++彻底改变了游戏规则。它不再将世界看作一个统一的几何空间,而是将其看作由​​背景​​和​​多个独立的物体实例​​组成的集合。 思想一:实例级表示…

点云配准 Deep closest point: Learning representations for point cloud registration, - MKT

点云配准 Deep closest point: Learning representations for point cloud registration,

tryhackme-网络安全基础-命令行- Linux Shells-23

tryhackme-Cyber Security 101-Command Line-Linux Shells 房间地址:https://tryhackme.com/room/linuxshells 这是网络安全入门的基础模块的计算机科学基础知识:Linux Shells,序号 01 表示第一篇文章,当你不知道从…

开发Minecraft Forge模组遇到的问题记录

开发工具:IDEA 2022.2.5 JDK:21.0.7 Forge:60.0.11 这里一定要清楚这些版本号,很多问题都是因为版本不兼容引起的,所以先声明使用工具的版本号,接下来踩坑开始(遇到的坑大概率会按照逻辑的先后顺去说明,而不是…

【ESP32 在线语音】 待写 TTS

链接:https://blog.csdn.net/vor234/article/details/138387195?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522dac311b95071f02fedec5ea5a048fdf6%2522%252C%2522scm%2522%253A%252220140713.130102334…

Fusion++ 语义实例分割​​与​​稠密SLAM重建​​在TSDF子图层面进行了深度融合 - MKT

Fusion++ 语义实例分割​​与​​稠密SLAM重建​​在TSDF子图层面进行了深度融合 3. Fusion++ 的完整工作流程 ​​步骤一:基于RGB-D帧的实例分割(每帧)​​输入每一帧RGB-D图像。 使用2D实例分割网络(如Mask R-C…

tryhackme-网络安全基础-命令行- Windows PowerShell-22

tryhackme-Cyber Security 101-Command Line-Windows PowerShell 房间地址:https://tryhackme.com/room/windowspowershell 这是网络安全入门的基础模块的计算机科学基础知识:Windows PowerShell,序号 01 表示第一篇…

【ESP32 在线语音】音频接收的缓存机制和网络发送机制

首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441Serial.println("Setup I2S ...");i2s_install();i2s_setpin();esp_err_t err = i2s_start(I2S_PORT_0);其中的 i2s_install() 配置了 …

XCPC英语学习day2

2024ICPC昆明 A. Antivicus 在介绍网络流的时候,几乎还没开始讲,pet chicken指出如何解决这个问题。老师惊呼:我们的禽流感太棒了。 ——Roasted-chicken Htrule进入了流感季。 Hyrule由n个城市组成,由m条有向道路…

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体阀门专业制造商,精选PFA/四氟阀门优质品牌解析

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体阀门专业制造商,精选PFA/四氟阀门优质品牌解析 行业背景与发展现状 在半导体制造、生物医药、精细化工等高技术领域,高纯流体输送系统的可靠性与洁净度直接关系到产品…

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体专用阀门,PTFE/FEP/PFA材质隔膜阀源头企业综合评测

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体专用阀门,PTFE/FEP/PFA材质隔膜阀源头企业综合评测 在半导体制造、生物医药、精细化工等高技术领域,高纯流体输送系统的稳定性和可靠性直接关系到生产质量和工艺安全。…

【ESP32 在线语音】音频接收的缓存机制

首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441Serial.println("Setup I2S ...");i2s_install();i2s_setpin();esp_err_t err = i2s_start(I2S_PORT_0);其中的 i2s_install() 配置了 …

我在iOS/Swift工程中成功编译了HarfBuzz!

我在iOS/Swift工程中成功编译了HarfBuzz!https://github.com/HusterYP/HarfBuzziOS/tree/main 跨端渲染又进一步!!

Python access mysql and insert data batch by batch

pip install mysql-connector or pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple/create table t2(id bigint primary key auto_increment,firstname varchar(100) not null defaul…

CodeForces-2153D Not Alone

tag: 结论题,一维线性 DPCodeForces-2153D Not Alone tag: 结论题,一维线性 DP给定一个环形序列 \(b\),长度为 \(m\),每次操作可以将一个数加一或减一。 问最少需要多少次操作,可以使序列 \(b\) 中每一个元素至少…

Codeforces Round 1062 (Div. 4)

A. Square?点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {int a, b, c, d;std::cin >> a >> b >> c >> d;if (a == b && b == c && c =…

一文吃透银行账务打通体系闭环 - 智慧园区

银行体系的复杂性,往往源于“账务、账户、会计、科目”之间的模糊边界。本文将系统拆解这四者的逻辑关系,从业务流、资金流到会计流,构建一套可理解、可复用的认知框架,帮助产品人真正打通银行产品设计的底层闭环。…