//乾坤大挪移!!!
//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
//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