Dll-рдЖрд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЦреЗрд▓ рдореЗрдВ рд╕рдВрд╢реЛрдзрди

рдПрдХ рдЦреЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд╕рд╛рде рд╡рд░реНрдмрд┐рд╕ рд╡рд░реНрдЯрд╕ - рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрд╛рд╕реНрдЯ рдордВрддреНрд░ рд╣реИрдВред

рдпрд╣ рд╣рдорд╛рдпрдХ рд╣рдХреЛрдмрдпрд╛рди рдХрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдкрд╣рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдЯрд┐рдкрд┐рдХрд▓ рдирд┐рдпрдВрддреНрд░рдг рд╣реИрдВред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЦреЗрд▓ рд╕реНрдлрд┐рдВрдХреНрд╕ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдкрд╣рд▓реЗ (рдорд╛рдиреНрдпрддрд╛ рдмрд╣реБрдд рдмрд╛рд░ рдпрд╛рдж рдЖрддреА рд╣реИ), рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ 20 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рд╣рд░ рд╕реЗ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдЖрдо рддреМрд░ рдкрд░ рдЪреБрдкред

рдбреЗрд╡рд▓рдкрд░реНрд╕, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреАрдмреЛрд░реНрдб рд╕реЗ рдордВрддреНрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗ рдереЗ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рд╕реНрдлрд┐рдВрдХреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред

рдЙрдирдореЗрдВ рд╕реЗ рддреАрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдЦреЗрд▓ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рдЧрднрдЧ), рдореБрдЭреЗ рдЕрднреА рднреА рд╕рд╣реА рдПрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдерд╛ (рдХрдо рд╕реЗ рдХрдо рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ)ред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЦреЗрд▓ рд╕реЗ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд▓реЗрдЦ рдХреЛ рдЬрдирд░реЗрдЯрд┐рдВрдЧ .DLL рд░реИрдкрд░реНрд╕ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдпрд╛ред

рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдирд╛рдо (рдЬреЛ рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рднреА рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред

рдирд┐рд░реНрдпрд╛рдд рд╕реВрдЪреА рдкреНрд░рдкрддреНрд░ рдХреЗ рдбреАрдлрд╝-рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИ:

EXPORTS func1=_func1 @1 func2=_func2 @2 

рдлрдВрдХреНрд╢рди рд░реИрдкрд░ рд╕реНрд╡рдпрдВ рд╣реИрдВ:

 _declspec(naked) void _func1() { __asm jmp dword ptr [procs + 1 * 4]; } 

рдпрд╣ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдереЛрдбрд╝рд╛ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдореИрдВрдиреЗ рдПрдХрдорд╛рддреНрд░ рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рдпрд╛ - рдЬрд┐рд╕реЗ рд▓реЙрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЙрдЬрд┐рдХ рдХрд╣рд╛рдВ, рдХрдм рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд╕реЗ рдХрдЪреНрдЪреЗ рдирдореВрдиреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ ps_process_raw () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереА, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдирд┐рд░реНрдгрдп ps_get_hyp () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрд╡рдпрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдмрд╛рдж рдореЗрдВ (рдмрд╣реБрдд рджреЗрд░ рд╕реЗ), рдореИрдВрдиреЗ рдЕрднреА рднреА рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реНрдлрд┐рдВрдХреНрд╕ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛ (рдЬрд╣рд╛рдВ рдпрд╣ рд╕рднреА рд╡рд░реНрдгрд┐рдд рдерд╛)ред

рдпрд╣ ps_process_raw () рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреБрдВрдЬреА рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛ рдордВрддреНрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧреАред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрддреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде DllMain () рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рдЬреНрдЮрд╛рдкрди рджрд┐рдП рдЧрдП рд╣реИрдВ:

 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { HINSTANCE hinst_dll; if (fdwReason == DLL_PROCESS_ATTACH) { hinst_dll = LoadLibraryA("pocketsphinx_orig.dll"); if (!hinst_dll) return 0; for (i = 0; i < 93; i++) procs[i] = GetProcAddress(hinst_dll, import_names[i]); for (i = 0; i < 256; i++) { _itoa(i, &buf[i][0], 10); GetPrivateProfileStringA("main", &buf[i][0], 0, &buf[i][0], MAX_PATH, ".\\settings.ini"); } i = 0; } else if (fdwReason == DLL_PROCESS_DETACH) FreeLibrary(hinst_dll); return 1; } 

Settings.ini рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд░реВрдк рд╣реИ:

 [main] 49=String 1 50=String 2 

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, buf рд╕рд░рдгреА рдореЗрдВ рдордВрддреНрд░ рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрдВрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЭреВрда рдмреЛрд▓реЗрдВрдЧреЗред

рд╣рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗ:

 void find_key() { if(!i) { for (i = 0; i < 256; i++) if (buf[i][0]) if (GetAsyncKeyState(i) >> 1) { i = (int)&buf[i][0]; return; } if (i == 256) i = 0; } } 

Ps_process_raw () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЖрд╡рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

  _declspec(naked) void _ps_process_raw() { find_key(); __asm jmp dword ptr [procs + 78 * 4]; } 

рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЙрд╕ рд╕рдордп рдЬрдм рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдореЗрдВ рдбрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ - рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред

рддреИрдпрд╛рд░реА рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдиреА рдмрдЯрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ ps_get_hyp () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд╛рдкрд╕реА рдорд╛рди рдмрджрд▓реЗрдВред

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЗ рдереЛрдбрд╝рд╛ рд╣реЗрд░рдлреЗрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  _declspec(naked) void _ps_get_hyp() { static unsigned int return_address; _asm { //save return address push eax mov eax, dword ptr [esp+4] mov return_address, eax pop eax //call original ps_get_hyp add esp, 4 call dword ptr [procs + 22 * 4] sub esp, 4 //replace result (if key was pressed) cmp i, 0 je end mov eax, i xor ecx,ecx mov i, ecx end: //restore return address push eax mov eax, return_address mov dword ptr [esp+4], eax pop eax ret } } 

рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ "рдмрджрд▓реЗрдВ рдкрд░рд┐рдгрд╛рдо (рдпрджрд┐ рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛)" рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдореЗрдВ рд╣реИред
рдпрджрд┐ рдкреЙрдЗрдВрдЯрд░ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рд▓реМрдЯреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рд╕рдм рдХреБрдЫ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдирдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ)ред рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рд╣рд╛рдВ, рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЯреЗрдврд╝реЗ-рдореЗрдврд╝реЗ рдмрд┐рдВрджреБ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛, рдЬрд┐рд╕реЗ рдореИрдВ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВрдиреЗ DllMain рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛)ред

рдХрд┐рд╕реА рдФрд░ рдХреЗ рд╕реНрдЯреИрдХ рдкрд░ рдЪрдврд╝рдирд╛ рднреА рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЦреНрдп рдХреЛрдб 100 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдХрдо рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рддреБрдЪреНрдЫ рд╣реИред

рд╕реНрд░реЛрдд рдХреЛрдб
рдлрд╝рд╛рдЗрд▓ рдбреАрдлрд╝
рдмрд╛рдЗрдирд░реА + рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓

рд╕реНрдерд╛рдкрдирд╛:

  • \ In Verbis Virtus \ Binaries \ Win32 \ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдореВрд▓ рдкреЙрдХреЗрдЯреНрд╕рдлрд┐рдирдХреНрд╕ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред
  • рдкрд╛рд╕ рдХреЗ рд░реИрдкрд░ рдкреЙрдХреЗрдЯреНрд╕рдлрд┐рдирдХреНрд╕ред рдбреАрдПрд▓ рд▓рдЧрд╛рдПрдВ
  • \ In Verbis Virtus \ Binaries \ Win32 \ UserCode рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, settings.ini рдбрд╛рд▓реЗрдВ

рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рд╕реБрдЭрд╛рд╡ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi437884/


All Articles