int CConfig::get_str( TCHAR* key, LPTSTR str_buf, LPTSTR def ) { #ifdef HOLYSHIT_EXPORTS return Pluginreadstringfromini(plugin_mod, key, str_buf, def); #else return Getfromini(NULL, PLUGIN_NAME, key, L"%s", str_buf); #endif }
extc int _export cdecl ODBG_Plugininit(int ollydbgversion, HWND hw, ulong* features) { if (ollydbgversion < PLUGIN_VERSION) return -1; hwMain = hw; Labeless& ll = Labeless::instance(); ll.setPort(WORD(Pluginreadintfromini(ll.hInstance(), "port", ll.port()))); char buff[MAX_PATH] = {}; Pluginreadstringfromini(ll.hInstance(), "filer_ip", buff, ""); ll.setFilterIP(buff); if (!Labeless::instance().init()) { log_r("labeless::init() failed."); return -1; } Addtolist(0, 0, "Labeless"); Addtolist(0, -1, " Written by Aliaksandr Trafimchuk"); return 0; }
// Receives commands from windows menus. extc void _export cdecl ODBG_Pluginaction(int origin, int action, void *item) { switch (origin) { case PM_MAIN: case PM_DISASM: break; default: //Other windows ignored return; } char s[256]; HINSTANCE hinst = hinstModule(); HWND hwmain = hwndOllyDbg(); OPENFILENAME ofn={0}; switch (action) { case 0: // Run script // common dialog box structure char szFile[260]; // buffer for file name // Initialize OPENFILENAME //ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwmain; ofn.lpstrFile = szFile; // // Set lpstrFile[0] to '\0' so that GetOpenFileName does not // use the contents of szFile to initialize itself. // ofn.lpstrFile[0] = '\0'; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = "Olly Scripts\0*.osc;*.txt\0All\0*.*\0"; ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; Pluginreadstringfromini(hinst, "ScriptDir", buff, 0); ofn.lpstrInitialDir = buff; ofn.lpstrTitle = "Select Script"; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; // Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE) //Comdlg32.lib { // Load script ollylang->LoadScript(ofn.lpstrFile); if (ollylang->wndProg.hw) { SetForegroundWindow(ollylang->wndProg.hw); SetFocus(ollylang->wndProg.hw); } // Start script ollylang->Resume(); } break; case 1: // Abort MessageBox(hwmain,"Script aborted!","ODbgScript",MB_OK|MB_ICONEXCLAMATION); ollylang->Reset(); ollylang->Pause(); break; case 2: // Pause ollylang->Pause(); break; case 3: // Resume ollylang->Resume(); break; case 4: // Step ollylang->Step(1); script_state = ollylang->script_state; break; case 5: // Force Pause (like Pause Key) focusonstop=4; ollylang->Pause(); script_state = ollylang->script_state; break; case 10: sprintf(s,"ODbgScript plugin v%i.%i.%i\n" "by [email protected]\n\n" "From OllyScript written by SHaG\n" "PE dumper by R@dier\n" "Byte replacement algo by Hex\n\n" "http://odbgscript.sf.net/ \n\n" "Compiled %s %s", VERSIONHI,VERSIONLO,VERSIONST, __DATE__, __TIME__); MessageBox(hwmain,s,"ODbgScript",MB_OK|MB_ICONINFORMATION); break; case 20: { string directory, helpfile; getPluginDirectory(directory); helpfile = directory + "\\ODbgScript.txt"; ShellExecute(hwndOllyDbg(),"open",helpfile.c_str(),NULL,directory.c_str(),SW_SHOWDEFAULT); } break; case 21: // MRU List in CPU Window case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: { action-=20; char key[5]="NRU "; key[3]=action+0x30; ZeroMemory(&buff, sizeof(buff)); Pluginreadstringfromini(hinst,key,buff,0); // Load script ollylang->LoadScript(buff); mruAddFile(buff); // Save script directory char* buf2; GetFullPathName(buff,sizeof(buff),buff,&buf2); *buf2=0; Pluginwritestringtoini(hinst, "ScriptDir", buff); ollylang->Resume(); if (ollylang->wndProg.hw) { SetForegroundWindow(ollylang->wndProg.hw); SetFocus(ollylang->wndProg.hw); } break; } case 30: { initProgTable(); break; } case 31: { initLogWindow(); break; } case 32: // Edit Script { ShellExecute(hwndOllyDbg(),"open",ollylang->scriptpath.c_str(),NULL,ollylang->currentdir.c_str(),SW_SHOWDEFAULT); break; } case 11: { // string x = "Hej"; // string y = ToLower(x); // __asm nop; } case 12: { // Broadcast(WM_USER_CHALL, 0, 0); } // t_thread* thr = Findthread(Getcputhreadid()); // byte buffer[4]; // ulong fs = thr->reg.limit[2]; // BUG IN ODBG!!! // fs += 0x30; // Readmemory(buffer, fs, 4, MM_RESTORE); // fs = *((ulong*)buffer); // fs += 2; // buffer[0] = 0; // Writememory(buffer, fs, 1, MM_RESTORE); // cout << endl; // ulong addr = t->reg.s[SEG_FS]; // Readmemory(buffer, addr, 4, MM_RESTORE); // cout << hex << &buffer; /* HMODULE hMod = GetModuleHandle("OllyScript.dll"); if(hMod) // Check that the other plugin is present and loaded { // Get address of exported function int (*pFunc)(char*) = (int (*)(char*)) GetProcAddress(hMod, "ExecuteScript"); if(pFunc) // Check that the other plugin exports the correct function pFunc("xxx"); // Execute exported function } cout << hex << hMod << endl;*/ //403008 401035 /*DWORD pid = Plugingetvalue(VAL_PROCESSID); DebugSetProcessKillOnExit(FALSE); DebugActiveProcessStop(pid); break;*/ //t_module* mod = Findmodule(0x401000); //cout << hex << mod->codebase; //cout << hex << mod->codebase; break; default: break; } }