Coder Nkhondo: Ine vs. That VNC Guy

Π’ blog iyi Nkhani zingapo zamapulogalamu zasindikizidwa. Ndimakonda kukumbukira zinthu zanga zakale zopusa. Chabwino, nayi nkhani ina yotero.

Ndinayamba kuchita chidwi ndi makompyuta, makamaka kupanga mapulogalamu, ndili ndi zaka pafupifupi 11. Kumayambiriro kwa sekondale bΠΎNdidakhala nthawi yambiri yopuma ndikucheza ndi C64 yanga ndikulemba BASIC, kenako ndikudula khodi yoyipa ndi lumo. Sindikuseka, lumo.

Akaweruka kusukulu (azaka pafupifupi 16), ana a ku Britain nthaΕ΅i zambiri amapita ku koleji, kumene amasankha kuphunzira maphunziro atatu kapena anayi asanapite ku yunivesite. Chifukwa cha chikondi changa pa bokosi la beige ndi tepi yojambulira kunyumba, ndinaganiza kuti kuphunzira "sayansi ya makompyuta" ku koleji kunali chisankho choyenera.

Ndinasangalala ndi maphunzirowo kuposa mmene ndimayembekezera; Kumeneko ndinakumana koyamba ndi Pascal ndi Delphi.

Panthawi yopuma pakati pa makalasi, ophunzira amatha kugwiritsa ntchito makina aliwonse aulere m'chipinda cha makompyuta. Tangoganizani: chipinda chachikulu, chopangidwira anthu pafupifupi zana, chokhala ndi mizere ya matebulo odzaza ndi makina, monga momwe polojekitiyi imayimira pa unit unit. Mafani akungong'ung'udza nthawi zonse, mipira ya mbewa ikulira patebulo, osayima kwa mphindi imodzi. Mumlengalenga muli fungo lachilendo, ngati kuti achinyamata a 50-100 a mahomoni amasintha nthawi ndi nthawi kuziziritsa mazana a tchipisi cha Pentium III.

Ngakhale kuti ndinali ndi thanzi labwino, ndinkakonda kukhala pa kompyuta ndikakhala ndi mphindi yaulere.

Admin wantchito mchipindacho anali munthu wamfupi, wazaka zapakati yemwe adasankhidwa kuti agwire ntchitoyi chifukwa chofunitsitsa kukhala wolamulira wankhanza. ndikuganiza choncho. Pa ntchito ndi understatement; mnyamata ankakondadi ntchito yake. Anapatsidwa ntchito yosunga dongosolo kuti pasapezeke aliyense amene akugwiritsa ntchito kompyuta yapasukulu pa chilichonse chosayenera.

Mpaka lero, chidziwitso changa chimandiuza kuti bonasi ya admin imatengera kuchuluka kwa ophunzira omwe adawagwira pamanja ndikutuluka m'chipinda cha makompyuta. Ndine wotsimikiza kuti munthu uyu adalipira ngongole yake yanyumba msanga.

Anakhala pakona yakutali ya chipinda cha makompyuta pa tebulo lapakona. Ndipo zinali zotetezeka kuganiza kuti owunika ake a kubereka adapeza njira yoberekera ndi nthawi yayifupi yoyembekezera, analipo ambiri. Munthu angangodabwa ngati analidi ndi nthawi yoti azitsatira zonsezo. Zoona, ndikungonena.. ndidatchulapo kuti adatenga ntchito yake mwachangu?

Panthawiyo, makina apakompyuta anali a Windows 2000. Posakhalitsa ndinazindikira kuti nthawi iliyonse yomwe ndimalowa mu dongosolo, script inayambika yomwe inafotokozera kuyambira seva ya VNC kuchokera ku akaunti ya administrator kuti ifike kutali ndi kompyuta. Nthawi iliyonse munthu uyu akafuna kuti akazonde, amalumikizana mwachindunji ndi makina anu ndikuwonera. Zinali zowopsya, ndipo tsopano pamene ndikuganiza za izo, mwinamwake zosaloledwa.

Nditadula mano pa BASIC ndi C64, tsopano ndinalemba mu C komanso C ++ pang'ono. Panthawiyo, ndinali ndi chidwi kwambiri ndi chinenero cha D, chomwe chinakonza zolakwika zina za C ++, monga ndinazionera panthawiyo.

Ndinkakonda kulowa m'chipinda cha makompyuta kuti ndiwerenge china chatsopano pa D kapena kusewera ndi compiler ya Digital Mars D. Nthawi zina, pamene ndinali kusokonezedwa kuganizira za tsogolo lalikulu la D, ndinalemba C code kuti ndiwononge mapulogalamu ena a Win32 kudzera pawindo lawo. zogwira.

M'masiku akale a pulogalamu ya Win32, kupeza chogwirira chazenera inali njira yosavuta yowonongera mapulogalamu ena. Mwachiwonekere, mapulogalamu onse a GUI pa Windows anali ndi zenera, ngakhale sizikuwoneka pazenera. Polemba pulogalamu kuti mutenge chogwirizira ku njira ina (makamaka ulalo wa izo), mutha kutumiza mauthenga kwa iyo. Izi zinapangitsa kuti pakhale ntchito zina zofunika monga kubisa / kusonyeza zenera la pulogalamu, komanso zinthu zabwino kwambiri monga kukakamiza ndondomeko kuti muyike DLL yosasinthika mu malo ake okumbukira ndikuyamba kukhazikitsa. Pambuyo pa jekeseni wa DLL, zosangalatsa zinayamba.

M'mwezi woyamba ndi theka, wapolisiyu sanandivutitse kwambiri; idalumikizana ndi seva ya VNC pamakina anga kamodzi kapena kawiri. Koma nthawi ina inamuchititsa chidwi. Ndinkalemba ma code C kuti ndibise mawindo a Minesweeper (popanda kutseka) kuti zikhale zosavuta kusewera m'kalasi, pamene ndinawona kuti chizindikiro choyera cha VNC mu tray system chinali chakuda. Izi zikutanthauza kuti tsopano anali kundiyang'ana.

Ndinapitiliza kulemba ma code monga mwanthawi zonse, ndikuyesa kunyalanyaza. Panthawiyi, makinawo anayamba kuchepa, kuyesera kufalitsa mlingo waukulu wa chimango kwa mmodzi wa owunikira osawerengeka pakona ya chipindacho. Mawindo anatsala pang'ono kusiya kuyankha, chipiriro changa chitatha, ndinatuluka ndikumaliza tsikulo.

Pamaulendo otsatira ku chipinda cha makompyuta, Colombo anachita chidwi kwambiri ndi zimene ndinali kuchita pafupifupi nthaΕ΅i zonse. Pambuyo pa nthawi yachinayi, ndinaganiza kuti: Ndiyenera kuchitapo kanthu pa izi.

Ndikuvomereza kuti munthu wololera, woganiza bwino akanangonena nkhaniyi mwachindunji kwa iye kapena bwana wake. Komabe, nthawi zonse ndinkagonja pachiyeso ndipo mwamsanga ndinaganiza zotengera njira ina.

- Palibe chomwe mungachite popanda seva ya VNC iyi! - Ine modekha ndi motsimikiza anadziuza kangapo.

Zinali zofunikira kupha VNC.

Ndinayamba kulowa mu chipinda cha makompyuta ndi magulu akuluakulu a ophunzira ndikukhala kutali ndi ngodya ndi zowunikira momwe ndingathere. Izi zinagwira ntchito kwakanthawi ndipo zidandipatsa nthawi yoyesa malingaliro.

Kuyesera kwanga koyamba, ndikuganiza kuti muvomereza, kunali kofooka. Kudina kumanja pa chithunzi cha VNC mu tray system, ndidawona menyu yokhala ndi zilembo zamatsenga EXIT. Tsoka ilo, zilembozo zidalembedwa m'mawu otuwa. Woyang'anira wayimitsa chinthu cha menyu "Tulukani" kudzera mu Gulu la Policy Editor. Ndinayesera kupha ndondomekoyi kuchokera kwa Task Manager, koma ndithudi izo zinali zosawoneka kwa ine chifukwa zinkayenda pansi pa akaunti yosiyana, yopambana. Izo sizinaphule kanthu.

Seva ya VNC imayenda pa doko la TCP 5900, ndinakumbukira. Cholinga changa chotsatira chinali kutumiza mapaketi ovunda kudoko ili kuti ndiwononge.

Ndidakhala masiku osachepera ndikuyang'ana ndondomekoyi, ndikutumiza mitundu yosiyanasiyana yazabwinja yopangidwa bwino ku doko 5900 ndikuyembekeza kuti idzasweka. Pamapeto pake, zimenezonso sizinagwire ntchito.

Ndinayamba kale kuganiza kuti sindingathe kuchotsa chinthu ichi, pamene mwadzidzidzi chinanditulukira: payenera kukhala zenera pamenepo! Tiyenera kuchiwonetsa. Mwina ikhala ndi batani labwino lamadzi la "Salankhula" lomwe ndingagwiritse ntchito bwino!

Ndinayendetsa nambala yanga ya C pafupifupi yangwiro kuti ndipeze chogwirira pawindo lalikulu la njira ina - ndipo zowonadi, VNC idapezeka. Ndinamva kulimbikitsidwa pamene zala zanga zimalemba WM_SHOWWINDOW. Yesani kuganiza zomwe ndidaziwona pamaso panga?

Palibe!

Tsopano ndinali ndi chidwi ... chinali ndi zenera, koma chinali kunyalanyaza mauthenga anga. Ndinayang'ana kawiri code yanga kuti nditsimikizire kuti ikugwira ntchito. Anayesa pa njira zina zingapo ndipo zinayenda bwino. Ndinayesa kutumiza mauthenga ena pawindo la VNC, koma palibe.

Ndiyeno zinanditulukiranso!

Zikomo chifukwa chakuda kwambiri buku Charles Petzold Ndinaphunzira mosamala momwe njira za Win32 zimagwirira ntchito mkati mwadongosolo. Ntchito iliyonse ya Win32 ili ndi zenera komanso "mzere wauthenga". Mauthenga oyambitsidwa ndi kuyanjana kwa ogwiritsa ntchito, komanso mauthenga otumizidwa ndi Windows okha, amafika pamzere, ndipo pulogalamuyo imasankha momwe ingawachitire.

Osasangalatsa kwenikweni. Koma nditazindikira kuti mzere wokwanira wa uthenga womwe sunasinthidwe udakhala ngati wotsogola wa Window Process Manager kuti alowererepo, ndidayamba kutuluka thukuta la serotonin.

Mosataya sekondi imodzi, ndinabwerera ku C code yanga, kukonzekera kutumiza uthenga wina pawindo lalikulu la VNC WM_SHOWWINDOW. Mu kuzungulira. Wamuyaya. Kotero, mauthenga ambiri. WM_SHOWWINDOW, zomwe tsopano ndikudziwa kuti VNC ingayese kunyalanyaza kwathunthu ... pangozi yake.

Ndinalemba ndikuthamanga 4KB ya code yokonda ufulu kwambiri m'moyo wanga. Pambuyo masekondi atatu, Windows inanena kuti ndondomekoyi vncserver.Π΅Ρ…Π΅ sanayankhe, ndipo adapereka zomwe sindingathe kukana:

Kodi mukufuna kumaliza ntchitoyi?

INDE INDE!

Ndiloleni ndivomereze kuti kwa tsiku lonselo ndinali wosangalala kwambiri ndi ine ndekha.

Nditathera maola angapo ndikugaya mphamvu zanga zatsopano, ndinaganiza momwe ndingazigwiritsire ntchito. Zinali zosavuta kungopha gawoli pamaso pake. Ndinali ndi lingaliro labwino - kuzimiririka kwathunthu.

pambuyo ubatizo wamoto wokhala ndi socket programming Ndinazindikira kuti ndikhoza kulemba code yomwe ingachite zinthu ziwiri. Idzatenga kaye doko la TCP 5900 lomwe lamasulidwa kumene, lomwe m'mbuyomu limakhala ndi njira ya seva ya VNC. Kenako idzapanga kulumikizana kwatsopano kwa TCP ku seva ya VNC yamakina omwe atchulidwa. Khodiyo idzangoyimira deta yonse pakati pa zitsulo ziwirizi, ndipo Columbo adzaganiza kuti akulumikizana ndi ine, pamene kwenikweni adzakhala akugwirizanitsa ndi seva yosiyana kwambiri ya VNC.

Khodi yanga ikhala ngati mlatho wachinsinsi pakati pa ine ndi mzimu wina wosauka womwe ndingasankhe. Zinali zodabwitsa.

Nthawi yomweyo ndinayamba kulemba mlatho wanga wabodza wa VNC. Columbo adandilumikizana ndi ine kangapo, koma ndidapitilira pulogalamu pamaso pake. Ndinafika pozindikira kuti samadziwa zomwe ndikuchita, ngakhale ndidalemba zinthu zodziwikiratu monga manambala adoko ndi ndemanga ngati // ΠŸΡ€ΠΎΡ‰Π°ΠΉ, ΠΆΡƒΡ‚ΠΊΠΈΠΉ шпион VNC.

Patapita masiku angapo sindinathe kupeza code kuti igwire ntchito bwino. Kuti zinthu ziipireipire, ndinali kugwira ntchito pafupifupi mosalekeza ndi chithunzi chakuda cha VNC mu tray system. Ngakhale inali yolumikizidwa, sindinathe kutulutsa doko kuti ndiyese khodi yanga.

Ndikadadziwa pamenepo netcat!

Pamapeto pake, mtima wanga unatha, ndipo ndinali mnyamata wosaleza mtima wazaka 17. Ndikuwona chizindikiro choyera cha seva ya VNC chikusinthanso chakuda, ndidachita mantha, ndikutsegula nambala yoyambira yomwe idadzaza pamzere wa uthengawo, ndikuyiyendetsa pamaso pake. Ndinadikiriranso masekondi angapo ndisanadina End Process, kuti atsimikizire kuti wawona.

Ngati kukanikiza batani sikunanditsimikizire kuti kunali koyenera, ndiye kuti adadumpha kuchokera kuseri kwa linga lake loyang'anira kuti andiyandikire mwachangu ndikunditulutsa mchipindamo.

Zotsatira zake, adandiletsa kwa milungu iwiri. Ndinaganiza, chilango choyenera. Patatha pafupifupi milungu itatu, seva ya VNC idasowa pa boot script ndipo sinawonekere kwina kulikonse. Sindinadziwe ngati chochitika changa chidachitapo kanthu pa izi kapena ayi, koma zidasokoneza dongosolo langa lolemera kwambiri pogulitsa mfuti yanga ya VNC kwa ophunzira opsinjika m'maholo apakompyuta aku koleji m'dziko lonselo.

Source: www.habr.com

Kuwonjezera ndemanga