//#pragma comment(linker, "/SECTION:.text,RWE") #include<stdio.h> #include<Windows.h> #define CRYPT_LEN 0x0b //#pragma optimize("", no) int for_crypt(int a,int b) { return a+b; } void crypt_it(unsigned char*p,int c) { int a; // VirtualProtect(p,c,PAGE_EXECUTE_READWRITE,(PDWORD)&a); for(a=0;a<c;a++) *p++^=0x66; // VirtualProtect(p,c,PAGE_READONLY,(PDWORD)&a); } int main() { DWORD a; VirtualProtect(for_crypt, CRYPT_LEN, PAGE_EXECUTE_READWRITE, &a); crypt_it((unsigned char*)for_crypt,CRYPT_LEN); //расшифровываем защитную функцию crypt_it((unsigned char*)for_crypt,CRYPT_LEN); //выводим защитную функцию printf("%02xh",for_crypt(0x69,0x66)); //зашифровываем обратно защитную функцию crypt_it((unsigned char*)for_crypt,CRYPT_LEN); VirtualProtect(for_crypt, CRYPT_LEN, a, &a); return 0; } |