Hook-FAQ: Разбиране на стари и нови начини за инсталиране на системни куки. Hook-FAQ: Разбиране на стари и нови начини за инсталиране на системни куки Plugin за cs 1.6 кука

Web в cs1.6 или hook за cs 1.6, наречете го както искате - но това вече е доста често срещан плъгин във вашия брояч. Самият уеб плъгин в cs ви дава възможност да се движите по картата, сякаш сте паяк и летите с мрежа. Тоест вие се движите в мрежата. Самата настройка на уеб плъгина в cs1.6 ви позволява да го направите не само за администратори или за други лица, но и за всички играчи. Разбира се, ако сте злонамерен администратор, тогава уеб плъгинът в cs можете да го настроите само за себе си. По този начин, ограждайки нубовете да летят из картата като живо месо. По самата идея този уеб плъгин в cs се използва отдавна и в quake2, още през 2001 г. И това е кука - плъгинът за кука за cs 1.6 беше представен по-късно. Но това не променя настроението.

Как да използвате уеб в cs:
За да стартирате мрежата в cs1.6, трябва да напишете обвързване на ключ в конзолата. Например вземете "r"

Свържете "r" "+въже"

След това натиснете "r" и можем да летим като паяк в мрежата.

Cvars за уеб плъгина в cs:

amx_rope - Активиране|Деактивиране на уеб плъгина.
amx_rope_count - Колко пъти можете да използвате мрежата на рунд.

Както беше отбелязано по-горе, има друг плъгин за вашия cs сървър. Това е плъгин за кука за cs.
Използва се главно за мода prokreedz, за да се научите как да скачате правилно.

Как да инсталирате плъгин за кука за cs:
1) Копирайте файловете на приставката prokreedz_hook.amxxв категорията cstrike/добавки/amxmodx/.
2) След това отворете файла на приставката ( plugins.ini cstrike/addons/amxmodx/configs/) и пишете там prokreedz_hook.amxxза да работи.

Как да използвате кука в cs:
Завържете копчето за куката и полетете.

Свържете "r" "+hook"

Това е всичко. Можете да изберете всеки от двата плъгина и да ги използвате, за да се движите по картата.

Архивът съдържа уеб плъгини за cs1.6 и hook плъгини за cs

Радваме се да ви приветстваме в сайта, посветен на една от най-популярните игри в света – Counter-Strike. Нашият сайт съдържа много различни файлове за тази игра, различни модификации, свежи пачове, добавки.
Web в Counter Strike 1.6 е много популярен плъгин. Самият уеб плъгин ви позволява да навигирате по картата, сякаш сте паяк и навигирате в мрежата. Уеб плъгинът за cs 1.6 може да стане достъпен не само за администратори, но и за обикновени играчи, при условие че правилна настройка. Естествено, ако сте злонамерен администратор, тогава ще конфигурирате уеб плъгина само за себе си, като по този начин попречите на noobs да летят из картата като месо. Идеята за този плъгин се използва от дълго време, още в quake 2 (2001). Плъгинът за кука за cs 1.6 беше представен малко по-късно, но самото настроение не се променя от това.
Как правилно да използвате уеб в cs? В нашата история ще се опитаме да дадем точен отговор на този въпрос.
За да стартирате мрежата в cs 1.6, трябва да напишете обвързване към определен ключ в конзолата. Например, нека вземем бутона "А".
свързване "A" + въже
След това, като натиснете клавиша "A", можете да летите като паяк.
Представяме на вашето внимание cvars за уеб плъгина в cs:
amx_rope - включва и изключва плъгина;
amx_rope_count - показва колко пъти можете да използвате мрежата в един кръг.
Има още един плъгин за вашия CS - hook. Като правило се използва за prokreedz-mod, за да научите как да скачате правилно (по стандартите на играта).
За да инсталирате кука за CS, ще ви трябва:
1) Копирайте prokreedz_hook.amxx в плъгини cstrike/addons/amxmodx/.
2) Отворете (plugins. ini cstrike/addons/amxmodx/configs/) и за да работи, напишете prokreedz_hook.amxx там.
Не знаете как да използвате кука? Просто е, завържете бутона за куката и полетете като паяк - завържете "A" "+ кука".
Надяваме се да сме дали ясен отговор за всички сайтове и притежатели сървъри за игрина много популярен и често повдиган въпрос за това как правилно да използваме мрежата за COP, как да летим в нея. Този плъгин отваря нови възможности за играта и я прави още по-интересна, особено след като е толкова лесна за използване! Открийте нови възможности, следете най-новия Counter Strike и научете много нови и интересни неща.

Искате ли да станете Черният лорд на вашия компютър? Искате ли да знаете всички тайни на разработчиците на зловреден софтуер и антивирусни програми? Прочетете статията, медитирайте, осмислете основите на Дзен и нека просветлението се спусне върху вас (всеки спокойно, знанието за Дао и перфорацията на Шамбала в резултат на четенето на тази статия не е гарантирано от редакторите - бел. ред.)!

RTFM

Какво е кука? Това е механизъм, който ви позволява да проследите някакво събитие в операционната система. Разработен е от чичовците от Microsoft с най-добри намерения - да позволи на програмиста да решава проблемите си по-ефективно, като зададе контрол върху събитията на клавиатурата, мишката и много други. Той беше реализиран с помощта на добре познати функции: SetWindowsHook(Ex), UnhookWindowsHook(Ex) и CallNextHook(Ex).

Куката служи за прихващане на определени събития, преди те да достигнат до приложението. Тази функция може да реагира на събития и в някои случаи да ги промени или отмени. Функциите, които получават известия за събития, се наричат ​​"филтриращи функции" и се различават по типовете събития, които улавят. Пример е филтърна функция за улавяне на всички събития на мишката или клавиатурата. За да може Windows да извика филтърна функция, тази функция трябва да бъде инсталирана, тоест прикрепена към кука (например към кука на клавиатура). Прикачването на една или повече филтърни функции към кука се нарича настройка на куката. Ако множество филтърни функции са прикрепени към една и съща кука, Windows внедрява опашка от функции, като последната прикачена функция е в началото на опашката и първата функция в края на опашката.

С течение на времето благородната концепция за кука беше изопачена, причината за което бяха действията на писатели на вируси и зловреден софтуер. Първите вируси бяха, как да го кажа... наивни, предполагам. Те бяха отделен exe файл, директно извикващ желани функциисистеми. Мина време и антивирусите, които се появиха малко по-късно и внезапно станаха комерсиални, бързо се научиха да хващат вируси чрез сигнатури чрез просто сканиране оперативна паметили дисково пространство.

И тук, в разгара на вечната борба между писателите на вируси и техните "ловци", имаше един единствен въпрос, който все още е на дневен ред и ще бъде в близкото безкрайно бъдеще - това е въпросът за оцеляването в операционната система. Освен това е от значение и за антивирусите, тъй като за добър системен програмист, който пише вируси / руткитове, премахването на антивирусния процес от системата не е много трудна задача.

Следователно можем спокойно да кажем, че една от задачите на антивирусите е способността да запазят своя процес непокътнат и защитен от злонамерените действия на вируса. Като цяло днес куките трябва да се разбират като установяване на контрол над основното системни функцииоперационна система, от която зависи жизнеспособността на всяка програма - говорим, като правило, за функциите за работа с процеси, нишки, мрежа и интернет и др.

„Но какво да кажем за SetWindowsHook?“ - питаш ме. — Последният век — отговарям. Вече не е кошер да се използват.

какво имаме

Най-лесният начин за инсталиране на кука в системата е чрез създаване на така наречената прокси функция. С други думи, трябва да решите коя функция прихващате и да намерите адреса на нейното извикване. За да направите това, функцията GetProcAddress обикновено се използва по следния начин: GetProcAddress(GetModuleHandle("ntdll.dll"), "CsrNewThread").

Просветените хора обаче знаят, че почти винаги се прихваща от avers и за да намерят адреса на функцията, те използват анализирането на таблицата за импортиране на определена библиотека, обикновено ntdll.dll, kernel32.dll (kernelbase.dll в Windows7 ) или advapi32.dll.

int MyNewFunction(void *param1,
int param2, bool param3)
{
return OriginalFunction(param1,
param2, param3);
}

След това трябва да презапишете адреса на извикване на OriginalFunction с вашия собствен - тоест с MyNewFunction.

Сега, ако някой иска да извика OriginalFunction за изпълнение, първо ще бъде извикана вашата прокси функция MyNewFunction, която след това ще прехвърли контрола към оригиналния адрес. Вероятно 8 куки от 10 работят по такъв прост начин.Този метод е удобен само с простотата си, но в същото време е ужасен гръб за аверите. как? Помислете сами - всичко, от което аверът се нуждае, е да сравни бившия, "легитимен" адрес на функцията с това, което е в действителност. Ако се различават, алармираме. Между другото, възниква следващият въпрос: къде да вземем точно този адрес на оригиналната функция? Няма нужда да гадаете много - чете се от желания файл на диска. Този подход се основава на предположението, че вирусът няма да закърпи експортната таблица на файл на диска, ограничавайки се до корекция на виртуална памет.

Така че да продължим. Както казах, използването на кука като прокси функция, макар и удобно нещо, е, първо, бледо, и второ, подходящо е само за начинаещи. Това не е за вас :). Най-често срещаният тип кука е снаждане. Сигурен съм, че сте чували тази дума много пъти. В нашия случай това е запис в началото на функцията на петбайтова последователност, която е jmp команда на адреса на манипулатора на прихващане. Тук първият байт е jmp кодът на операцията, останалите четири байта са адреса на вашата функция.

Ако трябва да извикате прихваната функция, тогава преди да я замените, трябва да запазите нейните първоначални байтове и да ги възстановите, преди да извикате. недостатък този методсе състои в следното: ако след възстановяване на началото на функцията е настъпило превключване на контекст към друга нишка на приложение, тогава тя ще може да извика функцията, заобикаляйки прихващача. Този недостатък може да бъде коригиран чрез спиране на всички странични нишки на приложението преди повикването и стартиране след повикването. И разбира се, снаждането, подобно на прокси функциите, също се открива лесно чрез метода за сканиране на паметта, тъй като веднага ще стане ясно, че извикването на функция отива някъде другаде.

Като цяло, гледайки напред, трябва да предам на широката публика, че почти всички методи за прихващане на извиквания на функции по някакъв начин се откриват чрез сканиране на паметта. С изключение на два метода, но прочетете за това по-долу.

IAT, EAT и други зверове

Възниква въпросът: какво и най-важното къде можете да поставите куките си? Първото нещо, което идва на ум е, разбира се, да поставите прихващането в таблицата с адреси за импортиране (IAT). Когато приложение използва функция от библиотека, приложението трябва да импортира адреса на функцията. Всеки DLL, използван от приложение, е описан в структура, наречена IMAGE_IMPORT_DESCRIPTOR. Тази структура съдържа името на DLL, чиито функции се импортират от приложението, и два указателя към два масива от структури IMAGE_IMPORT_BY_NAME. Структурата IMAGE_IMPORT_BY_NAME съдържа имената на импортираните функции, използвани от приложението.

Кога операционна системазарежда приложението в паметта, структурата IMAGE_IMPORT_DESCRIPTOR се чете и всеки необходим DLL се зарежда в паметта на приложението.
След като DLL бъде картографиран, операционната система поставя всяка импортирана функция в паметта и презаписва един от масивите IMAGE_IMPORT_BY_NAME с адреса за изпълнение на функцията.

След като кука се появи в адресното пространство на приложението, вашият вирус ще може да прочете PE формата на целевото приложение в паметта и да замени целевия адрес на функцията в IAT с адреса на куката. След това, когато се извика закачената функция, вашата функция за закачане ще бъде изпълнена вместо оригиналната функция. Малко по-рядък вариант, който се среща в природата, реализиран съгласно принципа „Ако планината не отиде при Магомед ...“ - прихващане на експортната адресна таблица (EAT), когато, напротив, таблицата за експортиране на Dll е закърпена , който експортира целевата функция.

STELTH Hooks: Хвани ме, ако можеш

Както писах по-горе, основният недостатък на горните методи за прихващане е принудителното модифициране на паметта, което неминуемо води до откриването му от аверите. Има ли изход? Колкото и да е странно, има. Дори две. Първият е да регистрирате вашия манипулатор на изключения, след което той да получи контрол. Това може да стане например чрез загуба на част от паметта. Вторият метод е леко модифициран първи. Тоест вие, както и преди, регистрирате манипулатор на изключения, но за да ги генерирате, използвате техника, известна сред дебъгерите. Както знаете, регистрите за отстраняване на грешки на процесора се използват за отстраняване на грешки в приложения и обикновено са достъпни от kernelmod. Те обаче могат да бъдат зададени и от приложения с потребителски режим, като се използват функциите GetThreadContext/SetThreadContext. Регистрите за отстраняване на грешки се използват за задаване на точки на прекъсване (точки на прекъсване) при достъп до място в паметта или изпълнение.

Има общо осем регистъра, предназначението им е следното:

  • DR0 - DR3 - Всеки от тези регистри съдържа линейния адрес на една от четирите контролни точки. Ако пейджингът е активиран, тогава техните стойности се превеждат във физически адреси според общ алгоритъм;
  • DR4 - DR5 - Регистрите са запазени и не се използват в процесора i486;
  • DR6 - Регистър на състоянието на отстраняване на грешки. Той отчита условията, възникнали при хвърляне на изключение за отстраняване на грешки (номер 1). Регистърните битове се настройват от хардуера и се нулират от софтуера;
  • DR7 - Регистърът определя вида на достъпа до паметта, свързан с всяка контролна точка.

И така, всичко, което трябва да направите, е да зададете хардуерна точка на прекъсване (известна още като int 1) в началото на функцията, така че процесорът да генерира така нареченото „едностъпково изключение“ (едностъпково изключение) и след това, като зададете вашите собствен манипулатор на изключения: AddVectoredExceptionHandler (0, (PVECTORED_EXCEPTION_ HANDLER)DebugHookHandler), закачете същата тази EXCEPTION_SINGLE_STEP.

Когато се генерира, вашият манипулатор ще поеме контрола върху желаната функция. Безспорното предимство на този метод е, че той е абсолютно неоткриваем чрез сканиране на паметта, тъй като неговата модификация не се случва тук.

int SetDebugBreak(FARPROC адрес)
{
int статус = -1;
HANDLE thSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPTHREAD, NULL);
НИБОВОСТ32те;
te.dwSize = sizeof(THREADENTRY32);
Thread32First(thSnap, &te);
направи
{
if(te.th32OwnerProcessID != GetCurrentProcessId())
продължи;
HANDLE hThread = OpenThread(
THREAD_ALL_ACCESS, FALSE, te.th32ThreadID);
КОНТЕКСТ ctx;

GetThreadContext(hThread, &ctx);
ако (!ctx.Dr 0)
{
ctx.Dr0 = MakePtr(ULONG, адрес, 0);
ctx.Dr7 |= 0x00000001;
състояние = 0;
}
иначе ако (!ctx.Dr1)
{
ctx.Dr1 = MakePtr(ULONG, адрес, 0);
ctx.Dr7 |= 0x00000004;
състояние = 1;
}
иначе ако (!ctx.Dr2)
{
ctx.Dr2 = MakePtr(ULONG, адрес, 0);
ctx.Dr7 |= 0x00000010;
състояние = 2;
}
иначе ако (!ctx.Dr3)
{
ctx.Dr3 = MakePtr(ULONG, адрес, 0);
ctx.Dr7 |= 0x00000040;
състояние = 3;
}
друго
състояние = -1;
ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS;
SetThreadContext(hThread, &ctx);
CloseHandle(hThread);
}
докато (Thread32Next(thSnap, &te));
състояние на връщане;
}

Заключение

Както можете да видите, дори и в най-трудните ситуации можете да намерите възможност да изпълните своя код. Сигурен съм, че в този случай вашият код е насочен единствено към решаване на проблемите със защитата на вашата система. Успех и приятно компилиране!

Връзки

http://vx.netlux.org - един вид музей на вируси, вирусни машини и други интересни неща. Задължително посещение, с една дума.

Тъй като много хора ми пишат и питат кога Hook е финалната версия, реших да напиша hook, но не и Ar4Mode.
Реших да не прецаквам старата си кука (защото кодът там е ужасен), затова реших да напиша нов. С някои промени.

В архива има кука за: Ar4Mode, JBE, UJBL, JBM, както и за други модове (но не се използват нативи).
Има и кука без запазване (трябва да я промените в plugins-iHOOK.ini).

Разлики от старата кука:
[-] Настройка на цвета на куката.
[+] Записване по база данни (MsQl).
[+] Чрез настройката на файла: скорост, тип. размер, края на спрайта.
[+] Можете да зададете конкретна кука на конкретен флаг.
[+] Чрез настройката на файлов флаг: паяжини/меню/контрол/изключване.
[+|-] Визуални промени.
[+] Добавени са нови спрайтове/звуци (въпреки че можете да го направите сами).
[+] Чрез файла можете да зададете вида на края на куката (скатер или единичен спрайт).
[+] (JBE) Можете да изберете, когато искате, от кого да вземете куката (от всички или само от лицето в списъка за издирване).
[+] Добър код.

Конзолни команди:
1) say / hook - уеб меню
2) +кука / +въже - активиране на мрежата

местни жители:
native_iHOOK_menu(id) - отворено меню.
native_iHOOK_get_hook_sett(id, iType) - получаване на настройки за кука [ iType: 1 - уеб спрайт / 2 - звук / 3 - уеб краен спрайт / 4 - размер / 5 - външен вид / 6 - скорост ]
bool:native_iHOOK_get_hook_player_have(id) - получаване на присъствие на кука.
================================================================



Зареждане...
Връх