VM保护简单原理
来源:互联网 发布:系统网络架构图 编辑:程序博客网 时间:2024/05/16 19:37
转自:http://bbs.pediy.com
/*VM初探作者:blueapplezQQ:124272113Email:blueapple1987@163.comhttp://bbs.pediy.com/*/#include "windows.h"/* 下面是虚拟指令 我们只模拟了2条指令 *///push 0x12345678 push一个4字节的数#define vPushData 0x10//call 0x12345678 call一个4字节的地址#define vCall 0x12//结束符#define vEnd 0xff//一个字符串char *str = "Hello World";/*这是我们构造的虚拟指令, 数据还不 在mian里面我们进行了修改push 0push 0push offset str ;把字符串的地址入栈push 0call MessageBoxA ;*/BYTE bVmData[] = {vPushData,0x00, 0x00, 0x00, 0x00, vPushData,0x00, 0x00, 0x00, 0x00,vPushData,0x00, 0x00, 0x00, 0x00,vPushData,0x00, 0x00, 0x00, 0x00,vCall,0x00, 0x00, 0x00, 0x00,vEnd};//这就是简单的虚拟引擎了_declspec(naked) void VM(PVOID pvmData){__asm{//取vCode地址放入ecxmov ecx, dword ptr ss:[esp+4]__vstart://取第一个字节到al中mov al, byte ptr ds:[ecx]cmp al, vPushDataje __vPushDatacmp al, vCallje __vCallcmp al, vEndje __vEndint 3__vPushData:inc ecxmov edx, dword ptr ds:[ecx]push edxadd ecx, 4jmp __vstart__vCall:inc ecxmov edx, dword ptr ds:[ecx]call edxadd ecx, 4jmp __vstart__vEnd:ret}}int main(int argc, char* argv[]){//修改虚拟指令的数据*(DWORD *)(bVmData+10 + 1) = (DWORD)str;*(DWORD *)(bVmData+20 + 1) = (DWORD)MessageBoxA;//执行虚拟指令VM(bVmData);return 0;}
- VM保护简单原理
- VM保护技术
- 2010.07.30_ximo_简单的VM保护程序的爆破分析(vmp 2.05)
- VM(虚拟机技术)保护
- Java VM 原理
- jive license保护原理
- esd保护原理
- 差动保护原理
- 锂电池保护板原理
- 锂电池保护板原理
- 锂电池保护板原理
- 锂电池保护板原理
- 磁盘保护原理简介
- iOS加固保护原理
- VM原理_内存篇
- DEP机制的保护原理
- Java .class文件保护原理
- 主流锂电池保护板原理
- VC++信息安全编程(6)实现杀毒程序,杀灭D3病毒范例
- jQuery(1)
- 给想当程序员的大二学生的建议
- 图的深度、广度优先搜索(邻接矩阵)
- Webkit Timer study notes
- VM保护简单原理
- 一些计算机编程的经典书籍总结
- VC++信息安全编程(8)实现扫描内存,实现内存读写
- BS架构的打印功能 (转http://www.cnblogs.com/mzhanker/archive/2011/06/02/2067691.html)
- cxf开发实践(添加SSL支持)
- Hi,我是一枚程序猿
- 宝宝总是哭闹的原因
- python doctest 错误
- UML工具列表