Në ka është botuar shumë histori për programuesit. Më pëlqen të kujtoj budallallëqet e mia të vjetra. Ja, një tjetër histori e tillë.
U interesova për kompjuterët, sidomos për programimin, kur isha rreth 11 vjeç. Në fillim të shkollës së mesme,oshpenzoja shumicën e kohës së lirë me C64 tim dhe shkruaja në Basic, pastaj prisha kodin e keq me gërshërë. .
Pas shkollës (rreth moshës 16 vjeçare), fëmijët britanikë zakonisht shkojnë në kolegj, ku zgjedhin të studiojnë tre deri në katër lëndë para se të regjistrohen në universitet. Duke marrë parasysh dashurinë time për kutinë bej dhe kasetofonin në shtëpi, vendosa se studimi i "informatikës" në kolegj ishte zgjedhja e duhur.
Kurset më pëlqyen më shumë se sa prisja; aty u njoh për herë të parë me Pascalin dhe Delphi.
Në ndërprerjet mes mësimeve, studentët mund të punonin në çdo kompjuter të lirë në sallën e kompjuterëve. Imagjinoni: një dhomë e madhe, e cila mund të strehojë rreth njëqind persona, me rreshta tavolinash të mbushura me kompjuterë, si ato ku monitori qëndron sipër qendrës. Një zhurmë e vazhdueshme e ventilatorëve, topat e mausëve rrotullohen nëpër tavolina pa u ndalur as për një sekondë. Në ajër ka një erë të çuditshme, si të ishin 50-100 burime të hormonuar adoleshentësh që ndërronin për të ftohur qindra çipa Pentium III.
Pavarësisht rreziqeve për shëndetin, më pëlqente të qëndroja para kompjuterit kur më jepeshin pak minuta të lira.
Në dhomë qendronte një admin, një burrë i shkurtër i mesëm në moshë, i cili ishte zgjedhur për këtë rol për shkak të dëshirës së tij të pandalshme për t'u bërë një diktator i keq. Mendoj se kështu. Qëndronte - kjo është thënë pak, djali vërtet e donte punën e tij. I ishte ngarkuar të mbante rendin, në mënyrë që askush të mos e përdorte kompjuterin e mësimit për diçka të papërshtatshme.
Deri nga intuita, kam bindjen se shpërblimi i adminit varej direkt nga numri i studentëve që ai mund të kapë dhe t'i nxjerrë jashtë sallës kompjuterike. Jam praktikisht i sigurt se ky djalë e shlyeu ipotekën e tij para kohe.
Ai ishte ulur nĂ« kĂ«ndin e largĂ«t tĂ« sallĂ«s kompjuterike nĂ« njĂ« tavolinĂ« kĂ«ndore. Mund tĂ« supozohej me siguri se monitorĂ«t e tij fertilĂ« kishin gjetur njĂ« mĂ«nyrĂ« pĂ«r t'u shumuar me njĂ« periudhĂ« jashtĂ«zakonisht tĂ« shkurtĂ«r tĂ« shtatĂ«zanisĂ« â aq shumĂ« ishin. Ishte vetĂ«m pĂ«r t'u pyetur nĂ«se ai arrinte tĂ« ndiqte tĂ« gjithĂ« ata. Sigurisht, po flas me shaka⊠a e ceka ndonjĂ«herĂ« se ai e merrte shumĂ« seriozisht punĂ«n?
NĂ« atĂ« kohĂ«, rrjeti kompjuterik funksiononte nĂ«n Windows 2000. Shpejt zbulova se me çdo hyrje nĂ« sistem aktivizohej njĂ« skript, i cili pĂ«rmbante aktivizimin e serverit VNC nga llogaria e adminit pĂ«r qasje tĂ« largĂ«t nĂ« desktop. Ădo herĂ« qĂ« ky djalĂ« dĂ«shironte tĂ« ndiqte veprimet tuaja, ai lidhej direkt me makinĂ«n tuaj dhe e shikonte. Ishte e tmerrshme dhe tani qĂ« po e mendoj, ndoshta ishte e paligjshme.
Pas datova në Basic dhe C64, tani shkruaja në C dhe pak edhe në C++. Në atë kohë, u përfshiva shumë edhe me gjuhën D, e cila korrigjonte disa nga mangësitë e C++, siç më dukej atëherë.
Zakonisht shkoja në sallën kompjuterike për të lexuar diçka të re rreth D ose për të luajtur me kompilatorin Digital Mars D. Ndonjëherë, duke u shpëndarë nga mendimet për të ardhmen e madhe të D, shkruaja kod në C për të hakuar programe të tjera Win32 përmes deshifruesve të dritareve të tyre.
NĂ« ditĂ«t e mira tĂ« programimit nĂ« Win32, gjetja e deshifruesit tĂ« dritares ishte metoda mĂ« e thjeshtĂ« pĂ«r tĂ« hakuar programe tĂ« tjera. ĂshtĂ« e qartĂ« se tĂ« gjitha programet me ndĂ«rfaqe grafike nĂ« Windows kishin njĂ« dritare, edhe nĂ«se ajo nuk shfaqej nĂ« ekran. Duke shkruar njĂ« program pĂ«r tĂ« nxjerrĂ« deshifruesin e njĂ« procesi tjetĂ«r (nĂ« thelb, njĂ« lidhje me tĂ«), mund tĂ« dĂ«rgoni mesazhe atij. Kjo lejonte kryerjen e disa operacioneve themelore, si fshehja/shfaqja e dritares sĂ« programit, si dhe gjĂ«ra shumĂ« tĂ« bukura, si tĂ« detyroni procesin tĂ« ngarkonte njĂ« DLL tĂ« rastĂ«sishme nĂ« hapĂ«sirĂ«n e tij tĂ« memories dhe tĂ« fillonte ekzekutimin e kodit. Pas injektimit tĂ« DLL-sĂ«, fillonte aventura mĂ« e interesantĂ«.
Në shkurtin e parë dhe të parë të muajve, ky detektiv nuk më shqetësoi shumë, ai u lidhi me serverin VNC në makinën time vetëm një ose dy herë. Por një seancë e caktuar, ndoshta, zgjoi interesin e tij. Po shkruaja ndonjë kod në C për të fshehur dritaret e Minesweeper (pa i mbyllur ato), që të ishte më e lehtë të luaja në klasë, dhe e pashë se ikona e bardhë e VNC në sistemin e tray kishte bërë ngjyrë të zezë. Kjo do të thoshte se tani ai po më vëzhgonte.
Vazhdoja të shkruaja kod si zakonisht, duke u përpjekur të mos i kushtoja vëmendje. Ndërkohë, makina filloi të ngadalësohej, duke u përpjekur të transmetonte frekuencën maksimale të frame-ve në një nga monitorët e panumërt në këndin e dhomës. Windows pothuajse nuk po reagonte, dhe kur durimi im shpërtheu, unë dola nga sistemi dhe e përfundova për sot.
Gjatë vizitave të ardhshme në sallën e kompjuterëve, Colombo shfaqte një interes të gjallë për atë që po bëja pothuajse çdo herë. Rreth herës së katërt, vendosa: duhet të bëj diçka për këtë.
Pranoj që një njeri racional dhe të arsyeshëm mund të kishte ngritur këtë çështje drejtpërdrejt me të ose me shefin e tij. Megjithatë, unë gjithmonë kam rënë pre e tundimit dhe shpejt e kam bindur veten të përzgjidh një strategji krejtësisht tjetër.
â Nuk do tĂ« mund tĂ« bĂ«sh asgjĂ« pa kĂ«tĂ« server VNC! â thashĂ« me qetĂ«si dhe vendosmĂ«ri disa herĂ« pĂ«r veten time.
Duhej të vrasim VNC.
Fillova të hyja në sallën e kompjuterëve me grupe të mëdha studentësh dhe ulesha sa më larg nga koka me monitorët. Për njëfarë kohe kjo funksionoi dhe më dha pak kohë për të verifikuar idetë.
Përpjekja ime e parë, mendoj se do të pajtohesh, ishte mjaft e dobët. Duke klikuar me të djathtën mbi ikonën VNC në sistemin e tray-it, pashë një menu me letra magjike E-X-I-T. Fatkeqësisht, gjithë ato letra ishin shkruar me tekstin e hirtë. Administratorit i kishte bllokuar opsioni "Dalje" përmes redaktorit të politikave të grupit. Përpiqesha të vrisja procesin nga Menaxheri i Detyrave, por, natyrisht, ai nuk ishte i dukshëm për mua, pasi punonte nën një llogari tjetër, më me privilegje. Nuk arrita të arrija ndonjë gjë.
VNC server po përcjell në portin TCP 5900, më erdhi në mendje. Plani im i ardhshëm ishte të dërgoja paketa të dëmtuara në këtë port, për ta bllokuar atë.
Disa ditë, po shqyrtoja protokollin, duke dërguar në portin 5900 forma të ndryshme të strukturuar saktë dhe shpresoja se do të thyhej. Përsëri, asgjë nuk funksionoi.
NĂ« njĂ« moment, fillova tĂ« mendoj se nuk do tĂ« isha nĂ« gjendje ta hiqja kĂ«tĂ« gjĂ«, kur papritmas mĂ« erdhi nĂ« mendje: duhet tĂ« ketĂ« njĂ« dritare! Duhet ta shfaq. Ndoshta ka njĂ« buton tĂ« shkĂ«lqyer âShkyçâ, tĂ« cilin mund ta pĂ«rdor pĂ«r njĂ« qĂ«llim tĂ« shkĂ«lqyer!
E hodha në funksion kodin tim pothuajse të përsosur C për të gjetur identifikuesin e dritares kryesore të një procesi tjetër - dhe vërtet e gjeta VNC. Ndihesha i ngazëllyer, kur gishti im shtypi WM_SHOWWINDOW. Provoni të gjeni se çfarë pashë përpara meje?
Asgjë!
Tani, më la kurioz... kishte një dritare, por ajo injoroi mesazhet e mia. E kontrollova dy herë kodin tim për të siguruar që po punonte. E testova në disa procese të tjera, dhe ai funksionoi shkëlqyeshëm. Provova të dërgoj mesazhe të tjera në dritaren VNC, por sërish asgjë.
Dhe ketë më erdhi një tjetër mendim!
FalĂ« njĂ« libri shumĂ« tĂ« trashĂ« Charles Petzold, unĂ« kam studiuar me kujdes si funksionojnĂ« proceset Win32 brenda sistemit. Ădo aplikacion Win32 ka njĂ« dritare si dhe njĂ« 'rrjetĂ« tĂ« mesazheve'. Mesazhet e shkaktuara nga ndĂ«rveprimi me pĂ«rdoruesin, si dhe mesazhet e dĂ«rguara nga Windows vetĂ«, hyjnĂ« nĂ« rrjetĂ«n, dhe vetĂ« aplikacioni vendos se si t'i trajtojĂ« ato.
Nuk është aq interesante në vetvete. Por kur kuptova se një rreth i madh mesazhesh të papërpunuara shërben si një heuristik për ndërhyrjen në një proces të ngrirë nga Menaxheri i Procesit të Window-it, më kaploi një emocion i pastër serotonin.
Pa humbur asnjë sekondë, ktheva kodin tim C, duke u përgatitur të dërgoj një mesazh tjetër në dritaren kryesore VNC WM_SHOWWINDOW. Në një cikël. Të përjetshëm. Pra, shumë mesazhe WM_SHOWWINDOW, të cilat, siç e dija tani, VNC do të përpiqej t'i injoronte plotësisht... në rrezikun e tij.
Unë kompilova dhe ekzekutova 4 KB nga kodi më i lirë që kam bërë ndonjëherë. Rreth tre sekondash më vonë, Windows raportoi se procesi vncserver.exe nuk përgjigjej, dhe bëri një propozim, të cilit thjesht nuk mund të i thosha jo:
A dëshironi të përfundoni këtë proces?
Për Zot, PO!
Lejo të pranoj që pjesa tjetër e ditës isha jashtëzakonisht i kënaqur me veten time.
Pas disa orĂ«sh tĂ« kaluar nĂ« pĂ«rtypjen e superfuqisĂ« time tĂ« re, vendosa se si do ta pĂ«rdorja. Thjesht tĂ« vras seancĂ«n pĂ«rballĂ« tij ishte shumĂ« e lehtĂ«. Kisha njĂ« ide mĂ« tĂ« mirĂ« â tĂ« zhdukem krejtĂ«sisht.
Pas kuptova se mund të shkruaj një kod që do të bënte dy gjëra. Së pari, ai do të merrte një port TCP 5900 të sapoçliruar, më parë të zënë nga një proces injorant të serverit VNC. Pastaj do të krijonte një lidhje të re TCP me serverin VNC të makinës së caktuar. Kodi do të funksiononte thjesht si një proxy për të gjitha të dhënat midis dy soketeve, dhe Kolombo do të mendonte se po lidhej me mua, kur në të vërtetë po lidhej me një server tjetër VNC.
Kodi im do të vepronte si një urë sekrete midis meje dhe ndonjë shpirti të tjetër të varfër sipas zgjedhjes sime. Kjo ishte e mrekullueshme.
UnĂ« menjĂ«herĂ« fillova tĂ« shkruaj bridge-in tim tĂ« falsifikuar VNC. Colombo u lidh me mua disa herĂ«, por unĂ« vazhdoja tĂ« programoja para tij. Arrita nĂ« pĂ«rfundimin se ai nuk kishte asnjĂ« ide pĂ«r veprimet e mia, edhe pse unĂ« shkruaja gjĂ«ra tĂ« dukshme, si numrat e porteve dhe komente si // ĐŃĐŸŃаĐč, жŃŃĐșĐžĐč ŃĐżĐžĐŸĐœ VNC.
Për një ditë, nuk mund të bëja që kodi të funksiononte siç duhet. Më e keqja ishte se punoja pothuajse vazhdimisht me ikonën e zezë VNC në sistemin tim të treguesve. Përderisa ai ishte i lidhur, nuk mund të lirija portin për të provuar kodin tim.
Nëse do dija atëherë për netcat!
Në fund të fundit, nervat nuk e përballuan; gjithsesi isha një djalë 17-vjeçar i padurueshëm. Përsëri duke parë si ikona e bardhë e serverit VNC bëhej e zezë, u zemërova, hapja kodin e parë që mbushte radhën e mesazheve dhe e ekzekutova para tij. Madje prita disa sekonda përpara se të shtypja End Process, thjesht për t'u siguruar që ai e pa atë.
Nëse shtypja e kësaj butoni nuk më kishte bindur plotësisht se ia vlejti, atëherë skëterra e tij nga fortësia e monitoreve për t'u afruar shpejt dhe për të më nxjerrë nga dhoma, me siguri ia vlen.
Në fund, më ndaluan qasje në rrjet për dy javë. Një dënim i drejtë, mendova unë. Rreth tri javë më vonë, serveri VNC u zhduk nga skenat e ngarkimit dhe nuk u shfaq më askund. Nuk e mora vesh kurrë nëse incidenti im luajti ndonjë rol në këtë, por ai shkatërroi plotësisht planet e mia për t'u pasuruar në mënyrë fantastike duke shitur armën time VNC studentëve të shtypur në sallat e kompjuterëve në të gjithë vendin.
Burimi: habr.com
