// ConsoleApplication10.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #include void * p_buffer; class CRender { public: CRender(int a2); virtual int multiplicar(int, int); virtual void set_name(char *); virtual char * get_name(); char name[200]; char flag; int age; }; int CRender::multiplicar(int a, int b) { return a * b; } char * CRender::get_name() { return name; } void CRender::set_name(char * temp2) { strcpy(name, temp2); } CRender::CRender(int edad) { age = edad; } int main(int argc, char *argv[]) { void * temp; unsigned int resul, c, t; unsigned int n, n2, x; char buffer[200]; int len1 = 200; void(*foo3)(void *); SetProcessDEPPolicy(1); printf("\nPlease Enter Your Two Numbers of Choice: "); scanf_s("%x%x", &n, &n2); while ((c = getchar()) != '\n' && c != EOF); printf("\nYour numbers are: %x %x", n, n2); foo3 = (void(*)(void *))&operator delete; p_buffer = buffer; if (argc != 2) { exit(1); } t = n*n2; CRender * pepe = new CRender(45); memcpy(buffer, argv[1], len1); pepe->flag = 0; resul = pepe->multiplicar(n, n2); if (len1 % 2 != 0) { len1--; } pepe->set_name(buffer); printf("\nAddress 3 %x.\n", (unsigned int)pepe); printf("\nResultado Multiplicar .. %x\n", resul); // VirtualAlloc(buffer, 200, 0x1000, 0x40); if (pepe->flag != 0) { printf("\nResultado Multiplicar muy grande bye bye\n"); foo3(pepe); } temp = malloc(t); printf("\nAddress 1 %x.\n", (unsigned int)temp); if (pepe->flag == 25) { exit(1); __asm xchg ecx, esp __asm pop ebp __asm retn } LoadLibraryA(LPCSTR("pthreadVC2.dll")); fgets((char *)temp , t, stdin); while ((c = getchar()) != '\n' && c != EOF); pepe->multiplicar(2, 4); return 0; }