Coder Battle: Me vs That VNC Guy

В þetta blogg Allmargar sögur af forritara hafa verið gefnar út. Mér finnst gaman að rifja upp gamla heimskulegu hlutina mína. Jæja, hér er önnur slík saga.

Ég fékk fyrst áhuga á tölvum, sérstaklega forritun, þegar ég var um 11 ára. Við upphaf menntaskóla bоÉg eyddi mestum frítíma mínum í að fikta við C64 minn og skrifa BASIC og klippti síðan út slæma kóðann með skærum. Ég er ekki að grínast, skæri.

Eftir skóla (um 16 ára aldurinn) fara bresk börn venjulega í háskóla þar sem þau velja að læra þrjár eða fjórar námsgreinar áður en þau fara í háskóla. Í ljósi ást minnar á drapplituðum kassanum og segulbandstækinu heima ákvað ég að nám í „tölvufræði“ í háskóla væri rétti kosturinn.

Ég hafði meira gaman af námskeiðinu en ég bjóst við; þar hitti ég fyrst Pascal og Delphi.

Í hléum á milli kennslustunda gátu nemendur unnið á hvaða lausu vél sem er í tölvustofunni. Ímyndaðu þér: risastórt herbergi, hannað fyrir um hundrað manns, með borðaröðum fullum af vélum, eins og þeim þar sem skjárinn stendur á kerfiseiningunni. Aðdáendurnir eru stöðugt að raula, músakúlur suðla á borðum, stoppa ekki í eina sekúndu. Það er undarleg lykt í loftinu, eins og 50-100 hormónaunglingar séu að breytast reglulega til að kæla hundruð Pentium III flögum.

Þrátt fyrir heilsufarsáhættu fannst mér gaman að sitja við tölvuna þegar ég átti fría mínútu.

Vaktstjórinn í herberginu var lágvaxinn, miðaldra maður sem var valinn í þetta hlutverk vegna óseðjandi löngunar sinnar til að verða vondur einræðisherra. Ætli það ekki. Á vakt er vanmetið; gaurinn elskaði starfið sitt. Honum var falið að halda reglu þannig að enginn notaði skólatölvuna í eitthvað óviðeigandi.

Enn þann dag í dag segir innsæi mitt mér að bónus stjórnandans hafi beinlínis verið háður fjölda nemenda sem hann náði í höndina og fylgdi út úr tölvuherberginu. Ég er nokkuð viss um að þessi gaur borgaði húsnæðislánið sitt snemma.

Hann sat lengst í horninu í tölvuherberginu við hornborð. Og það var óhætt að gera ráð fyrir að frjósemismælendur hans hefðu fundið leið til að fjölga sér með ótrúlega stuttum meðgöngutíma, þeir voru svo margir. Maður gat bara velt því fyrir sér hvort hann hefði virkilega tíma til að fylgjast með þeim öllum. Auðvitað er ég að grínast... minntist ég á að hann tók vinnuna sína mjög alvarlega?

Á þessum tíma var tölvunetið keyrt á Windows 2000. Ég komst fljótlega að því að í hvert skipti sem ég skráði mig inn í kerfið var opnað skriftu sem tilgreindi að hefja VNC þjóninn frá stjórnandareikningnum fyrir fjaraðgang að skjáborðinu. Alltaf þegar þessi gaur vildi njósna um þig, þá tengdist hann beint við vélina þína og horfði á. Það var hrollvekjandi, og nú þegar ég hugsa um það, líklega ólöglegt.

Eftir að hafa skorið tennurnar á BASIC og C64 skrifaði ég núna í C og jafnvel smá C++. Á þessum tíma hafði ég enn mikinn áhuga á D tungumálinu, sem leiðrétti suma galla C++, eins og ég sá það þá.

Ég var vanur að fara inn í tölvuherbergið til að lesa eitthvað nýtt á D eða leika mér með Digital Mars D þýðandanum. Stundum, meðan ég var annars hugar frá því að hugsa um hina miklu framtíð D, skrifaði ég C kóða til að hakka önnur Win32 forrit í gegnum gluggann þeirra. handföng.

Í gömlu góðu daga Win32 forritunar var auðveldasta aðferðin til að hakka önnur forrit að finna gluggahandfang. Augljóslega voru öll GUI forrit á Windows með glugga, jafnvel þótt hann birtist ekki á skjánum. Með því að skrifa forrit til að sækja handfang í annað ferli (í meginatriðum tengil á það), gætirðu sent skilaboð til þess. Þetta leyfði nokkrar grunnaðgerðir eins og að fela/sýna forritsglugga, svo og mjög flotta hluti eins og að þvinga ferli til að hlaða handahófskenndri DLL inn í minnisrýmið og byrja að keyra kóða. Eftir DLL-sprautuna byrjaði fjörið.

Fyrsta einn og hálfan mánuðinn truflaði þessi einkaspæjari mig ekki mikið; hann tengdist VNC netþjóninum á vélinni minni aðeins einu sinni eða tvisvar. En einn ákveðinn fundur kann að hafa vakið áhuga hans. Ég var að skrifa einhvern C kóða til að fela Minesweeper gluggana (án þess að loka þeim) til að gera það auðveldara að spila í bekknum, þegar ég tók eftir því að hvíta VNC táknið í kerfisbakkanum var orðið svart. Þetta þýddi að hann fylgdist nú með mér.

Ég hélt áfram að kóða eins og venjulega og reyndi að hunsa hann. Á meðan fór vélin að hægja á sér og reyndi að senda hámarksrammahraða á einn af óteljandi skjánum í horninu á herberginu. Windows hætti næstum að svara, þegar þolinmæði mín var á þrotum, skráði ég mig út og kláraði daginn.

Í síðari heimsóknum í tölvuherbergið sýndi Colombo mikinn áhuga á því sem ég var að gera næstum hverju sinni. Eftir um það bil fjórða skiptið ákvað ég: Ég þarf að gera eitthvað í þessu.

Ég viðurkenni að sanngjarn og skynsamur maður hefði einfaldlega getað tekið þetta mál beint upp við hann eða yfirmann sinn. Ég lét þó alltaf undan freistingum og talaði fljótt við mig til að taka upp allt aðra stefnu.

- Þú getur ekki gert neitt án þessa VNC netþjóns! — Ég sagði við sjálfan mig nokkrum sinnum rólega og ákveðið.

Það var nauðsynlegt að drepa VNC.

Ég byrjaði að fara inn í tölvuherbergi með stórum nemendahópum og sitja eins langt frá horni með skjáina og hægt var. Þetta virkaði um tíma og gaf mér tíma til að prófa hugmyndir.

Fyrsta tilraun mín, ég held að þú sért sammála, var frekar slök. Með því að hægrismella á VNC táknið í kerfisbakkanum sá ég valmynd með töfrastöfunum EXIT. Því miður voru stafirnir skrifaðir með gráum yfirlitstexta. Kerfisstjórinn hefur gert valmyndaratriðið „Hætta“ óvirkt í gegnum hópstefnuritilinn. Ég reyndi að drepa ferlið úr verkefnastjóranum, en auðvitað var það ósýnilegt fyrir mig vegna þess að það var keyrt undir öðrum, meira forréttindareikningi. Það gekk ekki upp.

VNC þjónninn keyrir á TCP port 5900, mundi ég. Næsta áætlun mín var að senda skemmda pakka á þessa höfn til að hrynja hana.

Ég eyddi að minnsta kosti nokkrum dögum í að fikta við siðareglur, sendi ýmis konar vel uppbyggðan drasl á port 5900 og vonaði að hún myndi brotna. Á endanum tókst það ekki heldur.

Ég var þegar farin að hugsa um að ég myndi ekki geta losað mig við þetta, þegar allt í einu rann upp fyrir mér: það hlýtur að vera gluggi þarna! Við þurfum að sýna það. Kannski verður hann með fallegan safaríkan „Mute“ hnapp sem ég get nýtt mér vel!

Ég keyrði næstum fullkomna C kóðann minn til að finna handfangið í aðalglugga annars ferlis - og vissulega fannst VNC. Ég fékk innblástur þegar fingurnir mínir skrifuðu WM_SHOWWINDOW. Reyndu að giska á hvað ég sá fyrir framan mig?

Ekkert!

Nú var ég forvitinn... það var glugga, en það var að hunsa skilaboðin mín. Ég athugaði kóðann minn til að ganga úr skugga um að hann virki. Prófaði það á nokkrum öðrum ferlum og það virkaði frábærlega. Ég reyndi að senda önnur skilaboð í VNC gluggann, og enn ekkert.

Og svo rann upp fyrir mér aftur!

Þökk sé mjög þykkum bókinni Charles Petzold I rannsakaði vandlega hvernig Win32 ferlar virka inni í kerfinu. Sérhvert Win32 forrit hefur glugga sem og "skilaboða biðröð". Skilaboð sem koma af stað af samskiptum notenda, sem og skilaboð send af Windows sjálfu, berast í biðröð og forritið sjálft ákveður hvernig á að vinna úr þeim.

Ekki mjög áhugavert í sjálfu sér. En þegar ég áttaði mig á því að nógu stór óunnin skilaboðaröð virkaði eins og áreiðanleiki fyrir Window Process Manager til að grípa inn í hengt ferli, byrjaði ég að svitna hreint serótónín.

Án þess að eyða sekúndu fór ég aftur í C ​​kóðann minn, undirbjó mig til að senda önnur skilaboð í aðal VNC gluggann WM_SHOWWINDOW. Í hringrás. Eilíft. Svo, fullt af skilaboðum. WM_SHOWWINDOW, sem ég vissi nú að VNC myndi reyna að hunsa algjörlega... í hættu.

Ég tók saman og hljóp 4KB af frelsiselskandi kóða lífs míns. Eftir um það bil þrjár sekúndur, Windows tilkynnti að ferlið vncserver.ехе svarar ekki og gerði tilboð sem ég gat einfaldlega ekki hafnað:

Viltu klára þetta ferli?

HELVÍTIS JÁ!

Ég skal viðurkenna að það sem eftir var dagsins var ég óþolandi ánægður með sjálfan mig.

Eftir nokkra klukkutíma í að melta nýja ofurkraftinn minn ákvað ég hvernig ég myndi nota hann. Það var of auðvelt að drepa bara fundinn beint fyrir framan hann. Ég hafði betri hugmynd - að hverfa alveg.

Eftir eldskírn með innstunguforritun Ég áttaði mig á því að ég gæti skrifað kóða sem myndi gera tvennt. Það mun fyrst hernema nýlega losaða TCP tengið 5900, sem áður var upptekið af hugmyndalausu VNC netþjónsferlinu. Þá mun það búa til nýja TCP tengingu við VNC miðlara tilgreindrar vélar. Kóðinn mun einfaldlega koma öllum gögnum á milli tveggja innstungna og Columbo mun halda að hann sé að tengjast mér, þegar hann mun í raun tengjast allt öðrum VNC netþjóni.

Kóðinn minn mun virka sem leynileg brú á milli mín og einhverrar annarrar fátækrar sálar sem ég kýs. Það var dásamlegt.

Ég byrjaði strax að skrifa falska VNC brúna mína. Columbo tengdist mér nokkrum sinnum en ég hélt áfram að forrita fyrir framan hann. Ég komst að þeirri niðurstöðu að hann hefði ekki hugmynd um hvað ég var að gera, þó ég hafi skrifað augljósa hluti eins og portnúmer og athugasemdir eins og // Прощай, жуткий шпион VNC.

Eftir nokkra daga gat ég ekki fengið kóðann til að virka rétt. Til að gera illt verra var ég að vinna nánast stöðugt með svarta VNC táknið í kerfisbakkanum. Á meðan það var tengt gat ég ekki losað tengið til að prófa kóðann minn.

Ef ég hefði vitað það þá netcat!

Á endanum gáfu taugarnar eftir mér, enda var ég óþolinmóður 17 ára strákur. Þegar ég horfði á hvíta VNC netþjónstáknið verða svart aftur, varð ég brjálaður, opnaði upprunalega kóðann sem fyllti skilaboðalistann og rak hann fyrir augu hans. Ég beið meira að segja í nokkrar sekúndur áður en ég smellti End Process, bara til að vera viss um að hann hafi séð það.

Ef það að ýta á hnappinn sannfærði mig ekki alveg um að það væri þess virði, þá gerði hann það vissulega, sem hoppaði aftan frá vígi sínu af skjám til að nálgast mig fljótt og leiða mig út úr herberginu.

Fyrir vikið var ég settur í tvær vikur á netinu. Sanngjörn refsing, fannst mér. Eftir um það bil þrjár vikur hvarf VNC þjónninn úr ræsiforskriftum og birtist aldrei annars staðar. Ég vissi aldrei hvort atvik mitt gegndi einhverju hlutverki í þessu eða ekki, en það eyðilagði algjörlega áætlun mína um að verða stórkostlega ríkur með því að selja VNC byssuna mína til þunglyndra nemenda í tölvusölum háskóla um allt land.

Heimild: www.habr.com

Bæta við athugasemd