CRAW now runs on Windows 7 too - the problem was that Windows 7 has moved some functi...
[craw.git] / craw / main.cpp
blob4f63f23dc9802f26700177205c8c3b6bf4d35b98
1 #include <iostream>
2 #include <windows.h>
3 #include <ail/string.hpp>
4 #include <ail/file.hpp>
5 #include <boost/thread.hpp>
6 #include <boost/foreach.hpp>
7 #include "utility.hpp"
8 #include "anti_debugging.hpp"
9 #include "hide.hpp"
10 #include "patch.hpp"
11 #include "exception_handler.hpp"
12 #include "arguments.hpp"
13 #include "python.hpp"
14 #include "interceptor.hpp"
16 unsigned module_base;
18 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
20 if(fdwReason == DLL_PROCESS_ATTACH)
22 process_command_line();
24 module_base = reinterpret_cast<unsigned>(hinstDLL);
25 if(verbose)
26 write_line("Module base: " + ail::hex_string_32(module_base));
28 initialise_dll_vector();
29 anti_debugging();
31 if(!
33 hide_modules() &&
34 apply_hot_patches() &&
35 install_exception_handler() &&
36 process_main_thread() &&
37 python::initialise_python()
41 console_output = true;
42 write_line("A fatal error occured, the program is not going to continue, please hit enter to terminate the process.");
43 std::string unused;
44 std::getline(std::cin, unused);
45 exit_process();
48 if(prompt_mode)
49 initialise_console();
52 return TRUE;