mice86 cmdline
This commit is contained in:
parent
463d94f1ee
commit
a74ec83267
@ -26,7 +26,9 @@ const char* INTERCEPT_DNS[] = {
|
||||
"ib.naominet.jp", // Billing
|
||||
"aime.naominet.jp", // Aime (duh)
|
||||
"tenporouter.loc", // Routers
|
||||
"bbrouter.loc", "mobirouter.loc", "dslrouter.loc",
|
||||
"bbrouter.loc", //
|
||||
"mobirouter.loc", //
|
||||
"dslrouter.loc", //
|
||||
};
|
||||
|
||||
DNS_RECORDA dummy_record;
|
||||
|
@ -20,8 +20,8 @@ BOOL WINAPI FakeCreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
|
||||
CHAR commandLine[MAX_PATH + 1];
|
||||
WideCharToMultiByte(CP_ACP, 0, lpCommandLine, -1, commandLine, sizeof commandLine, NULL, NULL);
|
||||
|
||||
HANDLE child = start_and_inject(applicationName, commandLine, MICELIB);
|
||||
HANDLE child = start_and_inject(applicationName, commandLine, MICELIB, false);
|
||||
return child != NULL;
|
||||
}
|
||||
|
||||
void hook_processes() { hook("Kernel32.dll", "CreateProcessW", FakeCreateProcessW, (void**)&TrueCreateProcessW, 6); }
|
||||
void hook_processes() { hook("Kernel32.dll", "CreateProcessW", FakeCreateProcessW, (void**)&TrueCreateProcessW, 6); }
|
||||
|
@ -6,20 +6,55 @@
|
||||
|
||||
const char* VERSION = "0.0-pre";
|
||||
|
||||
int main(int argc, CHAR** argv) {
|
||||
bool boot_delay = false;
|
||||
bool gametest = false;
|
||||
char exe_name[MAX_PATH + 1] = "";
|
||||
|
||||
void print_help(char* exe) {
|
||||
log_info(BOOT_LOGGER, "Usage: %s [-h] [-t] [-b executable.exe] [-d]", exe);
|
||||
log_info(BOOT_LOGGER, " -h: Print this help message and exit");
|
||||
log_info(BOOT_LOGGER, " -t: Start the game in test mode");
|
||||
log_info(BOOT_LOGGER, " -b: Specify the game binary to use");
|
||||
log_info(BOOT_LOGGER, " -d: Wait for a debugger to attach when starting");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void parse_cmdline(int argc, char* argv[]) {
|
||||
for (int i = 1; i < argc; i++) {
|
||||
if (strcmp(argv[i], "-h") == 0) {
|
||||
print_help(argv[0]);
|
||||
} else if (strcmp(argv[i], "-b") == 0) {
|
||||
if (i + 1 == argc) print_help(argv[0]);
|
||||
strcpy(exe_name, argv[++i]);
|
||||
} else if (strcmp(argv[i], "-d") == 0) {
|
||||
boot_delay = true;
|
||||
} else if (strcmp(argv[i], "-t") == 0) {
|
||||
gametest = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
setup_logging();
|
||||
|
||||
log_info(BOOT_LOGGER, "Micetools version: %s", VERSION);
|
||||
|
||||
char path[MAX_PATH + 1];
|
||||
if (!locate_game(path, MAX_PATH + 1)) {
|
||||
log_error(BOOT_LOGGER, "Failed to locate a game");
|
||||
return 0;
|
||||
parse_cmdline(argc, argv);
|
||||
|
||||
if (exe_name[0] == '\0') {
|
||||
if (!locate_game(exe_name, MAX_PATH + 1)) {
|
||||
log_error(BOOT_LOGGER, "Failed to locate a game");
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
DWORD dwAttrib = GetFileAttributes(exe_name);
|
||||
if (dwAttrib == INVALID_FILE_ATTRIBUTES || dwAttrib & FILE_ATTRIBUTE_DIRECTORY) {
|
||||
log_error(BOOT_LOGGER, "%s: no such file found", exe_name);
|
||||
}
|
||||
}
|
||||
|
||||
char* cmdline = "";
|
||||
|
||||
log_info(BOOT_LOGGER, "%s %s", path, cmdline);
|
||||
char* cmdline = gametest ? "gametest" : "";
|
||||
log_info(BOOT_LOGGER, "%s %s", exe_name, cmdline);
|
||||
|
||||
char micepath[MAX_PATH + 1];
|
||||
if (!locate_library(micepath, MAX_PATH + 1)) {
|
||||
@ -27,7 +62,7 @@ int main(int argc, CHAR** argv) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
HANDLE game_proc = start_and_inject(path, cmdline, micepath);
|
||||
HANDLE game_proc = start_and_inject(exe_name, cmdline, micepath, boot_delay);
|
||||
if (!game_proc) return -1;
|
||||
|
||||
if (FAILED(WaitForSingleObject(game_proc, INFINITE))) {
|
||||
|
@ -68,7 +68,7 @@ bool inject_dll(HANDLE process, LPCSTR inject) {
|
||||
return remote_call(process, addr_LoadLibraryA, inject);
|
||||
}
|
||||
|
||||
HANDLE start_and_inject(LPCSTR path, LPSTR cmdline, LPCSTR inject) {
|
||||
HANDLE start_and_inject(LPCSTR path, LPSTR cmdline, LPCSTR inject, BOOL delay) {
|
||||
log_misc(BOOT_LOGGER, "Using %s for hooks", inject);
|
||||
STARTUPINFOA startupInfo;
|
||||
PROCESS_INFORMATION processInformation;
|
||||
@ -94,7 +94,9 @@ HANDLE start_and_inject(LPCSTR path, LPSTR cmdline, LPCSTR inject) {
|
||||
goto abort;
|
||||
}
|
||||
|
||||
// if (!inject_debug_wait(processInformation.hProcess)) goto abort;
|
||||
if (delay) {
|
||||
if (!inject_debug_wait(processInformation.hProcess)) goto abort;
|
||||
}
|
||||
if (!inject_dll(processInformation.hProcess, inject)) goto abort;
|
||||
|
||||
// Injection completed, let the program continue execution
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <Windows.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
HANDLE start_and_inject(LPCSTR path, LPSTR cmdline, LPCSTR inject);
|
||||
HANDLE start_and_inject(LPCSTR path, LPSTR cmdline, LPCSTR inject, BOOL delay);
|
||||
|
||||
#ifndef MICELIB
|
||||
#ifdef MICE_WIN32
|
||||
|
Loading…
Reference in New Issue
Block a user