Плъгин за cs 1.6 hook. Hook-FAQ: Разбиране на стари и нови начини за инсталиране на системни куки. Различни видове ляв страничен удар

Тъй като много хора ми пишат и питат кога 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) - получаване на присъствие на кука.
================================================================

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 и научете много нови и интересни неща.

Преди теб - пълно ръководствовърху правилното прилагане на левия страничен удар (ляво кроше). Тази статия ще помогне на онези начинаещи боксьори, които не харесват лявото си кроше, и може би дори на експерти, които искат да усилят и ощипят вече нанесен удар. Разгледайте 4 различни видовеляво кроше и тренирайте правилното време.

Работил съм с боксьори достатъчно дълго, за да знам, че за някои нанасянето на ляв крачен удар не е проблем, докато за други е много трудно. Това е като бягане или танц. Някои хора имат вродени данни и тялото им има отлична механика и се движи красиво, докато други са „дървени“ по природа. Добрата новина е, че можете да поставите лявото кроше.

различни видовеляв страничен удар

Може да е изненада за мнозина, че има няколко вида леви странични удари. Някои видове са по-лесни за поставяне, други са по-трудни. Препоръчвам да практикувате и да изучавате всички видове за ваша собствена полза.

  1. Силово ляво кроше- накланяте се (вкарвате тялото) в удара, главата се движи леко назад и надясно, цялото тяло е в движение и тежестта му се пренася върху задния крак. Това е, което аз наричам захранваща кука.
  2. Проникващо ляво кроше- по време на удара главата отива напред, но остава близо до противника; тялото се върти (усуква). Обикновено този удар се нанася в тялото на противника в близък бой (главата ви е до противника и затова му е трудно да контрира). Хубавото на проникващото кроше е, че може да се повтаря отново и отново, защото тялото ви почти никога не е извън позиция, за да удари отново. (Някои боксьори хвърлят този удар под формата на "хукъркът" - т.е. като кръстоска между ляво кроше и ляв ъперкът)
  3. Кука на въртене- при нанасянето на този удар боксьорът завърта тялото около левия си крак - т.е. се движи по посока на часовниковата стрелка, напускайки линията на ответния удар на противника. Този удар може да бъде много силен и в същото време ще ви позволи да избегнете контраатака. Това е страхотен контра удар, който ще ви помогне да "завъртите" опонента си на ринга.
  4. Кука в удар- Когато хвърляте този удар, вие се хвърляте напред и изпъвате тялото си по посока на противника, а лявата ви ръка лети по ръба на примката. Лявата ръка тръгва от лицето ви, след това се придвижва бързо наляво и излита по посока на лицето на опонента. Особеността на този удар е, че лявата ви ръка е изпъната максимално, за да достигнете противника. Това ляво кроше е по-скоро ляв кръст. Някои боксьори ще се наведат малко напред с този удар и ще използват гърба си като пружина, за да избутат лявата си ръка. Този удар не е един от ударите, преподавани в залите, но с добър тайминг е много опасен и ефективен.

Перфектният пример за силно ляво кроше е Майк Тайсън или Артуро Гати. Вижте как вкараха цялото си тяло в лявото кроше.

Перфектният пример за проникващо ляво кроше е от Марко Антонио Барера, Мики Уорд или Рики Хатън. Имайте предвид, че главата остава на място, докато тялото се върти в момента на удара.

Идеален пример за ляво кроше при завъртане би бил Мигел Кото (той всъщност е добър с три вида крошета), Владимир Кличко, Флойд Мейуедър младши.

Перфектни примери за ляво кроше могат да се видят с Рики Хатън, Рой Джоунс младши, Принц Насим.

За тези, на които им е трудно или болезнено да хвърлят ляво кроше в тялото

Причината, поради която ви боли или ви е неудобно да удряте ляво кроше в тялото е, че лявата ви ръка не е придобила необходимата форма.

Вижте следното:

  • Не удряйте куката строго хоризонтално. Опитайте се да хвърляте половин кроше и половин ъперкът. Нека има някакво движение нагоре ("hookercut") в удара.
  • Отпуснете се и отпуснете рамото и лакътя, докато удряте тялото.
  • И двата крака трябва да се обърнат и да гледат надясно при удара.
  • Ръката ви се движи твърде много. Правете повече движения с тялото (усукване), а не с ръката.
  • В началото на удара не връщайте ръката си назад, а я спуснете пред себе си и нанесете удар от тази позиция.

Ред на ляво кроше (за мощен удар в тялото)

  1. Заемете нормалната си позиция.
  2. Леко огънете коленете си, главата и лявата ръка се движат леко наляво и надолу.
  3. Бързо завъртете тялото надясно, докато изпъвате лявата ръка.
  4. Цялото тяло ще се завърти надясно заедно с куката ви.
  5. Дясната ви пета трябва да е на пода, а лявата ще се повдигне от пода, избутвайки ръката ви навън.
  6. Юмрукът се затваря почти в момента на контакт с противника и СПИРА веднага след удара.
  7. Спрете удара си, преди тялото ви да се извие, в противен случай ще се натъкнете на контраудар. Няма нужда да удряте с максимална амплитуда.
  8. В края на удара, главата, левият юмрук и краката ви трябва да са "с лице" надясно.

Забележка: ударът се прави при издишване, завъртете стъпалата възможно най-надясно и не забравяйте да се върнете към стелажа.

Ако хвърляте проникващо кроше, завъртете тялото си, но дръжте главата си на място. В повечето случаи е най-добре да наведете главата си близо до лакътя на опонента си, за да можете наистина да нанесете удара си и да не се тревожите твърде много за възможния контраудар на опонента с дясната му ръка. Можете да опитате да хвърлите тази кука под формата на "hookercut", за да придадете на удара наистина проникващ ефект. Опитай!

Ако хвърляте въртяща се кука, оставете ръката си да лети малко по-изправена. Тоест ще е по-скоро ляво кръстче, отколкото кроше. За да засилите удара, лявата ръка трябва да бъде изхвърлена от лицето. Когато хвърляте тази кука, цялото ви тяло се върти, изхвърляйки лявата си ръка право пред себе си и в същото време десният ви крак отива наляво и назад. Така напускате линията на контраатака. Тялото ви ще се завърти около левия крак на 60-80 градуса по часовниковата стрелка.

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

Повтарящи се куки

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

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

Съвети за ляво кроше:

  • Слаби и силни„Нека едната ви кука е слаба, а другата силна. Целта на първото кроше е да принуди опонента да постави защитен блок и да премести вестела в неподходящия момент. Можете също така да хвърлите първо силна кука и след това слаба кука.
  • Бавно и бързо– Хвърлете бавно кроше и след това веднага много бързо. Може и обратното.
  • ниско и високо- Кука за тялото, а втората за главата. Може и обратното.

Кога да хвърляте ляво кроше

Много боксьори имат добре позиционирано ляво кроше, но никога не са се научили как да го замерят правилно. Те са готови да чакат цял ​​ден за възможност да хвърлят ляво кроше и това може да не стане. Лявото кроше е повече от просто оръжие. Може да се използва за нанасяне на щети, пробиване на защитата на противника (за последващи тежки удари с дясна ръка) и за разсейване на противника. Важно е да имате увереност и да хвърляте куката без страх от контра.

Страхотни комбинации с ляво кроше:

  • След десния кръст - Тази комбинация е очевидна. Почти всеки боксьор хвърля ляво кроше след дясно кръстосване.
  • След ляво кроше - Това също е очевидно нещо. Всеки е научен да защитава ляво-дясно, така че двойно ляво кроше може да бъде успешно.
  • Кука при завъртане и веднага мощен десен кръст. След крошето не забравяйте да поставите двете пети на пода, за да увеличите ефекта от мощния десен кръст.
  • Бързо кроше към тялото, за да свали гарда на противника и незабавен удар в главата.
  • Мощно кроше за тялото за понижаване на гарда на противника (дясната му ръка) и незабавно кроше за изхвърляне в главата. След него - удар по ваша преценка.
  • Ако опонентът ви държи дясната ръкавица близо до лицето си, хвърлете куката си към ръкавицата. Щетите все още ще бъдат забележими.
  • Направете странична стъпка надясно и след това хвърлете бързо ляво кроше със завъртане. Това е ефективно, когато опонентът ви преследва със спуснати ръце. Можете също така да намалите защитата на опонента си, като намалите своята собствена, но за част от секундата.
  • Леко ляво кроше в главата и бърз удар, последван от дясно центриране.
  • Когато опонентът ви преследва или когато сте приковани към въжетата, наведете се и приземете дясно странично кроше в тялото и се върнете назад с ляво кроше в главата.

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

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

RTFM

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

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

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

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

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

„Но какво да кажем за 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 - един вид музей на вируси, вирусни машини и други интересни неща. Задължително посещение, с една дума.