hello:
i want to test to call a function in a different way, but failed.....
the program compiled and run, it listed the files...and then the process crashed with errors...
what's wrong with my code:
using wxDevC++, Windows xp sp3
Code:#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { typedef BOOL (*FINDCLOSE)(HANDLE); FINDCLOSE fc=(FINDCLOSE)GetProcAddress(GetModuleHandle("Kernel32"),"FindClose"); void* oldProc=fc; BYTE* vfc=(BYTE*)oldProc; BYTE* buffer=malloc(170); // allocate enough memory to hold the code memcpy(buffer,vfc,168); void* orif=buffer; PROC findc=(PROC)orif; WIN32_FIND_DATA find_data; HANDLE find_handle; find_handle = FindFirstFile("C:\\*.*", &find_data ); if( find_handle != INVALID_HANDLE_VALUE ) { /// list files in this directory do { printf(find_data.cFileName); printf("\n"); }while( FindNextFile( find_handle, &find_data ) ); findc( find_handle ); // i replace the FindClose() } system("PAUSE"); return 0; }




Reply With Quote