Plugin för cs 1.6 hook. Hook-FAQ: Förstå gamla och nya sätt att installera systemkrokar. Olika typer av vänsterspark

Eftersom många skriver till mig och frågar när Hook är den slutliga versionen, bestämde jag mig för att skriva en hook, men inte Ar4Mode.
Jag bestämde mig för att inte knulla min gamla krok (eftersom koden där är hemsk), så jag bestämde mig för att skriva en ny. Med några ändringar.

Det finns en krok i arkivet för: Ar4Mode, JBE, UJBL, JBM, samt för andra moddar (men inga infödda används).
Det finns också en krok utan att spara (du måste ändra den i plugins-iHOOK.ini).

Skillnader från den gamla kroken:
[-] Krokfärginställning.
[+] Spara via databas (MsQl).
[+] Genom filinställningen: hastighet, typ. storlek, slutet på spriten.
[+] Du kan ställa in en specifik krok till en specifik flagga.
[+] Genom filflagganställningen: spindelnät/meny/kontroll/avstängning.
[+|-] Visuella förändringar.
[+] Lade till nya sprites/ljud (även om du kan göra det själv).
[+] Genom filen kan du ställa in typen av ände på kroken (scatter eller single sprite).
[+] (JBE) Du kan när önskas välja vem kroken ska tas från (från alla eller bara från personen på önskelistan).
[+] Bra kod.

Konsolkommandon:
1) säg / krok - webbmeny
2) +krok / +rep - aktivering av nätet

Infödda:
native_iHOOK_menu(id) - öppen meny.
native_iHOOK_get_hook_sett(id, iType) - hämta krokinställningar [ iType: 1 - webbsprite / 2 - ljud / 3 - webbändsprite / 4 - storlek / 5 - utseende / 6 - hastighet ]
bool:native_iHOOK_get_hook_player_have(id) - få kroknärvaro.
================================================================

Webb i cs1.6 eller krok för cs 1.6, kalla det vad du vill - men detta är redan ett ganska vanligt plugin i din disk. Själva webbpluginet i cs ger dig möjligheten att flytta runt på kartan, som om du vore en spindel och flyger med ett nätverk. Det vill säga att du rör dig på webben. Själva inställningen av webbplugin i cs1.6 låter dig göra det inte bara för administratörer, eller för andra personer, utan för alla spelare. Naturligtvis, om du är en illvillig administratör, då webbplugin i cs, kan du ställa in den bara för dig själv. Alltså, stängsel av noobs att flyga runt kartan som levande kött. Genom själva idén har detta webbplugin i cs använts under lång tid även i quake2, redan 2001. Och det här är en hook - hook-plugin för cs 1.6 introducerades senare. Men det förändrar inte stämningen.

Hur man använder webben i cs:
För att starta webben i cs1.6 behöver du skriva en nyckelbindning i konsolen. Ta till exempel "r"

Bind "r" "+rep"

Efter det, tryck på "r", så kan vi flyga som en spindel på nätet.

Cvars för webbplugin i cs:

amx_rope - Aktivera|Inaktivera webbplugin.
amx_rope_count - Hur många gånger du kan använda webben per runda.

Som nämnts ovan finns det ett annat plugin för din cs-server. Detta är hook plugin för cs.
Den används främst för prokreedz-moden för att lära sig hur man hoppar ordentligt.

Hur man installerar hook plugin för cs:
1) Kopiera plugin-filer prokreedz_hook.amxx in i kategorin cstrike/addons/amxmodx/.
2) Öppna sedan plugin-filen ( plugins.ini cstrike/addons/amxmodx/configs/) och skriv där prokreedz_hook.amxx för att få det att fungera.

Hur man använder krok i cs:
Bind knappen vid kroken och flyg.

Bind "r" "+krok"

Det är allt. Du kan välja vilken som helst av de två plugins och använda dem för att flytta runt på kartan.

Arkivet innehåller webbpluginfiler för cs1.6 och hook-pluginfiler för cs

Vi är glada att välkomna dig till sidan, som är tillägnad en av de mest populära spel i världen - Counter Strike. Vår sida innehåller många olika filer för det här spelet, olika mods, nya patchar, plugins.
Web i Counter Strike 1.6 är ett mycket populärt plugin. Själva webbpluginet låter dig navigera på kartan som om du vore en spindel och navigera på nätet. Webbpluginet för cs 1.6 kan bli tillgängligt inte bara för administratörer utan även för vanliga spelare, förutsatt att det är korrekt konfigurerat. Naturligtvis, om du är en illvillig administratör, kommer du att konfigurera webbpluginet endast för dig själv, vilket förhindrar noobs från att flyga runt på kartan som kött. Idén med detta plugin har använts under lång tid, tillbaka i quake 2 (2001). Hook-pluginet för cs 1.6 introducerades lite senare, men själva stämningen ändras inte från detta.
Hur använder man webben korrekt i cs? I vår berättelse kommer vi att försöka ge ett exakt svar på denna fråga.
För att starta webben i cs 1.6 måste du skriva en bindning till en specifik nyckel i konsolen. Till exempel, låt oss ta "A"-knappen.
binda "A" + rep
Efter det, genom att trycka på "A"-tangenten, kan du flyga som en spindel.
Vi presenterar för din uppmärksamhet cvars för webbplugin i cs:
amx_rope - slår på och av plugin-programmet;
amx_rope_count - visar hur många gånger du kan använda webben i en omgång.
Det finns ett annat plugin för din CS - hook. Som regel används den för prokreedz-mod för att lära sig hur man hoppar korrekt (enligt spelets standarder).
För att installera krok för CS behöver du:
1) Kopiera prokreedz_hook.amxx till plugins cstrike/addons/amxmodx/.
2) Öppna (plugins. ini cstrike/addons/amxmodx/configs/) och för att få det att fungera, skriv prokreedz_hook.amxx där.
Vet du inte hur man använder kroken? Det är enkelt, bind knappen till kroken och flyg som en spindel - bind "A" "+ krok".
Vi hoppas att vi har gett ett tydligt svar för alla sajter och innehavare spelservrar till en mycket populär och ofta uppkommen fråga om hur man korrekt använder webben för COP, hur man flyger på den. Denna plugin öppnar upp nya möjligheter för spelet och gör det ännu mer intressant, speciellt eftersom det är så enkelt att använda! Upptäck nya möjligheter, följ den senaste Counter Strike och lär dig en massa nya och intressanta saker.

Före dig - komplett guide på korrekt applicering av vänster sidospark (vänster krok). Den här artikeln kommer att hjälpa de nybörjarboxare som inte gillar sin vänstra krok, och kanske till och med experter som vill förstärka och justera en redan placerad punch. Utforska 4 olika typer vänster krok och öva på att tajma rätt.

Jag har arbetat med boxare tillräckligt länge för att veta att för vissa är det inget problem att landa en vänsterspark, medan det för andra är väldigt svårt. Det är som att springa eller dansa. Vissa människor har medfödd data och deras kropp har utmärkt mekanik och rör sig vackert, medan andra är "trä" av naturen. Den goda nyheten är att du kan sätta den vänstra kroken.

olika typer vänsterspark

Det kan komma som en överraskning för många att det finns flera typer av vänsterspark. Vissa typer är lättare att ta på, andra är svårare. Jag rekommenderar att du tränar och lär dig alla typer för din egen fördel.

  1. Kraft vänster krok- du lutar dig (sätter kroppen) i slaget, huvudet rör sig något bakåt och åt höger, hela kroppen är i rörelse och dess vikt överförs till det bakre benet. Detta är vad jag kallar en kraftkrok.
  2. Penetrerande vänster krok- under slaget går huvudet framåt, men förblir nära motståndaren; kroppen roterar (vriden). Vanligtvis appliceras detta slag mot motståndarens kropp i närstrid (ditt huvud är bredvid motståndaren och därför är det svårt för honom att motverka). Det som är bra med en penetrerande krok är att den kan upprepas om och om igen eftersom din kropp nästan aldrig är ur position för att slå igen. (Vissa boxare kastar detta slag i form av en "hookercut" - dvs som en korsning mellan en vänster krok och en vänster uppercut)
  3. Haka på rotation- när boxaren ger detta slag roterar boxaren kroppen runt sin vänstra fot - d.v.s. rör sig medurs och lämnar linjen för fiendens repressalier. Det här slaget kan vara mycket starkt och samtidigt kan du undvika en motattack. Detta är en fantastisk motstöt som hjälper dig att "snurra" din motståndare i ringen.
  4. Kroka i utfall– När du kastar det här slaget gör du ett utfall framåt och sträcker ut kroppen i riktning mot motståndaren, och din vänstra hand flyger längs kanten av öglan. Den vänstra handen börjar från ditt ansikte, rör sig sedan snabbt till vänster och flyger ut i riktning mot motståndarens ansikte. Det speciella med detta strejk är att din vänstra arm sträcks ut så mycket som möjligt för att nå motståndaren. Denna vänstra krok är mer som ett vänsterkors. Vissa boxare lutar sig lite framåt med den här stansen och använder ryggen som en fjäder för att trycka ut sin vänstra arm. Denna punch är inte en av de slag som lärs ut i hallarna, men med bra timing är den väldigt farlig och effektiv.

Det perfekta exemplet på en power left hook är Mike Tyson eller Arturo Gatti. Se hur de stoppar in hela kroppen i den vänstra kroken.

Det perfekta exemplet på en penetrerande vänsterkrok är från Marco Antonio Barrera, Mickey Ward eller Ricky Hatton. Observera att huvudet förblir på plats när kroppen roterar i kollisionsögonblicket.

Ett idealiskt exempel på en vänsterkrok på ett snurr skulle vara Miguel Cotto (han är faktiskt bra med tre typer av krok), Wladimir Klitschko, Floyd Mayweather Jr.

Perfekta exempel på den utfallande vänsterkroken kan ses med Ricky Hatton, Roy Jones Jr., Prince Nassim.

För dig som tycker det är svårt eller smärtsamt att kasta en vänsterkrok på kroppen

Anledningen till att det gör ont eller är obehagligt för dig att slå en vänsterkrok mot kroppen är att din vänstra hand inte har fått den nödvändiga formen.

Kolla in följande:

  • Slå inte kroken strikt horisontellt. Försök att kasta halva krokar och halva uppercuts. Låt det bli en rörelse uppåt ("hookercut") i slaget.
  • Slappna av och släpp axeln och armbågen när du slår mot kroppen.
  • Båda fötterna ska vända sig och titta åt höger vid kollisionen.
  • Din hand rör sig för mycket. Gör mer rörelse med kroppen (vridning), och inte med armen.
  • I början av slaget, ta inte tillbaka handen utan sänk den framför dig och slå från denna position.

Vänster krokordning (för ett kraftfullt kroppsskott)

  1. Kom in i din normala hållning.
  2. Böj lätt på knäna, huvud och vänster hand rör sig något åt ​​vänster och nedåt.
  3. Vrid kroppen snabbt åt höger samtidigt som du sträcker ut vänster arm.
  4. Hela kroppen kommer att svänga åt höger tillsammans med din krok.
  5. Din högra häl ska vara på golvet och din vänstra lyfts från golvet och trycker ut armen.
  6. Näven stängs nästan i ögonblicket av kontakt med motståndaren och STOPPAR direkt efter slaget.
  7. Stoppa ditt slag innan din kropp vrider sig, annars kommer du att stöta på en motstöt. Inget behov av att slå med maximal amplitud.
  8. I slutet av slaget ska ditt huvud, vänster knytnäve och ben vara "vända" åt höger.

Notera: slaget görs på utandningen, vrid fötterna så mycket som möjligt åt höger och glöm inte att gå tillbaka till stativet.

Om du kastar en penetrerande krok, rotera kroppen men håll huvudet på plats. I de flesta fall är det bäst att få ner huvudet nära din motståndares armbåge så att du verkligen kan sticka in ditt slag och inte oroa dig för mycket över motståndarens eventuella motstöt med högerhanden. Du kan prova att kasta denna krok i form av en "hookercut" för att ge slaget en riktigt genomträngande effekt. Försök!

Om du kastar en spinnkrok, låt armen flyga lite rakare. Det vill säga, det blir mer ett vänsterkors än en krok. För att stärka slaget måste vänster hand kastas bort från ansiktet. När du kastar den här kroken roterar hela din kropp, kastar din vänstra arm rakt ut framför dig och samtidigt går ditt högra ben åt vänster och bakåt. Därmed lämnar du kontringslinjen. Din kropp kommer att rotera runt vänster fot 60-80 grader medurs.

När du kastar en utfallande vänsterkrok, kasta snabbt din hand framåt och återför den omedelbart till sin plats. Detta slag liknar ett skott från en slangbella. Återigen är denna krok väldigt lik det vänstra korset. I det ögonblick du slår hoppar du framåt (eller sträcker dig helt enkelt framåt) och ditt huvud rör sig direkt mot motståndaren, vilket är ett bra mål för en kraftfull motstöt. Kasta armen i en rak linje under strejken - detta kommer att öka slagavståndet.

Repetitiva krokar

Om du har experimenterat med förslagen ovan har du förmodligen insett att det är väldigt svårt att kasta två kraftfulla vänsterkrokar i rad. Det vanligaste sättet att landa två krokar i rad är att först kasta en penetrerande krok och sedan en kraftkrok.

Så du flyttar huvudet åt vänster och framåt och kastar en penetrerande krok, lämnar huvudet på plats, och gör sedan en skarp rörelse av huvudet och hela kroppen åt höger och kastar en kraftkrok. Du kan landa en penetrerande krok till kroppen följt av en snurrhake till huvudet. Se Shane Moseley boxning. Han älskar att kasta tre penetrerande vänsterkrokar i rad.

Tips för vänster krok:

  • Svag och stark"Låt en av dina krokar vara svag och den andra stark. Syftet med den första kroken är att tvinga motståndaren att sätta upp ett defensivt block och flytta vesteln vid fel ögonblick. Du kan också kasta en stark krok först och sedan en svag krok.
  • Långsamt och snabbt– Kasta en långsam krok och sedan direkt en mycket snabb. Det kan vara tvärtom.
  • låg och hög- Haka på kroppen och den andra på huvudet. Det kan vara tvärtom.

När ska man kasta en vänsterkrok

Många boxare har en välplacerad vänsterkrok, men har aldrig lärt sig att tajma den ordentligt. De är villiga att vänta hela dagen på en möjlighet att kasta en vänsterkrok, och det kanske inte. Den vänstra kroken är mer än bara ett vapen. Den kan användas för att utdela skada, bryta upp motståndarens försvar (för efterföljande tunga högerhänta slag) och för att distrahera motståndaren. Det är viktigt att ha självförtroende och kasta kroken utan rädsla för en kontra.

Fantastiska kombinationer med vänster krok:

  • Efter det högra krysset - Denna kombination är uppenbar. Nästan varje boxare kastar en vänsterkrok efter ett högerkors.
  • Efter vänsterkroken - Detta är också en självklar sak. Alla är lärda att försvara vänster-höger, så en dubbel vänsterkrok kan bli framgångsrik.
  • Haka på rotation och omedelbart kraftfullt högerkors. Efter kroken, glöm inte att placera båda klackarna på golvet för att öka effekten av det kraftfulla högerkorset.
  • En snabb krok på kroppen för att sänka motståndarens guard och omedelbart slå mot huvudet.
  • En kraftfull kroppskrok för att sänka motståndarens guard (hans högra hand) och omedelbart en utfallskrok mot huvudet. Efter det - ett slag efter eget gottfinnande.
  • Om din motståndare håller den högra handsken nära ansiktet, kasta din krok till handsken. Skadan kommer fortfarande att märkas.
  • Gör ett sidosteg till höger och kasta sedan en snabb vänsterkrok med snurr. Detta är effektivt när din motståndare jagar dig med händerna nedåt. Du kan också sänka din motståndares försvar genom att sänka ditt eget, men för en bråkdel av en sekund.
  • En lätt vänsterkrok mot huvudet och ett snabbt jabb följt av ett högerkryss.
  • När en motståndare jagar dig, eller när du sitter fast vid repen, böj dig och landa en högerkrok mot kroppen och backa upp med ett utfall med vänster krok mot huvudet.

Så fort jag kommer ihåg fler tips kommer jag definitivt att skriva, även om du redan har mycket att träna på i ringen. Vid det här laget borde du redan ha en djupare förståelse för den bästa knockout-punchen i boxning. Att bemästra tekniken för vänster krok kommer att göra dig till en "tvåhands" och därför en mer effektiv fighter. Öva och rapportera resultaten.

Vill du bli din dators Black Lord? Vill du veta alla hemligheter för utvecklare av skadlig programvara och antivirus? Läs artikeln, meditera, förstå grunderna i Zen, och kanske upplysningen kommer över dig (alla lugnt, kunskapen om Tao och perforeringen av Shambhala som ett resultat av att du läser den här artikeln garanteras inte av redaktionen - red. anm)!

RTFM

Vad är en krok? Detta är en mekanism som låter dig spåra någon händelse i operativsystemet. Det utvecklades av farbröderna från Microsoft med de bästa avsikter - för att låta programmeraren lösa sina problem mer effektivt genom att sätta kontroll över händelserna på tangentbordet, musen och mycket mer. Det implementerades med hjälp av välkända funktioner: SetWindowsHook(Ex), UnhookWindowsHook(Ex) och CallNextHook(Ex).

Kroken tjänar till att avlyssna vissa händelser innan de når applikationen. Denna funktion kan reagera på händelser och i vissa fall ändra eller avbryta dem. Funktioner som tar emot händelseaviseringar kallas "filterfunktioner" och skiljer sig åt i vilken typ av händelser de fångar upp. Ett exempel är en filterfunktion för att fånga alla mus- eller tangentbordshändelser. För att Windows ska anropa en filterfunktion måste denna funktion vara installerad, det vill säga kopplad till en krok (till exempel till en tangentbordskrok). Att fästa en eller flera filterfunktioner på en krok kallas att sätta kroken. Om flera filterfunktioner är kopplade till samma krok implementerar Windows en funktionskö, med den senast bifogade funktionen längst fram i kön och den allra första funktionen i slutet av kön.

Med tiden förvanskades det ädla konceptet med en krok, vars orsak var handlingar från virusskribenter och skadlig programvara. De första virusen var, hur ska jag uttrycka det... naiva, antar jag. De var en separat exe-fil som direkt kallade de nödvändiga systemfunktionerna. Tiden gick och antivirus, som dök upp lite senare och plötsligt blev kommersiella, lärde sig snabbt att fånga virus genom signaturer genom att helt enkelt skanna random access minne eller diskutrymme.

Och här, i hettan av den eviga kampen mellan virusskribenter och deras "fångare", fanns det en enda fråga som fortfarande är på agendan och kommer att finnas inom en nära gränslös framtid - det här är frågan om överlevnad i operativsystemet. Dessutom är det också relevant för antivirus, eftersom för en bra systemprogrammerare, skriva virus/ rootkits är det inte så svårt att ta bort antivirusprocessen från systemet.

Därför kan vi säkert säga att en av uppgifterna för antivirus är förmågan att hålla sin process intakt och säker från virusets skadliga handlingar. I allmänhet bör krokar idag förstås som att de etablerar kontroll över huvudet systemfunktioner operativsystem, på vilket livskraften för något program beror - vi pratar som regel om funktionerna för att arbeta med processer, trådar, nätverket och Internet, etc.

"Men hur är det med SetWindowsHook?" - du frågar mig. "Förra seklet", svarar jag. Det är inte längre kosher att använda dem.

Vad har vi?

Det enklaste sättet att installera en krok i systemet är att skapa en så kallad proxyfunktion. Med andra ord måste du bestämma vilken funktion du avlyssnar och hitta adressen till dess samtal. För att göra detta används funktionen GetProcAddress vanligtvis så här: GetProcAddress(GetModuleHandle("ntdll.dll"), "CsrNewThread").

Men upplysta människor vet att den nästan alltid fångas upp av avers, och för att hitta adressen till funktionen använder de analysen av importtabellen för ett visst bibliotek, vanligtvis ntdll.dll, kernel32.dll (kernelbase.dll i Windows7 ) eller advapi32.dll.

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

Därefter bör du skriva över OriginalFunction-anropsadressen med din egen - det vill säga med MyNewFunction.

Om någon nu vill anropa OriginalFunction för exekvering, kommer din proxyfunktion MyNewFunction att anropas först, som sedan överför kontrollen till den ursprungliga adressen. Förmodligen 8 krokar av 10 fungerar på ett så enkelt sätt.Denna metod är bekväm endast för sin enkelhet, men samtidigt är det en fruktansvärd älskling för aver. Hur? Tänk själv - allt som aver behöver är att jämföra den tidigare, "legitima" adressen till funktionen med vad den verkligen är. Om de skiljer sig så slår vi larm. Förresten, nästa fråga uppstår: var kan man få just den här adressen till den ursprungliga funktionen? Det finns ingen anledning att gissa för mycket - det läses från önskad fil på disk. Detta tillvägagångssätt är baserat på antagandet att viruset inte kommer att korrigera exporttabellen för en fil på disken, vilket begränsar sig till en virtuell minneskorrigering.

Så låt oss gå vidare. Som jag sa, att använda en krok som proxyfunktion, även om det är en praktisk sak, är för det första fawn, och för det andra är det bara lämpligt för nybörjare. Det är inte för dig :). Den vanligaste typen av krok är skarvning. Jag är säker på att du har hört det här ordet många gånger. I vårt fall är detta en post i början av funktionen av en fem-byte-sekvens, vilket är ett jmp-kommando på adressen till avlyssningshanteraren. Här är den första byten jmp-opkoden, de återstående fyra byten är adressen till din funktion.

Om du behöver anropa en avlyssnad funktion måste du innan du ersätter den spara dess ursprungliga byte och återställa dem innan du ringer. Fel den här metoden består av följande: om, efter att ha återställt början av funktionen, en kontextväxling inträffade till en annan applikationstråd, kommer den att kunna anropa funktionen, förbi interceptorn. Denna brist kan åtgärdas genom att stoppa alla sidotrådar i applikationen före samtalet och börja efter samtalet. Och naturligtvis är skarvning, liksom proxyfunktioner, också lätt att upptäcka av minnesskanningsmetoden, eftersom det omedelbart kommer att vara klart att funktionsanropet går någon annanstans.

Generellt sett måste jag, när jag ser framåt, förmedla till allmänheten att nästan alla metoder för att avlyssna funktionsanrop på något sätt upptäcks av minnesskanning. Med undantag för två metoder, men läs om det nedan.

IAT, EAT och andra bestar

Frågan uppstår: vad och, viktigast av allt, var kan du sätta dina krokar? Det första som kommer att tänka på är naturligtvis att lägga avlyssningen på importadresstabellen (IAT). När en applikation använder en funktion från ett bibliotek måste applikationen importera adressen till funktionen. Varje DLL som används av ett program beskrivs i en struktur som kallas IMAGE_IMPORT_DESCRIPTOR. Denna struktur innehåller namnet på DLL vars funktioner importeras av programmet och två pekare till två arrayer av IMAGE_IMPORT_BY_NAME strukturer. Strukturen IMAGE_IMPORT_BY_NAME innehåller namnen på importerade funktioner som används av programmet.

När operativ system läser in programmet i minnet, strukturen IMAGE_IMPORT_DESCRIPTOR läses och varje nödvändig DLL läses in i programmets minne.
När DLL-filen är mappad, placerar operativsystemet varje importerad funktion i minnet och skriver över en av IMAGE_IMPORT_BY_NAME-matriserna med funktionens exekveringsadress.

När en hook dyker upp i applikationens adressutrymme kommer ditt virus att kunna läsa målapplikationens PE-format i minnet och ersätta måladressen för funktionen i IAT med adressen till hooken. När sedan den hooked-funktionen anropas, kommer din hook-funktion att exekveras istället för den ursprungliga funktionen. Ett något sällsyntare alternativ som förekommer i naturen, implementerat enligt principen "Om berget inte går till Magomed ..." - avlyssning av exportadresstabellen (EAT), när, tvärtom, Dll-exporttabellen är patchad , som exporterar målfunktionen.

STELTH Hooks: Catch Me If You Can

Som jag skrev ovan är den största nackdelen med ovanstående avlyssningsmetoder den påtvingade modifieringen av minnet, vilket oundvikligen leder till att det upptäcks av avers. Finns det en väg ut? Konstigt nog finns det. Till och med två. Den första är att registrera din undantagshanterare och sedan få kontroll över den. Detta kan till exempel göras genom att förlora en del minnesyta. Den andra metoden är en något modifierad första. Det vill säga att du, som tidigare, registrerar en undantagshanterare, men för att generera dem använder du en teknik som är känd bland debuggers. Som du vet används processorfelsökningsregister för felsökning av applikationer och är vanligtvis tillgängliga från kernelmod. Men de kan också ställas in från användarlägesapplikationer med funktionerna GetThreadContext/SetThreadContext. Felsökningsregister används för att ställa in brytpunkter (Breakpoints) vid åtkomst till en minnesplats eller exekvering.

Det finns totalt åtta register, deras syfte är följande:

  • DR0 - DR3 - Vart och ett av dessa register innehåller den linjära adressen för en av de fyra kontrollpunkterna. Om personsökning är aktiverad, översätts deras värden till fysiska adresser enligt en vanlig algoritm;
  • DR4 - DR5 - Register är reserverade och används inte i i486-processorn;
  • DR6 - Felsökningsstatusregister. Den rapporterar tillstånden som uppstod när felsökningsundantaget gjordes (nummer 1). Registerbitar ställs in av hårdvara och återställs av mjukvara;
  • DR7 - Registret anger vilken typ av minnesåtkomst som är associerad med varje kontrollpunkt.

Allt du behöver göra är att ställa in en hårdvarubrytpunkt (aka int 1) i början av funktionen, så att processorn genererar det så kallade "enkelstegsundantaget" (enkelstegsundantag) och sedan, genom att ställa in din egen undantagshanterare: AddVectoredExceptionHandler (0, (PVECTORED_EXCEPTION_ HANDLER)DebugHookHandler), koppla in samma EXCEPTION_SINGLE_STEP.

När den är genererad kommer din förare ta kontroll över den önskade funktionen. Den otvivelaktiga fördelen med denna metod är att den är absolut oupptäckbar genom minnesskanning, eftersom dess modifiering inte sker här.

int SetDebugBreak(FARPROC-adress)
{
int status = -1;
HANDLE thSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPTHREAD, NULL);
TRÅDENTRY32te;
te.dwSize = sizeof(THREADENTRY32);
Thread32First(thSnap, &te);
do
{
if(te.th32OwnerProcessID != GetCurrentProcessId())
Fortsätta;
HANDLE hThread = OpenThread(
THREAD_ALL_ACCESS, FALSE, te.th32ThreadID);
KONTEXT ctx;

GetThreadContext(hThread, &ctx);
if(!ctx.Dr 0)
{
ctx.Dr0 = MakePtr(ULONG, adress, 0);
ctx.Dr7 |= 0x00000001;
status = 0;
}
annat om(!ctx.Dr1)
{
ctx.Dr1 = MakePtr(ULONG, adress, 0);
ctx.Dr7 |= 0x00000004;
status = 1;
}
annat om(!ctx.Dr2)
{
ctx.Dr2 = MakePtr(ULONG, adress, 0);
ctx.Dr7 |= 0x00000010;
status = 2;
}
annat om(!ctx.Dr3)
{
ctx.Dr3 = MakePtr(ULONG, adress, 0);
ctx.Dr7 |= 0x00000040;
status = 3;
}
annan
status = -1;
ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS;
SetThreadContext(hThread, &ctx);
CloseHandle(hThread);
}
while(Thread32Next(thSnap, &te));
returstatus;
}

Slutsats

Som du kan se, även i de svåraste situationerna, kan du hitta en möjlighet att exekvera din kod. Jag är säker på att i det här fallet är din kod enbart inriktad på att lösa problemen med att skydda ditt system. Lycka till och trevlig sammanställning!

Länkar

http://vx.netlux.org - ett slags museum med virus, virusmotorer och annat intressant. Måste besöka, med ett ord.