Generatiivinen tiedustelu

Vakava turvallisuus: Rowhammer palaa valaisemaan tietokonettasi

Treffi:

Olet varmaankin sanan tuttu gaslighting, jota käytetään viittaamaan ihmisiin, joilla on vastenmielinen tapa valehdella, ei vain peittääkseen omia väärintekojaan, vaan myös saadakseen vaikutelman, että joku muu on syyllinen, jopa siinä määrin, että toinen henkilö epäilee omaa muistiaan, säädyllisyyttä ja järkeä.

Et kuitenkaan ehkä tiedä, että termi tulee 1930-luvun psykologisesta trilleristä nimeltä Kaasuvalo (spoilerihälytys), jossa manipuloiva ja murhaava aviomies teeskentelee viettävänsä iltansa kaupungissa ystäviensä kanssa jättäen pitkään kärsineen vaimonsa kotiin kurjuudessa.

Itse asiassa hän livahtaa salaa yllä olevaan asuntoon, jossa hän murhasi aiemmin asukkaan varastaakseen tämän jalokiviä.

Vaikka hän selvisi murhasta, hän poistui tuolloin tyhjin käsin, joten hän palaa jatkuvasti rikospaikalle etsimään arvoesineitä yhä epätoivoisemmin murhatun naisen asunnosta.

Hänen rikollisuuteensa kertoo se, että öisillä vierailuillaan hän ei vain pidä ääntä, joka kuuluu alakerrassa, vaan hänen on myös kytkettävä kaasuvalot päälle nähdäkseen, mitä hän tekee.

Koska koko rakennus on kytketty samaan kaasunsyöttöön (näytelmä sijoittuu 1880-luvun Lontooseen, ennen kuin kotitaloussähkö korvasi kaasun valaistuksessa), polttimen avaaminen ja sytytys missä tahansa huoneessa aiheuttaa tilapäisen painehäviön koko järjestelmässä, joten murhaajan vaimo huomaa omien valojensa lyhyen, mutta paljastavan himmenemisen aina, kun hän menee sinne.

Tämä väistämätön sivuvaikutus, nimittäin se, että valojen käyttö yhdessä talon osassa aiheuttaa havaittavaa häiriötä muualla, johtaa lopulta siihen, että aviomies joutuu poliisin kaulaan.

Jos mietit, sanallinen metafora kaasuvaloon sen nykyisessä merkityksessä tulee siitä, että näytelmän rikollinen selittää röyhkeästi pois sekä himmenevät valot että salaperäiset äänet todisteena vaimonsa hulluksi tulemisesta. Hänen paha suunnitelmansa on sekä kääntää epäilyt pois alkuperäisestä rikoksestaan ​​että julistaa hänet hulluksi päästäkseen hänestä eroon, kun hän löytää etsimästään rikkaudet. Kun poliisit tulevat hänen perässään, hän kääntää pöydät teeskentelemällä auttavansa häntä pakenemaan varmistaakseen, että hänet lopulta vangitaan. Kuten hän huomauttaa, koska hän on vaivannut "todistaakseen" koko ajan olevansa hullu, kukaan ei nyt usko tai edes epäile, että hän petti hänet pyövelin silmukalle täysin tarkoituksella...

Rowhammerin paluu

Tiedämme, mitä ajattelet: Mikä on yhteys kaasuvalojen ja niiden epävakaa käyttäytymisen välillä kuormituksen alaisena ja kyberturvallisuushaasteen välillä sorkka?

No, rowhammering on elektroniikkaongelma, joka johtuu ei-toivotuista järjestelmän sisäisistä vuorovaikutuksista, aivan kuten ne vilkkuvat kaasuvalot samannimisessä näytelmässä.

Tietokoneiden alkuaikoina dataa tallennettiin käyttämällä erilaisia ​​järjestelmiä, jotka edustavat binäärinumeroiden tai bittien sarjaa, mukaan lukien: pitkien elohopeaputkien läpi kulkevat äänipulssit; magneettikentät, jotka on tallennettu pienten ferriittirenkaiden verkkoon, joka tunnetaan nimellä ytimet, joista saamme nykyajan ammattikieltä ydin kaatopaikka kun tallennat RAM-muistia ohjelman kaatumisen jälkeen; ja sähköstaattiset varaukset, jotka on tallennettu valopilkkuina TV-ruudulle.

Nykyaikaiset DRAM-sirut (dynaaminen käyttömuisti), sitä vastoin luottaa erittäin tiiviisti yhteen puristettuun nanoskooppisten kondensaattoreiden verkkoon, joista jokainen voi joko tallentaa sähkövarauksen (jota pidetään binäärinä 1) tai ei (0-bittiä varten).

Lukeaksesi solun C3 yllä, syötä virtaa rivijohtoa 3 pitkin purkaen kondensaattorit A3, B3, C3 ja D3 alasarakkeen johdoista A, B, C ja D, jotta niiden arvot voidaan määrittää. Bitit ilman latausta lukevat 0; bittiä, jotka tallensivat varauksen 1. Sinun on käytettävä ja purettava neljä bittiä lukeaksesi yhden niistä.

Yllättävää kyllä, DRAM-siruilla on enemmän yhteistä 1940- ja 1950-lukujen elohopean viivelinjan varastoinnin kanssa kuin luulisi, nimittäin että:

  • Voit lukea vain koko rivin dataa kerrallaan. 112. bitin lukeminen 1024-bittisessä elohopeaviivelinjassa tarkoittaa kaikkien 1024 bitin lukemista (ne kulkevat elohopean läpi peräkkäin hieman yli 5000 km/h, mikä tekee viivelinjan pääsyajoista yllättävän nopeita). DRAM-sirut käyttävät samanlaista järjestelmää, jossa yksi rivi kondensaattoreita puretaan verkossa kerralla, jotta vältytään erilliseltä ohjauspiiriltä jokaiselle ryhmän nanokondensaattorille.
  • Tietojen lukeminen tyhjentää muistin. Viivelinjoilla äänipulssien ei saa antaa pomppia takaisin putkea pitkin tai kaiut pilaavat tällä hetkellä kiertävät bitit. Joten tiedot luetaan toisesta päästä ja kirjoitetaan sitten takaisin, valinnaisesti muokattuna, viivelinjaputken toiseen päähän. Vastaavasti DRAM-muistin kondensaattorien lukeminen purkaa kaikki, jotka olivat parhaillaan tallentaneet 1-bittejä, mikä tehokkaasti nollaa kyseisen tietorivin pois, joten jokaista lukua on seurattava uudelleenkirjoitus.
  • Tiedot katoavat, jos niitä ei kirjoiteta säännöllisesti. Viiveviivat ovat yksisuuntaisia, koska kaiut eivät ole sallittuja, joten sinun on luettava ja kirjoitettava bitit jatkuvassa, säännöllisessä jaksossa, jotta tiedot pysyvät hengissä, tai muuten se katoaa yhden elohopeaputken läpikulun jälkeen. DRAM-kondensaattorit kärsivät myös väistämättömästä datahäviöstä, koska ne pystyvät tyypillisesti säilyttämään latauksen luotettavasti enintään sekunnin kymmenesosan ennen kuin varaus vuotaa pois. Joten jokainen sirun kondensaattoririvi luetaan ja kirjoitetaan automaattisesti 64 millisekunnin välein (noin 1/15 sekunnin välein), jotta tiedot pysyvät hengissä loputtomiin.

Kirjoitetaan vain lukumuistiin

Joten, missä niin sanottu rowhammering tulee käyttöön?

Joka kerta kun kirjoitat DRAM-sirun muistiruudukon kondensaattoririville, on hyvin pieni mahdollisuus, että sen sähköinen aktiivisuus saattaa vahingossa vaikuttaa yhteen tai useampaan sen vieressä olevien linjojen kondensaattoriin samalla tavalla. että kaasuvalon sytyttäminen yhdessä huoneessa aiheuttaa merkkivalon välkkymistä muissa huoneissa.

Mitä useammin kirjoitat yhdelle kondensaattoririville (tai ovelammin, jos pystyt keksimään oikeat muistiosoitteet käytettäväksi, kahdelle riville kondensaattoreita, jotka sijaitsevat kohdekondensaattorien kummallakin puolella saadaksesi enemmän bittipurkausenergiaa), todennäköisemmin provosoit jonkinlaisen puolisatunnaisen bittikäännöksen.

Ja huono uutinen tässä on, että koska DRAM-muistista lukeminen pakottaa laitteiston kirjoittamaan tiedot takaisin samoihin muistisoluihin heti, sinun tarvitsee vain lukuoikeus tiettyyn joukkoon muistisoluja laukaistakseen matalan tason sähköisiä uudelleenkirjoituksia noista soluista.

(Näytelmän "kaasusytytyksen" ongelmassa on analogia, nimittäin se, että sinun ei itse asiassa tarvitse sytyttää lamppua, jotta läheiset valot luovuttaisivat sinut; pelkkä kaasuhanan avaaminen ja sulkeminen hetkellisesti ilman liekin sytytystä riittää. laukaisemaan valon himmentämisen.)

Yksinkertaisesti sanottuna, pelkästään lukemalla samasta DRAM-muistilohkosta yhä uudelleen tiukassa silmukassa, saat sen automaattisesti kirjoitettua uudelleen samalla nopeudella, mikä lisää huomattavasti todennäköisyyttä, että aiheutat sellaisen tahallisesti, joskin pitkälti arvaamatta. tai useampi bittivaihto läheisissä muistisoluissa.

Tämänkaltaisen petoksen käyttäminen muistivirheiden tahalliseen provosoimiseen tunnetaan ammattikielessä itsekuvaavalla nimellä sorkka.

Rowhammer hyökkäystekniikkana

Lukuisia kyberturvallisuushyökkäyksiä on ehdotettu räjähdyksen perusteella, vaikka sivuvaikutuksia on vaikea ennustaa.

Jotkut näistä hyökkäyksistä ovat hankalia toteuttaa, koska ne edellyttävät hyökkääjältä tarkkaa muistin asettelua, suorittimen asetuksia ja käyttöjärjestelmän asetuksia.

Esimerkiksi useimmat prosessorisirut (CPU) ja käyttöjärjestelmät eivät enää salli etuoikeutettujen ohjelmien tyhjentää prosessorin sisäistä välimuistia, joka on väliaikainen, nopea RAM-muisti itse suorittimen sisällä, jota käytetään usein käytettävään dataan.

Kuten voit kuvitella, suorittimen välimuistit ovat ensisijaisesti suorituskyvyn parantamiseksi, mutta ne palvelevat myös kätevää tarkoitusta estää tiukka ohjelmasilmukka kirjaimellisesti lukemasta samoja DRAM-kondensaattoreita yhä uudelleen ja uudelleen toimittamalla tarvittavat tiedot ilman DRAM-sirujen käyttöä. kaikki.

Jotkut emolevyt sallivat myös ns. DRAMin virkistystaajuus tehostettava, joten se on nopeampi kuin edellä mainitsemamme perinteinen arvo kerran 64 miljoonassa sekunnissa.

Tämä heikentää järjestelmän suorituskykyä (ohjelmat pysähtyvät hetkeksi, jos ne yrittävät lukea tietoja DRAM-muistista, kun laitteisto päivittää sitä), mutta vähentää räjähdyksen todennäköisyyttä "lataamalla" sirun kaikkien kondensaattoreiden varauksia säännöllisemmin kuin on ehdottomasti tarpeen.

Tämä tarkoittaa, että läheisiin muistisoluihin kirjoitettaessa aiheutuvat häiriöt eivät todennäköisesti vaikuta yksittäisiin kondensaattoreihin.

Juuri uudelleen kirjoitetut kondensaattorit ovat paljon todennäköisemmin jännitetasolla, joka osoittaa yksiselitteisesti, ovatko ne täysin ladattuja (1-bittinen) vai täysin purkautuneita (0-bittinen), sen sijaan, että ne ajautuisivat epävarmasti jonnekin näiden kahden väliin.

Ja monien nykyaikaisten DRAM-sirujen muistin päivityslaitteistoon on nykyään sisäänrakennettu ylimääräisiä älykkäitä ominaisuuksia, mukaan lukien lievennys nimeltä TRR (kohderivin päivitys).

Tämä järjestelmä kirjoittaa tietoisesti ja automaattisesti uudelleen tallennuskondensaattorit kaikissa muistilinjoissa, jotka ovat lähellä muistipaikkoja, joita käytetään toistuvasti.

Siksi TRR palvelee samaa sähköistä "kondensaattorien täyttöä" kuin yleisen virkistystaajuuden lisäämistä, mutta ilman koko sirun suorituskykyä.

Rowhammering superkeksinä

Mielenkiintoista, lehti äskettäin julkaistu Kalifornian yliopiston Davisin (UCD) tutkijat tutkivat rowhammeringin käyttöä muuhun tarkoitukseen kuin tietokoneeseen murtautumiseen muokkaamalla muistia hyödynnettävällä tavalla ja siten avaamalla koodin suorittamisen turva-aukon…

…mutta sen sijaan vain "sormenjälkien ottamiseksi" tietokoneesta, jotta he voivat tunnistaa sen uudelleen myöhemmin.

Hyvin yksinkertaistettuna he havaitsivat, että eri valmistajien DRAM-siruilla oli yleensä selvästi erilaisia ​​​​bittien käännösvirheitä, kun ne joutuivat hyökkäyksiin.

Kuten voit kuvitella, tämä tarkoittaa sitä, että pelkällä ryöstöllä saatat havaita uhrin tietokoneeseen liittyviä laitteistotietoja, jotka voidaan yhdistää muihin ominaisuuksiin (kuten käyttöjärjestelmän versio, korjaustaso, selainversio, selaimen evästeet jne. päällä), jotta voit erottaa sen muista Internetin tietokoneista.

Neljällä sanalla: salaperäistä seurantaa ja valvontaa!

Vielä dramaattisemmin tutkijat havaitsivat, että jopa ulkoisesti identtiset saman valmistajan DRAM-sirut tyypillisesti osoittivat omia erottuvia ja havaittavissa olevia bittikääntymiskuvioita niin, että yksittäiset sirut voitiin myöhemmin tunnistaa yksinkertaisesti lyömällä niitä uudelleen.

Toisin sanoen tapa, jolla tietty DRAM-muistimoduuli käyttäytyy sorvattaessa, toimii eräänlaisena "superevästeenä", joka tunnistaa, vaikkakin epätäydellisesti, tietokoneen, johon se on kytketty.

Pöytäkoneiden käyttäjät vaihtavat tai päivittävät muistiaan harvoin, eivätkä monet kannettavien tietokoneiden käyttäjät pysty, koska DRAM-moduulit juotetaan suoraan emolevyyn, joten niitä ei voida vaihtaa.

Siksi tutkijat varoittavat, että rowhammering ei ole vain harhaanjohtava, mutta epäluotettava tapa murtautua tietokoneeseen, vaan myös mahdollinen tapa seurata ja tunnistaa laitteesi, vaikka muita luovutustietoja, kuten sarjanumeroita, selaimen evästeitä, ei olisi. , tiedostojärjestelmän metatiedot ja niin edelleen.

Suojahuolto pahentaa tilannetta

Kiehtovaa on se, että tutkijat väittävät, että kun he yrittivät varmistaa työssään samankaltaisuuden poistamalla ja varovasti vaihtamalla (uudelleenasentamalla) emolevynsä muistimoduulit testien välillä…

…muistimoduulien osumien havaitsemisesta tuli itse asiassa helpompaa.

Ilmeisesti, jos irrotettavat muistimoduulit jätetään yksin, on todennäköisempää, että niiden sormenjäljet ​​muuttuvat ajan myötä.

Arvelemme, että tämä johtuu tekijöistä, kuten lämpövirumisesta, kosteuden muutoksista ja muista ympäristön vaihteluista, jotka aiheuttavat johtavuuden muutoksia muistitikun metallikontakteissa ja muuttavat siten hienovaraisesti tapaa, jolla siru käyttäytyy sisäisesti.

Ironista kyllä, muistimoduuli, joka pahenee ajan myötä vastustamaan rowhammeringin sivuvaikutuksia, tulee ainakin teoriassa yhä alttiimmaksi koodin suoritushyökkäyksille.

Tämä johtuu siitä, että jatkuvat hyökkäykset laukaisevat vähitellen yhä enemmän bittikäänteitä ja siten luultavasti avaavat yhä enemmän hyödynnettävissä olevia muistin korruptiomahdollisuuksia.

Mutta sama muistimoduuli ipso facto, tulevat yhä vastustuskykyisemmiksi tunnistuspohjaisille rowhammer-hyökkäyksille, koska ne riippuvat sirun virheellisestä käytöksestä, joka pysyy johdonmukaisena ajan mittaan, jotta saadaan riittävän tarkkoja tuloksia (jos se on oikea sana), jotta siru voidaan tunnistaa luotettavasti.

Mielenkiintoista on, että tutkijat toteavat, että he eivät saaneet sormenjälkitekniikkaansa toimimaan lainkaan tietyn valmistajan muistimoduuleissa, mutta he kieltäytyivät nimeämästä valmistajaa, koska he eivät ole varmoja miksi.

Sen perusteella, mitä voimme nähdä, näiden sirujen havaittu vastustuskyky elektroniselle tunnistamiselle saattaa olla sattuman varassa, koska tutkijat käyttivät helposti muuttuvaa käyttäytymistä koodissa.

Tämän merkin muistin näennäinen kestävyys ei siten välttämättä johdu tarkasteltavana olevan tuotteen erityisestä teknisestä paremmuudesta, minkä vuoksi valmistajan nimeäminen olisi epäoikeudenmukaista kaikkia muita kohtaan.

Mitä tehdä?

Pitäisikö sinun olla huolissasi?

Et voi juuri nyt tehdä hirveän paljon ryöstöjen välttämiseksi, koska kyseessä on perustavanlaatuinen sähköinen "latausvuoto"-ongelma, joka johtuu nykyaikaisten DRAM-sirujen kondensaattoreiden uskomattoman pienestä koosta ja läheisyydestä.

Emme kuitenkaan usko, että sinun pitäisi olla hirveän huolissaan.

Loppujen lopuksi näiden DRAM-superevästeiden purkamiseksi tutkijoiden on saatava sinut käyttämään valitsemaansa huolellisesti koodattua sovellusta.

He eivät voi luottaa selaimiin ja selainpohjaiseen JavaScriptiin tämän tyyppisten temppujen tekemisessä, eikä vähiten siksi, että tässä tutkimuksessa käytetty koodi on dunattu kentauri, tarvitsee alemman tason järjestelmän pääsyn kuin useimmat, elleivät kaikki, nykyaikaiset selaimet sallivat.

Ensinnäkin Cenaturi-koodi tarvitsee oikeuden tyhjentää CPU-muistin välimuisti tarvittaessa, jotta jokainen muistiluku todella laukaisee sähköisen pääsyn suoraan DRAM-sirulle.

Ilman tätä välimuistin tarjoama kiihtyvyys ei päästä tarpeeksi todellista DRAM-uudelleenkirjoitusta tuottamaan tilastollisesti merkittävää määrää bittivaihtoja.

Toiseksi Centauri-koodi perustuu siihen, että sillä on riittävä järjestelmätason käyttöoikeus pakottaakseen käyttöjärjestelmän varaamaan muistia vierekkäisissä 2 Mt:n osissa (tunnetaan ammattikielessä nimellä isot sivut), eikä joukkona 4 kt:n muistisivuja, kuten Windows ja Linux tekevät oletuksena.

Kuten alla näkyy, sinun on tehtävä erityisiä järjestelmätoimintokutsuja aktivoidaksesi suuren sivun muistinvarausoikeudet ohjelmalle; käyttäjätilisi tarvitsee valtuudet aktivoida tämä käyttöoikeus ensinnäkin; eikä millään Windows-käyttäjätilillä ole oletuksena tätä oikeutta. Löyhästi sanottuna ainakin yritysverkossa sinun pitäisi tarvita sysadmin-valtuudet etukäteen määrittääksesi itsellesi oikeuden aktivoida suuren sivun kohdistaminen etuoikeus saada Centauri-koodi toimimaan.

Tietokoneen sormenjälkien saamiseksi tutkijoiden olisi huijattava sinut käyttämään haittaohjelmia ja todennäköisesti myös kirjautumaan sisään ainakin paikallisilla järjestelmänvalvojan oikeuksilla.

Tietenkin, jos he voivat tehdä sen, on monia muita luotettavampia ja lopullisempia tapoja, joilla he voivat tutkia tai manipuloida laitettasi poimiakseen vahvoja järjestelmätunnisteita.

Näitä ovat: täydellisen laitteistokartoituksen tekeminen laitetunnisteineen; kiintolevyn sarjanumeroiden hakeminen; yksilöllisten tiedostonimien ja aikaleimojen etsiminen; järjestelmän kokoonpanoasetusten tutkiminen; asennettujen sovellusten luettelon lataaminen; ja paljon enemmän.

Lopuksi, koska Centauri-koodin tarkoituksena on olla hyökkäämättä ja hyödyntämättä tietokonettasi suoraan (jolloin kaatumisen riski matkan varrella saattaa olla sen arvoista), on olemassa huolestuttava riski, että tietokoneesi sormenjälkien ottamiseen tarvittavien ryöstötietojen kerääminen vahingoittaisi tai vahingoittaisi tietokonettasi. kaataa sen dramaattisesti ja herättää siten jakamattoman huomiosi.

Koodin etäsuoritustarkoituksiin soveltuminen on sellaista, jota roistot voivat kokeilla suhteellisen lyhyesti ja varovasti sillä perusteella, että kun se toimii, he ovat mukana, mutta jos se ei toimi, he eivät ole menettäneet mitään.

Mutta Centauri nimenomaan luottaa siihen, että se saa aikaan riittävän monta bitinvaihtovirhettä tilastollisesti merkittävän sormenjäljen muodostamiseksi, jota ilman se ei voi toimia "superevästeen" tunnisteena.

Kun kyse on tuntemattomasta ohjelmistosta, jota sinut kutsutaan ajamaan "koska tiedät, että haluat sen", muista: Jos epäilet, jätä se pois!


SUURIEN SIVUN VAROJEN OTTAMINEN KÄYTTÖÖN WINDOWSISSA

Kääntääksesi ja pelataksesi tämän ohjelman itse, voit käyttää täysimittaista kehityspakettia, kuten Clang for Windows (ilmainen, avoin lähdekoodi), Visual Studio Community (ilmainen henkilökohtaiseen ja avoimen lähdekoodin käyttöön), tai vain lataa porttimme. Fabrice Bellardin mahtava Pieni C-kääntäjä varten 64-bittinen Windows. (Alle 500 kt, mukaan lukien perusotsikot, käyttövalmiit binaaritiedostot ja täydellinen lähdekoodi, jos haluat nähdä, miten se toimii!)


Lähdekoodi, jonka voit kopioida ja liittää:

#sisältää #sisältää int main(void) { SIZE_T ps; void* ptr; HANDLE merkki; BOOL ok; TOKEN_PRIVILEGES tp; LUID neste; DWORD-virhe; ps = HankiLargePageMinimum(); printf("Suuret sivut alkavat: %lld bytesn",ps); ok = OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&token); printf("OPT tulos: %d, Token: %016llXn",ok,tunnus); if (!ok) { return 1; } ok = LookupPrivilegeValueA(0,"SeLockMemoryPrivilege",&luid); printf("LPV tulos: %d, Luid: %ld:%un",ok,luid.HighPart,luid.LowPart); if (!ok) { return 2; } // Huomaa, että tilin taustalla on oltava "Lukitse sivut muistissa" // käytäntöasetuksena. Kirjaudu ulos ja kirjaudu takaisin sisään aktivoidaksesi tämän // käyttöoikeuden valtuutettuasi tilin GPEDITissä. Admin tarvitaan. tp.PrivilegeCount = 1; tp.Etuoikeudet[0].Luid = luid ; tp.Etuoikeudet[0].Attribuutit = SE_PRIVILEGE_ENABLED; ok = AdjustTokenPrivilegs(token,0,&tp,sizeof(tp),0,0); if (!ok) { return 3; } // Huomaa, että AdjustPrivs() palauttaa arvon TRUE, jos pyyntö // on hyvin muotoiltu, mutta se ei tarkoita, että se toimisi. Koska // voit pyytää useita oikeuksia kerralla, sinun on // tarkistettava virheen 1300 (ERROR_NOT_ALL_ASSIGNED) varalta, onko // jokin niistä (vaikka niitä olisi vain yksi) kielletty. err = GetLastError(); printf("ATP tulos: %d, virhe: %un",ok,err); ptr = VirtualAlloc(NULL,ps, MEM_LARGE_PAGES|MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); err = GetLastError(); printf("VA-virhe: %u, Osoitin: %016llXn",err,ptr); paluu 0; }

Rakenna ja suorita alla olevan kuvan mukaisesti.

Ensimmäisellä yritykselläni sain virheen 1300 (ERROR_NOT_ALL_ASSIGNED), koska tililläni ei ollut ennakkovaltuutusta pyytää Lukitse sivut muistiin etuoikeus ensinnäkin ja virhe 1314 (ERROR_PRIVILEGE_NOT_HELD) plus a NULL (nolla) osoitin taaksepäin VirtualAlloc() sen sivuvaikutuksena:

C:UsersduckPAGES> petcc64 -v -stdinc -stdlib p1.c -ladvapi32 Tiny C Compiler - Tekijänoikeus (C) 2001-2023 Fabrice Bellard Poistanut Paul Ducklin käytettäväksi oppimistyökaluna Versio petcc64-0.9.27 [0006] - Luo vain 64-bittiset PE:t -> p1.c -------------------------------- virt-tiedoston koko-osio 1000 200 318 . teksti 2000 600 35c .data 3000 a00 18 .pdata ------------------------------- <- p1.exe (3072 tavua ) C:UsersduckPAGES> p1 Suuret sivut alkavat: 2097152 tavua OPT-tulos: 1, Token: 00000000000000C4 LPV-tulos: 1, Luid: 0:4 ATP-tulos: 1, virhe: 1300 VA virhe: 1314 0000000000000000:XNUMX

Valtuuttaakseni pyytämään asianmukaisia ​​oikeuksia (Windows varaa aina suuret sivut lukittuina fyysiseen RAM-muistiin, joten et voi hankkia niitä ilman erityistä Lukitse sivut muistiin oikein), käytin GPEDIT.MSC apuohjelma määrittää itselleni oikeudet paikallisesti.

Mene Paikallinen tietokone Policy > Tietokoneasetukset > Windows-asetukset > Turva-asetukset > Paikalliset käytännöt > Käyttäjän oikeuksien luovutus ja lisää oma käyttäjätunnuksesi Lukitse sivut muistiin vaihtoehto.

Älä tee tätä työtietokoneella kysymättä ensin, ja vältä sitä tavallisella kotitietokoneellasi (käytä sen sijaan vara-PC:tä tai virtuaalikonetta):


Annoin itselleni tarvittavat oikeudet, kirjauduin sitten ulos ja kirjauduin uudelleen sisään hankkiakseni sen, pyyntöni saada 2 Mt virtuaalista RAM-muistia, joka on varattu yhdeksi fyysisen RAM-muistin lohkoksi, onnistui seuraavasti:

C:UsersduckPAGES>p1 Suuret sivut alkavat: 2097152 tavua OPT-tulos: 1, Token: 00000000000000AC LPV-tulos: 1, Luid: 0:4 ATP-tulos: 1, virhe: 0 VA-virhe: 0, Osoitin: 0000000001600000

spot_img

Uusin älykkyys

spot_img