第0课 VM
来源:互联网 发布:电脑游戏多开器 端口 编辑:程序博客网 时间:2024/06/15 13:29
#include <windows.h>#define vPush 0x11 //Whatever#define vCall 0x22 //Whatever#define vEnd 0xffBYTE VMData[] = {vPush, 0x00, 0x00, 0x00, 0x00, //push xxxxvPush, 0x00, 0x00, 0x00, 0x00, //push xxxxvPush, 0x00, 0x00, 0x00, 0x00, //push xxxxvPush, 0x00, 0x00, 0x00, 0x00, //push xxxxvCall, 0x00, 0x00, 0x00, 0x00, //call xxxxvEnd };__declspec(naked) void VM(PVOID VMData){__asm{//取得参数mov ecx, dword ptr ss : [esp + 4]__vStart : //这段把push 做了4个 //去第一个字节 mov al, byte ptr ds : [ecx] cmp al, vPush je __vPush cmp al, vCall je __vCall cmp al, vEnd je __vEnd __vPush : inc ecx //往后加1mov edx, dword ptr ds : [ecx]push edxadd ecx, 4jmp __vStart__vCall : //call函数inc ecxmov edx, dword ptr ds : [ecx]call edxadd ecx, 4jmp __vStart__vEnd :ret}}int main(int argc, char* argv[]){char *Caption = "VM";char *Text = "Hello World"; //__asm //{ //push MB_OK //mov eax,Caption //push eax //mov eax,Text //push eax //push 0 //call dword ptr ds:[MessageBoxA] //}//修改虚拟指令的数据__asm{ mov eax, eaxmov eax, eaxmov eax, eaxmov eax, eax}*(DWORD*)(VMData + 5 + 1) = (DWORD)Caption;*(DWORD*)(VMData + 10 + 1) = (DWORD)Text;*(DWORD*)(VMData + 20 + 1) = (DWORD)MessageBoxA;//执行虚拟指令VM(VMData);return 0;}
阅读全文
0 0
- 第0课 VM
- vm
- VM
- VM
- VM
- VM
- vm
- VM
- vm
- 第6章 Smart-VM操作系统的实现
- 第7章 Smart-VM虚拟化层的实现
- 第6章 Smart-VM操作系统的实现
- 第7章 Smart-VM虚拟化层的实现
- VM下安装slackware12.0
- VM7.0 + ubuntu 11.04 vm tools安装
- xenserver6.0 使用本地ISO安装VM
- velocity + struts2.0调用.vm文件
- [Erlang危机](5.1.0)VM检测概述
- CSS3响应式布局 要点
- MySQL函数大全
- Ruby操作MongoDB(进阶三)-集合collection
- Android插件化快速入门与实例解析(VirtualApk)
- 做一枚优秀的攻城狮,还需要学会UML。
- 第0课 VM
- HTML5基础入门学习心得体会
- java事务全解析(二)--失败的案例
- Unity中向量有关的方法
- 【Hibernate】(四)基础映射
- windows连接Mysql 出错
- 实现一个简单的计时器
- jQuery获取全选反向,以及获取全选的值
- poj3608Bridge Across Islands(旋转卡壳)