Š Ir publicÄts diezgan daudz programmÄtÄju pasaku. Man patÄ«k atcerÄties savas vecÄs stulbÄs lietas. Nu, lÅ«k, vÄl viens Å”Äds stÄsts.
Pirmo reizi par datoriem, Ä«paÅ”i programmÄÅ”anu, interesÄjos apmÄram 11 gadu vecumÄ. Vidusskolas sÄkumÄ bоLielÄko daļu sava brÄ«vÄ laika pavadÄ«ju, Äalojoties ar savu C64 un rakstot BASIC, pÄc tam ar ŔķÄrÄm izgriežot slikto kodu. .
PÄc skolas (apmÄram 16 gadu vecumÄ) britu bÄrni parasti dodas uz koledžu, kur izvÄlas apgÅ«t trÄ«s vai Äetrus priekÅ”metus pirms iestÄÅ”anÄs universitÄtÄ. Å emot vÄrÄ manu mÄ«lestÄ«bu pret smilÅ”krÄsas kastÄ«ti un magnetofonu mÄjÄs, es nolÄmu, ka studÄt ādatorzinÄtnesā koledÅ¾Ä bija pareizÄ izvÄle.
Kurss man patika vairÄk, nekÄ biju gaidÄ«jis; tur es pirmo reizi satiku PaskÄlu un Delfu.
Stundu starpbrīžos skolÄni varÄja strÄdÄt pie jebkuras brÄ«vas datorklases iekÄrtas. IedomÄjieties: milzÄ«ga telpa, kas paredzÄta apmÄram simts cilvÄku, ar galdu rindÄm, kas piepildÄ«tas ar maŔīnÄm, piemÄram, tÄm, kur monitors stÄv uz sistÄmas bloka. Fani nemitÄ«gi dungojas, uz galdiem dÅ«c peļu bumbiÅas, neapstÄjoties ne uz sekundi. GaisÄ jÅ«tama dÄ«vaina smaka, it kÄ 50-100 hormonÄlie pusaudži periodiski mainÄ«tos, lai atdzesÄtu simtiem Pentium III mikroshÄmu.
Neskatoties uz veselÄ«bas apdraudÄjumiem, man patika sÄdÄt pie datora, kad bija brÄ«va minÅ«te.
TelpÄ dežurÄja admins maza auguma, pusmūža vÄ«rietis, kurÅ” Å”ai lomai tika izvÄlÄts viÅa neremdinÄmÄs vÄlmes dÄļ kļūt par ļaunu diktatoru. Es domÄju, ka tÄ. Dežūras ir par zemu; puisis patieÅ”Äm mÄ«lÄja savu darbu. ViÅam tika uzdots uzturÄt kÄrtÄ«bu, lai neviens neizmantotu skolas datoru kaut kam nepiemÄrotam.
LÄ«dz pat Å”ai dienai mana intuÄ«cija man saka, ka administratora bonuss bija tieÅ”i atkarÄ«gs no skolÄnu skaita, ko viÅÅ” noÄ·Ära aiz rokas un pavadÄ«ja no datorklases. Esmu diezgan pÄrliecinÄts, ka Å”is puisis agri samaksÄja savu hipotÄku.
ViÅÅ” sÄdÄja datorklases tÄlÄkajÄ stÅ«rÄ« pie stÅ«ra galda. Un varÄja droÅ”i pieÅemt, ka viÅa auglÄ«bas monitori bija atraduÅ”i veidu, kÄ vairoties ar iespaidÄ«gi Ä«su grÅ«snÄ«bas periodu, to bija tik daudz. VarÄja tikai brÄ«nÄ«ties, vai viÅam tieÅ”Äm bija laiks tiem visiem izsekot. Es, protams, jokoju... vai es pieminÄju, ka viÅÅ” savu darbu uztvÄra ļoti nopietni?
TobrÄ«d datortÄ«klÄ darbojÄs operÄtÄjsistÄma Windows 2000. DrÄ«z vien atklÄju, ka katru reizi, piesakoties sistÄmÄ, tika palaists skripts, kas noteica VNC servera startÄÅ”anu no administratora konta attÄlinÄtai piekļuvei darbvirsmai. Ikreiz, kad Å”is puisis gribÄja jÅ«s izspiegot, viÅÅ” pieslÄdzÄs tieÅ”i jÅ«su maŔīnai un skatÄ«jÄs. Tas bija rÄpojoÅ”i, un tagad, padomÄjot par to, iespÄjams, nelikumÄ«gi.
Izgriezis zobus uz BASIC un C64, tagad rakstÄ«ju C un pat nedaudz C++. Toreiz mani vÄl ļoti interesÄja D valoda, kas izlaboja dažus C++ trÅ«kumus, kÄ toreiz redzÄju.
Es mÄdzu iet uz datoru istabu, lai lasÄ«tu kaut ko jaunu uz D vai spÄlÄtu ar Digital Mars D kompilatoru. Dažreiz, kamÄr es biju atrauts no domÄm par lielo D nÄkotni, es uzrakstÄ«ju C kodu, lai uzlauztu citas Win32 programmas caur to logu. rokturi.
Vecajos labajos Win32 programmÄÅ”anas laikos loga roktura atraÅ”ana bija vienkÄrÅ”Äkais veids, kÄ uzlauzt citas programmas. AcÄ«mredzot visÄm GUI programmÄm operÄtÄjsistÄmÄ Windows bija logs, pat ja tas neparÄdÄs ekrÄnÄ. Rakstot programmu cita procesa roktura izgūŔanai (bÅ«tÄ«bÄ saiti uz to), varat tam nosÅ«tÄ«t ziÅojumus. Tas ļÄva veikt dažas pamata darbÄ«bas, piemÄram, paslÄpt/parÄdÄ«t programmas logu, kÄ arÄ« veikt patieÅ”Äm lieliskas lietas, piemÄram, piespiest procesu ielÄdÄt patvaļīgu DLL savÄ atmiÅas vietÄ un sÄkt izpildÄ«t kodu. PÄc DLL injekcijas sÄkÄs jautrÄ«ba.
PirmajÄ pusotra mÄnesÄ« Å”is detektÄ«vs mani Ä«paÅ”i netraucÄja, tikai vienu vai divas reizes tas pieslÄdzÄs manas maŔīnas VNC serverim. Bet viena konkrÄta sesija, iespÄjams, izraisÄ«ja viÅa interesi. RakstÄ«ju kaut kÄdu C kodu, lai paslÄptu Minesweeper logus (neaizverot tos), lai bÅ«tu vieglÄk spÄlÄt klasÄ, kad pamanÄ«ju, ka sistÄmas teknÄ baltÄ VNC ikona ir kļuvusi melna. Tas nozÄ«mÄja, ka viÅÅ” tagad mani vÄro.
Es turpinÄju kodÄt kÄ parasti, cenÅ”oties viÅu ignorÄt. TikmÄr maŔīna sÄka palÄninÄties, cenÅ”oties pÄrraidÄ«t maksimÄlo kadru Ätrumu vienam no neskaitÄmajiem monitoriem istabas stÅ«rÄ«. Windows gandrÄ«z pÄrstÄja reaÄ£Ät, kad mana pacietÄ«ba beidzÄs, es atteicos un pabeidzu dienu.
NÄkamajos datorklases apmeklÄjumos Kolombo gandrÄ«z katru reizi izrÄdÄ«ja lielu interesi par to, ko es daru. PÄc apmÄram ceturtÄs reizes es nolÄmu: man kaut kas jÄdara lietas labÄ.
Pieļauju, ka saprÄtÄ«gs, racionÄls cilvÄks varÄja vienkÄrÅ”i izvirzÄ«t Å”o jautÄjumu tieÅ”i viÅam vai savam priekÅ”niekam. TomÄr es vienmÄr ļÄvos kÄrdinÄjumam un Ätri pierunÄju sevi pieÅemt pavisam citu stratÄÄ£iju.
- Bez Ŕī VNC servera neko nevar izdarÄ«t! ā vairÄkas reizes mierÄ«gi un izlÄmÄ«gi sev teicu.
VajadzÄja nogalinÄt VNC.
SÄku iet datorklasÄ ar lielÄm skolÄnu grupÄm un sÄdÄt pÄc iespÄjas tÄlÄk no stÅ«ra ar monitoriem. Tas kÄdu laiku darbojÄs un deva man laiku ideju pÄrbaudei.
Mans pirmais mÄÄ£inÄjums, es domÄju, ka jÅ«s piekrÄ«tat, bija diezgan vÄjÅ”. Ar peles labo pogu noklikŔķinot uz VNC ikonas sistÄmas teknÄ, es ieraudzÄ«ju izvÄlni ar burvju burtiem EXIT. DiemžÄl burti bija rakstÄ«ti pelÄkÄ kontÅ«ras tekstÄ. Administrators ir atspÄjojis izvÄlnes vienumu "Iziet", izmantojot grupas politikas redaktoru. Es mÄÄ£inÄju apturÄt procesu, izmantojot uzdevumu pÄrvaldnieku, taÄu, protams, tas man bija neredzams, jo tas darbojÄs ar citu, priviliÄ£ÄtÄku kontu. Tas neizdevÄs.
VNC serveris darbojas TCP portÄ 5900, es atcerÄjos. Mans nÄkamais plÄns bija nosÅ«tÄ«t bojÄtas paketes uz Å”o portu, lai to avarÄtu.
Es pavadÄ«ju vismaz dažas dienas, strÄdÄjot pie protokola, sÅ«tot dažÄdas labi strukturÄtas muļķības uz portu 5900 un cerot, ka tas sabojÄsies. BeigÄs arÄ« tas neizdevÄs.
Es jau sÄku domÄt, ka nevarÄÅ”u no Ŕīs lietas tikt vaļÄ, kad pÄkÅ”Åi man ieÅ”ÄvÄs prÄtÄ: tur taÄu ir jÄbÅ«t logam! Mums tas ir jÄparÄda. VarbÅ«t tai bÅ«s jauka sulÄ«ga poga āIzslÄgt skaÅuā, ko varÄÅ”u lieliski izmantot!
Palaidu savu tagad gandrÄ«z ideÄlo C kodu, lai atrastu cita procesa galvenÄ loga rokturi ā un, protams, VNC tika atrasts. Es jutos iedvesmots, kad ar pirkstiem rakstÄ«ju WM_SHOWWINDOW. MÄÄ£iniet uzminÄt, ko es redzÄju sev priekÅ”Ä?
Nekas!
Tagad es biju ziÅkÄrÄ«gs... tam bija logs, bet tas ignorÄja manus ziÅojumus. Es vÄlreiz pÄrbaudÄ«ju savu kodu, lai pÄrliecinÄtos, ka tas darbojas. To pÄrbaudÄ«ja vairÄkos citos procesos, un tas darbojÄs lieliski. Es mÄÄ£inÄju nosÅ«tÄ«t citus ziÅojumus uz VNC logu, bet joprojÄm nekas.
Un tad tas man atkal atausa!
Pateicoties ļoti biezajam ÄÄrlzs Petzolds Es rÅ«pÄ«gi izpÄtÄ«ju, kÄ sistÄmÄ darbojas Win32 procesi. Katrai Win32 lietojumprogrammai ir logs, kÄ arÄ« "ziÅojumu rinda". ZiÅojumi, ko aktivizÄ lietotÄja mijiedarbÄ«ba, kÄ arÄ« paÅ”as Windows nosÅ«tÄ«tie ziÅojumi nonÄk rindÄ, un pati lietojumprogramma izlemj, kÄ tos apstrÄdÄt.
Pats par sevi nav Ä«paÅ”i interesanti. Bet, kad sapratu, ka pietiekami liela neapstrÄdÄtu ziÅojumu rinda darbojÄs kÄ heiristisks lÄ«dzeklis, lai Window Process Manager varÄtu iejaukties nokarenÄ procesÄ, es sÄku svÄ«st tÄ«ra serotonÄ«na.
NetÄrÄjot ne mirkli, es atgriezos pie sava C koda, gatavojoties nosÅ«tÄ«t vÄl vienu ziÅojumu galvenajam VNC logam WM_SHOWWINDOW. CiklÄ. Mūžīgs. TÄtad, daudz ziÅojumu. WM_SHOWWINDOW, ko es tagad zinÄju, ka VNC mÄÄ£inÄs pilnÄ«bÄ ignorÄt... uz savÄm briesmÄm.
Es apkopoju un palaidu 4 KB sava mūža visvairÄk brÄ«vÄ«bu mÄ«loÅ”Ä koda. PÄc aptuveni trim sekundÄm Windows ziÅoja, ka process vncserver.еŃ
е neatbild un izteica piedÄvÄjumu, no kura vienkÄrÅ”i nevarÄju atteikties:
Vai vÄlaties pabeigt Å”o procesu?
ELLÄ JÄ!
Ä»aujiet man atzÄ«t, ka atlikuÅ”o dienas daļu es biju necieÅ”ami apmierinÄts ar sevi.
PÄc dažÄm stundÄm, kas pavadÄ«tas, gremojot savu jauno lielvaru, es nolÄmu, kÄ es to izmantoÅ”u. Bija pÄrÄk viegli vienkÄrÅ”i nogalinÄt sesiju tieÅ”i viÅa acu priekÅ”Ä. Man bija labÄka doma ā pazust pavisam.
PÄc Es sapratu, ka varu uzrakstÄ«t kodu, kas darÄ«tu divas lietas. Vispirms tas aizÅems tikko atbrÄ«voto TCP portu 5900, ko iepriekÅ” aizÅÄma bezjÄdzÄ«gais VNC servera process. PÄc tam tas izveidos jaunu TCP savienojumu ar norÄdÄ«tÄs maŔīnas VNC serveri. Kods vienkÄrÅ”i pÄrsÅ«tÄ«s visus datus starp abÄm ligzdÄm, un Kolumbo domÄs, ka viÅÅ” izveido savienojumu ar mani, lai gan patiesÄ«bÄ viÅÅ” izveidos savienojumu ar pilnÄ«gi citu VNC serveri.
Mans kods darbosies kÄ slepens tilts starp mani un kÄdu citu manu izvÄlÄtu nabaga dvÄseli. Tas bija brÄ«niŔķīgi.
Es uzreiz sÄku rakstÄ«t savu viltoto VNC tiltu. Kolumbo pieslÄdzÄs man vairÄkas reizes, bet es turpinÄju programmÄt viÅa priekÅ”Ä. Es nonÄcu pie secinÄjuma, ka viÅam nav ne jausmas, ko es daru, lai gan es rakstÄ«ju acÄ«mredzamas lietas, piemÄram, portu numurus un komentÄrus, piemÄram, // ŠŃŠ¾ŃŠ°Š¹, жŃŃŠŗŠøŠ¹ ŃŠæŠøŠ¾Š½ VNC.
PÄc pÄris dienÄm es nevarÄju panÄkt, lai kods darbotos pareizi. Lai situÄciju padarÄ«tu vÄl ļaunÄku, es gandrÄ«z nepÄrtraukti strÄdÄju ar melno VNC ikonu sistÄmas teknÄ. KamÄr tas bija savienots, es nevarÄju atbrÄ«vot portu, lai pÄrbaudÄ«tu savu kodu.
Ja es toreiz bÅ«tu zinÄjis netcat!
BeigÄs mani nervi padevÄs, galu galÄ es biju nepacietÄ«gs 17 gadus vecs puisis. VÄrojot, kÄ baltÄ VNC servera ikona atkal kļūst melna, es satrÅ«kos, atvÄru sÄkotnÄjo kodu, kas aizpildÄ«ja ziÅojumu rindu, un paskrÄju to viÅa acu priekÅ”Ä. Es pat nogaidÄ«ju dažas sekundes, pirms noklikŔķinÄju End Process, lai pÄrliecinÄtos, ka viÅÅ” to redzÄja.
Ja Ŕīs pogas nospieÅ”ana mani pilnÄ«bÄ nepÄrliecinÄja, ka tas ir tÄ vÄrts, tad viÅÅ”, kurÅ” izlÄca no sava monitoru cietokÅ”Åa, Ätri pietuvojÄs man un izved mani no istabas.
TÄ rezultÄtÄ man uz divÄm nedÄļÄm tika aizliegts izmantot tÄ«klu. TaisnÄ«gs sods, es domÄju. PÄc aptuveni trim nedÄļÄm VNC serveris pazuda no sÄknÄÅ”anas skriptiem un nekad netika parÄdÄ«ts nekur citur. Es nekad nezinÄju, vai manam incidentam bija kÄda nozÄ«me Å”ajÄ jautÄjumÄ, bet tas pilnÄ«bÄ izjauca manu plÄnu kļūt pasakaini bagÄtam, pÄrdodot savu VNC ieroci depresÄ«viem studentiem koledžas datorzÄlÄs visÄ valstÄ«.
Avots: www.habr.com
