乾坤大挪移!!!

来源:互联网 发布:淘宝名龙堂怎么样 编辑:程序博客网 时间:2024/03/29 01:33
//乾坤大挪移!!!
//VC 6 编译运行通过
//花了自己一个晚上,值得^_^
#include <windows.h>
#include <stdio.h>
int Max(int a, int b)
{
return a>b?a:b;
}
int Min(int a, int b)
{
return a<b?a:b;
}
void main()
{
char buf[100];

//*
#ifdef _DEBUG
#define CODE_LEN 56
DWORD dwAddrMin = (DWORD)Min + *((DWORD *)((char *)Min + 1))-5;
DWORD dwAddrMax = (DWORD)Max + *((DWORD *)((char *)Max + 1))-5;
for(int i=0; i<CODE_LEN; i++) buf[i] = *((char *)dwAddrMax+i);
#else
#define CODE_LEN 26
DWORD dwAddrMin = (DWORD)Min;
DWORD dwAddrMax = (DWORD)Max;
for(int i=0; i<CODE_LEN; i++) buf[i] = *((char *)dwAddrMax+i);
#endif

VirtualProtect((void *)dwAddrMin, CODE_LEN, PAGE_EXECUTE_READWRITE, 0);
VirtualProtect((void *)dwAddrMax, CODE_LEN, PAGE_EXECUTE_READWRITE, 0);
WriteProcessMemory(GetCurrentProcess(), (void *)dwAddrMax, (void *)dwAddrMin, CODE_LEN, 0);
WriteProcessMemory(GetCurrentProcess(), (void *)dwAddrMin, (void *)buf, CODE_LEN, 0);
//*/

printf("Min(1, 9) = %d/n", Min(1, 9));
printf("Max(1, 9) = %d/n", Max(1, 9));
}

============================
结果:
Min(1, 9) = 9
Max(1, 9) = 1
原创粉丝点击