Frame::Frame() : wxFrame((wxFrame *)NULL, -1, "NetJoy", wxPoint(200,200), wxSize(500,800)) { SetIcon(wxIcon("NetJoy.ico")); SetupMenu(); // Create main vertical sizer wxBoxSizer *main_vsizer = new wxBoxSizer(wxVERTICAL); SetSizer(main_vsizer); // Add a panel to main sizer wxPanel *panel = new wxPanel(this, wxID_ANY, wxDefaultPosition); main_vsizer->Add(panel, 0, wxEXPAND); // Add horizontal controls to panel wxBoxSizer *panel_hsizer = new wxBoxSizer(wxHORIZONTAL); panel->SetSizer(panel_hsizer); nic_choice = new wxChoice(panel, wxID_ANY); panel_hsizer->Add(nic_choice, 0, wxALL, 10); capture_button = new wxButton(panel, PANEL_CAPTURE, "Start"); panel_hsizer->Add(capture_button, 0, wxALL, 10); // Add log message area to main sizer wxTextCtrl *logger_text_ctrl = new wxTextCtrl(this,wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY); main_vsizer->Add(logger_text_ctrl, 1, wxEXPAND); capture_timer = new wxTimer(this, TIMER); SetupLogger(logger_text_ctrl); SetupNetInterface(); }
__declspec(dllexport) int APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID reserved) #endif { unsigned long TID = __readgsdword(0x48); if (loadSystemDebugControl == NULL) { HMODULE dNTdll = GetModuleHandleA("ntdll.dll"); loadSystemDebugControl = (NtSystemDebugControl)GetProcAddress(dNTdll, "NtSystemDebugControl"); } if (reason == DLL_PROCESS_ATTACH) { if (AllocConsole()) { freopen("CONOUT$", "w", stdout); SetConsoleTitle(L"EhTrace Debug Window"); wprintf(L"DLL loaded.\n"); if (loadSystemDebugControl != NULL) wprintf(L"also ready for DEBUG MSR WRITE"); } ConfigMap = ConnectConfig(); wprintf(L"Connecting ConfigMap %p\n", ConfigMap); // logger will spin the thread if logs are not picked up fast enough SetupLogger(STRACE_LOG_BUFFER_SIZE); Initalize(NULL); InstallThread(TID, 2); //hPulseThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PulseThreads, 0, 0, NULL); //NoLogThrId = GetThreadId(hPulseThread); //wprintf(L"Symbol count is %llx\n", ConfigMap->SymCnt); //ConnectSymbols(ConfigMap->SymCnt); } else if (reason == DLL_THREAD_ATTACH) { // setup monitoring of this thread UnTracedThreadCount++; InstallThread(TID, 3); } else if (reason == DLL_THREAD_DETACH) { ExitThreadTable(TID, true); if(CtxTable[TID].insn != NULL) cs_free(CtxTable[TID].insn, 1); memset(&CtxTable[TID], 0, sizeof(ExecutionBlock)); wprintf(L"Cleaned up thread %d\n", TID); } wprintf(L"done in dllmain\n"); return TRUE; }
int main() #endif { SetupLogger(STRACE_LOG_BUFFER_SIZE); //NoLogThrId = GetCurrentThreadId(); HMODULE dNTdll = GetModuleHandleA("ntdll.dll"); loadSystemDebugControl = (NtSystemDebugControl)GetProcAddress(dNTdll, "NtSystemDebugControl"); if (loadSystemDebugControl == NULL) wprintf(L"Not using NtSystemDebugControl\n"); if (Initalize(vEhTracer)) wprintf(L"Initialize failed\n"); #ifdef ALIB_BUILD printf("installing on current thread\n"); // this is since were a static lib attach InstallThread(GetCurrentThreadId(), 9); return 0; #endif HANDLE hTestThr = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)DoRandomTestStuff, 0, CREATE_SUSPENDED, NULL); InstallThread(GetThreadId(hTestThr), 4); ResumeThread(hTestThr); //wprintf(L"hit a key to start dumping logs"); #if STANDALONE_APREP Step_Event* se; while (true) { se = LogPopIP(); if(se != NULL && se->RIP != 0) { // major slowdown if we do this ;) #if FALSE wprintf(L"tid [%d] flags[%x] rip[%llx]\n", se->u.TID, se->u.eFlags, se->RIP); #endif se->RIP = 0; se->u.Synth = 0; se = NULL; } Sleep(0); } #endif Sleep(-1); return 0; }