Coder Battle: ฉันกับผู้ชาย VNC ตัวนั้น

В บล็อกนี้ มีการเผยแพร่เรื่องราวของโปรแกรมเมอร์จำนวนไม่น้อย ฉันชอบนึกถึงเรื่องโง่ๆ เดิมๆ ของตัวเอง นี่เป็นอีกเรื่องหนึ่ง

ฉันเริ่มสนใจคอมพิวเตอร์เป็นครั้งแรก โดยเฉพาะการเขียนโปรแกรม เมื่ออายุประมาณ 11 ขวบ ในตอนต้นของโรงเรียนมัธยมขоฉันใช้เวลาว่างส่วนใหญ่ซ่อมแซม C64 และเขียน BASIC จากนั้นจึงตัดโค้ดที่ไม่ดีออกด้วยกรรไกร ฉันไม่ได้ล้อเล่นนะกรรไกร.

หลังเลิกเรียน (อายุประมาณ 16 ปี) เด็กชาวอังกฤษมักจะไปเรียนที่วิทยาลัย โดยพวกเขาเลือกเรียนสามหรือสี่วิชาก่อนไปมหาวิทยาลัย เนื่องจากฉันชอบกล่องสีเบจและเครื่องบันทึกเทปที่บ้าน ฉันจึงตัดสินใจว่าการเรียน "วิทยาการคอมพิวเตอร์" ในวิทยาลัยเป็นทางเลือกที่เหมาะสม

ฉันสนุกกับหลักสูตรนี้มากกว่าที่ฉันคาดไว้ ที่นั่นฉันได้พบกับปาสคาลและเดลฟีเป็นครั้งแรก

ในช่วงพักระหว่างคาบเรียน นักเรียนสามารถใช้เครื่องใดก็ได้ฟรีในห้องคอมพิวเตอร์ ลองนึกภาพ: ห้องขนาดใหญ่ที่ออกแบบมาสำหรับคนประมาณร้อยคน โดยมีโต๊ะเป็นแถวเต็มไปด้วยเครื่องจักร เช่น โต๊ะที่มีจอภาพอยู่บนยูนิตระบบ แฟนๆ ส่งเสียงฮัมเพลงอย่างต่อเนื่อง ลูกบอลของเมาส์ส่งเสียงพึมพำอยู่บนโต๊ะโดยไม่หยุดแม้แต่วินาทีเดียว มีกลิ่นแปลก ๆ ในอากาศราวกับว่าวัยรุ่นฮอร์โมน 50-100 ตัวกำลังเปลี่ยนชิป Pentium III หลายร้อยตัวเป็นระยะ ๆ

แม้จะมีความเสี่ยงต่อสุขภาพ แต่ฉันก็ชอบนั่งหน้าคอมพิวเตอร์เมื่อมีเวลาว่าง

ผู้ดูแลระบบที่ปฏิบัติหน้าที่ในห้องนั้นเป็นชายวัยกลางคนตัวเตี้ยที่ได้รับเลือกให้รับบทบาทนี้เพราะความปรารถนาอันแรงกล้าที่จะกลายเป็นเผด็จการที่ชั่วร้าย ผมว่าอย่างนั้น. การปฏิบัติหน้าที่เป็นการพูดน้อยผู้ชายรักงานของเขาจริงๆ เขาได้รับมอบหมายให้รักษาความสงบเรียบร้อยเพื่อไม่ให้ใครใช้คอมพิวเตอร์ของโรงเรียนทำอะไรที่ไม่เหมาะสม

จนถึงทุกวันนี้ สัญชาตญาณของฉันบอกฉันว่าโบนัสของผู้ดูแลระบบขึ้นอยู่กับจำนวนนักเรียนที่เขาจับมือและพาออกจากห้องคอมพิวเตอร์โดยตรง ฉันค่อนข้างแน่ใจว่าผู้ชายคนนี้จ่ายจำนองของเขาเร็ว

เขานั่งอยู่ตรงมุมห้องคอมพิวเตอร์ที่มุมโต๊ะ และปลอดภัยที่จะสรุปได้ว่าเครื่องตรวจภาวะเจริญพันธุ์ของเขาพบวิธีสืบพันธุ์โดยมีช่วงตั้งท้องสั้นอย่างน่าประทับใจ ซึ่งมีอยู่มากมาย ใครๆ ก็สงสัยได้ว่าเขามีเวลาติดตามพวกเขาทั้งหมดจริงๆ หรือไม่ แน่นอน ฉันล้อเล่น... ฉันเคยบอกไปหรือเปล่าว่าเขาจริงจังกับงานมาก?

ในเวลานั้น เครือข่ายคอมพิวเตอร์ใช้ Windows 2000 ในไม่ช้าฉันก็ค้นพบว่าทุกครั้งที่ฉันเข้าสู่ระบบ จะมีการเปิดตัวสคริปต์ที่ระบุการเริ่มต้นเซิร์ฟเวอร์ VNC จากบัญชีผู้ดูแลระบบสำหรับการเข้าถึงเดสก์ท็อประยะไกล เมื่อใดก็ตามที่ผู้ชายคนนี้ต้องการสอดแนมคุณ เขาจะเชื่อมต่อโดยตรงกับเครื่องของคุณและเฝ้าดู มันน่าขนลุก และตอนนี้ฉันคิดดูแล้ว อาจผิดกฎหมายก็ได้

หลังจากตัดฟันด้วย BASIC และ C64 ตอนนี้ฉันเขียนด้วยภาษา C และแม้แต่ C++ เล็กน้อย ในเวลานั้น ฉันยังคงสนใจภาษา D มาก ซึ่งได้แก้ไขข้อบกพร่องบางประการของ C++ ดังที่ฉันเห็นในตอนนั้น

ฉันเคยเข้าไปในห้องคอมพิวเตอร์เพื่ออ่านสิ่งใหม่ๆ บน D หรือเล่นกับคอมไพเลอร์ Digital Mars D บางครั้ง ขณะที่ฉันฟุ้งซ่านจากการคิดถึงอนาคตอันยิ่งใหญ่ของ D ฉันเขียนโค้ด C เพื่อแฮ็กโปรแกรม Win32 อื่นๆ ผ่านหน้าต่างของพวกเขา จับ

ในยุคเก่าของการเขียนโปรแกรม Win32 การค้นหาตัวจัดการหน้าต่างเป็นวิธีที่ง่ายที่สุดในการแฮ็กโปรแกรมอื่น แน่นอนว่าโปรแกรม GUI ทั้งหมดบน Windows มีหน้าต่าง แม้ว่าจะไม่ปรากฏบนหน้าจอก็ตาม ด้วยการเขียนโปรแกรมเพื่อดึงข้อมูลหมายเลขอ้างอิงไปยังกระบวนการอื่น (โดยพื้นฐานแล้วเป็นลิงก์ไปยังกระบวนการนั้น) คุณสามารถส่งข้อความถึงกระบวนการนั้นได้ ซึ่งอนุญาตให้มีการดำเนินการขั้นพื้นฐานบางอย่าง เช่น การซ่อน/การแสดงหน้าต่างโปรแกรม เช่นเดียวกับสิ่งที่ยอดเยี่ยมจริงๆ เช่น การบังคับให้กระบวนการโหลด DLL ที่กำหนดเองลงในพื้นที่หน่วยความจำ และเริ่มดำเนินการโค้ด หลังจากการฉีด DLL ความสนุกก็เริ่มขึ้น

ในช่วงเดือนครึ่งแรก นักสืบคนนี้ไม่ได้รบกวนฉันมากนัก โดยเชื่อมต่อกับเซิร์ฟเวอร์ VNC บนเครื่องของฉันเพียงครั้งเดียวหรือสองครั้งเท่านั้น แต่เซสชันหนึ่งอาจทำให้เขาสนใจ ฉันกำลังเขียนโค้ด C เพื่อซ่อนหน้าต่าง Minesweeper (โดยไม่ปิด) เพื่อให้เล่นในชั้นเรียนได้ง่ายขึ้น เมื่อฉันสังเกตเห็นว่าไอคอน VNC สีขาวในซิสเต็มเทรย์เปลี่ยนเป็นสีดำ นี่หมายความว่าตอนนี้เขากำลังดูฉันอยู่

ฉันเขียนโค้ดต่อไปตามปกติโดยพยายามเมินเฉยต่อเขา ในขณะเดียวกัน เครื่องก็เริ่มช้าลง โดยพยายามส่งเฟรมเรตสูงสุดไปยังจอภาพจำนวนนับไม่ถ้วนที่อยู่ตรงมุมห้อง Windows เกือบจะหยุดตอบสนอง เมื่อความอดทนของฉันหมดลง ฉันก็ออกจากระบบและทำงานต่อในวันนั้น

เมื่อไปเยี่ยมห้องคอมพิวเตอร์ครั้งต่อๆ มา โคลัมโบก็สนใจสิ่งที่ฉันทำเกือบทุกครั้ง หลังจากนั้นประมาณครั้งที่สี่ ฉันตัดสินใจว่า: ฉันจำเป็นต้องทำอะไรบางอย่างเกี่ยวกับเรื่องนี้

ฉันยอมรับว่าบุคคลที่มีเหตุผลและมีเหตุผลสามารถหยิบยกปัญหานี้ขึ้นโดยตรงกับเขาหรือเจ้านายของเขาได้ อย่างไรก็ตาม ฉันมักจะยอมแพ้ต่อสิ่งล่อใจและรีบพูดคุยกับตัวเองให้นำกลยุทธ์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

- คุณไม่สามารถทำอะไรได้หากไม่มีเซิร์ฟเวอร์ VNC นี้! — ฉันบอกตัวเองอย่างใจเย็นและเด็ดขาดหลายครั้ง

จำเป็นต้องฆ่า VNC

ฉันเริ่มเข้าไปในห้องคอมพิวเตอร์กับนักเรียนกลุ่มใหญ่ และนั่งอยู่ห่างจากมุมที่มีจอภาพมากที่สุด สิ่งนี้ได้ผลมาระยะหนึ่งแล้วและให้เวลาฉันทดสอบแนวคิดบ้าง

ความพยายามครั้งแรกของฉัน ฉันคิดว่าคุณจะเห็นด้วย ค่อนข้างอ่อนแอ คลิกขวาที่ไอคอน VNC ในซิสเต็มเทรย์ ฉันเห็นเมนูที่มีตัวอักษรวิเศษ EXIT น่าเสียดายที่จดหมายเหล่านี้เขียนด้วยข้อความโครงร่างสีเทา ผู้ดูแลระบบได้ปิดใช้งานรายการเมนู "ออก" ผ่านทางตัวแก้ไขนโยบายกลุ่ม ฉันพยายามปิดกระบวนการจากตัวจัดการงาน แต่แน่นอนว่าฉันไม่สามารถมองเห็นได้เพราะมันทำงานภายใต้บัญชีอื่นที่มีสิทธิพิเศษมากกว่า มันไม่ได้ผล

ฉันจำได้ เซิร์ฟเวอร์ VNC ทำงานบนพอร์ต TCP 5900 แผนต่อไปของฉันคือส่งแพ็กเก็ตที่เสียหายไปยังพอร์ตนี้เพื่อที่จะทำให้มันพัง

ฉันใช้เวลาอย่างน้อยสองสามวันในการแก้ไขโปรโตคอล ส่งไฟล์อึที่มีโครงสร้างดีรูปแบบต่างๆ ไปยังพอร์ต 5900 และหวังว่ามันจะพัง สุดท้ายก็ไม่ได้ผลเช่นกัน

ฉันเริ่มคิดว่าฉันจะกำจัดสิ่งนี้ออกไปไม่ได้แล้ว ทันใดนั้นฉันก็นึกขึ้นมาได้ว่า ที่นั่นต้องมีหน้าต่างแน่ๆ! เราจำเป็นต้องแสดงมัน บางทีมันอาจจะมีปุ่ม "ปิดเสียง" สวยๆ ที่ฉันสามารถนำมาใช้ประโยชน์ได้อย่างดีเยี่ยม!

ตอนนี้ฉันใช้โค้ด C ที่เกือบจะสมบูรณ์แบบแล้วเพื่อค้นหาจุดอ้างอิงไปยังหน้าต่างหลักของกระบวนการอื่น - และแน่นอนว่าพบ VNC แล้ว ฉันรู้สึกมีแรงบันดาลใจเมื่อนิ้วของฉันพิมพ์ WM_SHOWWINDOW. ลองเดาสิว่าฉันเห็นอะไรอยู่ตรงหน้า?

ไม่มีอะไร!

ตอนนี้ฉันอยากรู้... มันมีหน้าต่าง แต่มันไม่สนใจข้อความของฉัน ฉันตรวจสอบรหัสของฉันอีกครั้งเพื่อให้แน่ใจว่าใช้งานได้ ทดสอบกับกระบวนการอื่น ๆ หลายอย่างและใช้งานได้ดีมาก ฉันพยายามส่งข้อความอื่นไปที่หน้าต่าง VNC แต่ก็ยังไม่มีอะไรเลย

แล้วมันก็กลับมาหาฉันอีกครั้ง!

ขอบคุณที่หนามาก หนังสือ Charles Petzold ฉันศึกษาอย่างรอบคอบว่ากระบวนการ Win32 ทำงานภายในระบบอย่างไร แอปพลิเคชัน Win32 ทุกตัวมีหน้าต่างและ "คิวข้อความ" ข้อความที่ทริกเกอร์โดยการโต้ตอบของผู้ใช้ รวมถึงข้อความที่ Windows ส่งเอง จะมาถึงคิว และตัวแอปพลิเคชันเองจะเป็นผู้ตัดสินใจว่าจะประมวลผลอย่างไร

ไม่ค่อยน่าสนใจในตัวเอง แต่เมื่อฉันรู้ว่าคิวข้อความที่ยังไม่ได้ประมวลผลขนาดใหญ่เพียงพอทำหน้าที่เป็นฮิวริสติกสำหรับ Window Process Manager เพื่อเข้าไปแทรกแซงกระบวนการที่หยุดทำงาน ฉันก็เริ่มที่จะหลั่งเซโรโทนินบริสุทธิ์ออกมา

ฉันกลับไปที่รหัส C ของฉันโดยไม่เสียเวลาสักวินาทีเพื่อเตรียมส่งข้อความอื่นไปยังหน้าต่าง VNC หลัก WM_SHOWWINDOW. ในรอบ. นิรันดร์ จึงมีข้อความมากมาย WM_SHOWWINDOWซึ่งตอนนี้ฉันรู้แล้วว่า VNC จะพยายามเพิกเฉยโดยสิ้นเชิง... ตกอยู่ในอันตราย

ฉันรวบรวมและรันโค้ดที่รักอิสระที่สุดในชีวิตของฉันขนาด 4KB หลังจากนั้นประมาณสามวินาที Windows ก็รายงานว่ากระบวนการดังกล่าว vncserver.ехе ไม่ตอบและทำข้อเสนอที่ฉันไม่สามารถปฏิเสธได้:

คุณต้องการทำกระบวนการนี้ให้เสร็จสิ้นหรือไม่?

ใช่!

ฉันยอมรับว่าตลอดทั้งวันที่เหลือฉันพอใจกับตัวเองเหลือทน

หลังจากใช้เวลาสองสามชั่วโมงในการย่อยมหาอำนาจใหม่ของฉัน ฉันก็ตัดสินใจว่าจะใช้มันอย่างไร มันง่ายเกินไปที่จะฆ่าเซสชันที่อยู่ตรงหน้าเขา ฉันมีความคิดที่ดีกว่า - ให้หายไปโดยสิ้นเชิง

หลังจาก การบัพติศมาด้วยโปรแกรมซ็อกเก็ต ฉันรู้ว่าฉันสามารถเขียนโค้ดที่จะทำสองสิ่งได้ ก่อนอื่นมันจะครอบครองพอร์ต TCP 5900 ที่เพิ่งว่างซึ่งก่อนหน้านี้ถูกครอบครองโดยกระบวนการเซิร์ฟเวอร์ VNC ที่ไม่มีความรู้ จากนั้นจะสร้างการเชื่อมต่อ TCP ใหม่ไปยังเซิร์ฟเวอร์ VNC ของเครื่องที่ระบุ โค้ดจะพร็อกซีข้อมูลทั้งหมดระหว่างซ็อกเก็ตทั้งสอง และโคลัมโบจะคิดว่าเขากำลังเชื่อมต่อกับฉัน แต่ในความเป็นจริง เขาจะเชื่อมต่อกับเซิร์ฟเวอร์ VNC ที่แตกต่างกันโดยสิ้นเชิง

รหัสของฉันจะทำหน้าที่เป็นสะพานเชื่อมลับระหว่างฉันกับวิญญาณที่น่าสงสารคนอื่นๆ ที่ฉันเลือก มันวิเศษมาก

ฉันเริ่มเขียนสะพาน VNC ปลอมของฉันทันที โคลัมโบเชื่อมต่อกับฉันหลายครั้ง แต่ฉันยังคงเขียนโปรแกรมต่อหน้าเขาต่อไป ฉันได้ข้อสรุปว่าเขาไม่รู้ว่าฉันกำลังทำอะไรอยู่ แม้ว่าฉันจะเขียนสิ่งที่ชัดเจนเช่นหมายเลขพอร์ตและความคิดเห็นเช่นนั้นก็ตาม // Прощай, жуткий шпион VNC.

หลังจากผ่านไปสองสามวัน ฉันไม่สามารถรับโค้ดให้ทำงานได้อย่างถูกต้อง ที่แย่กว่านั้นคือฉันทำงานเกือบต่อเนื่องโดยมีไอคอน VNC สีดำในซิสเต็มเทรย์ ในขณะที่เชื่อมต่ออยู่ ฉันไม่สามารถปล่อยพอร์ตเพื่อทดสอบโค้ดของฉันได้

ถ้าฉันได้รู้แล้ว netcat!

ในที่สุด ฉันก็คลายความกังวล เพราะฉันเป็นเด็กอายุ 17 ที่ไม่อดทน เมื่อเห็นไอคอนเซิร์ฟเวอร์ VNC สีขาวเปลี่ยนเป็นสีดำอีกครั้ง ฉันก็ตกใจมาก เปิดโค้ดต้นฉบับที่บรรจุคิวข้อความ และเปิดมันต่อหน้าต่อตาเขา ฉันรอสองสามวินาทีก่อนจะคลิก End Processเพียงเพื่อให้แน่ใจว่าเขาเห็นมัน

หากการกดปุ่มนั้นไม่ได้ทำให้ฉันมั่นใจว่ามันคุ้มค่า เขาก็กระโดดจากด้านหลังป้อมปราการเพื่อเข้ามาหาฉันอย่างรวดเร็วและพาฉันออกจากห้องไปอย่างแน่นอน

เป็นผลให้ฉันถูกแบนจากเครือข่ายเป็นเวลาสองสัปดาห์ ฉันคิดว่าเป็นการลงโทษที่ยุติธรรม หลังจากนั้นประมาณสามสัปดาห์ เซิร์ฟเวอร์ VNC ก็หายไปจากสคริปต์การบูตและไม่เคยปรากฏที่อื่นเลย ฉันไม่เคยรู้เลยว่าเหตุการณ์ของฉันมีบทบาทในเรื่องนี้หรือไม่ แต่มันทำลายแผนการของฉันที่จะร่ำรวยมหาศาลโดยการขายปืน VNC ให้กับนักเรียนที่ซึมเศร้าในห้องคอมพิวเตอร์ของวิทยาลัยทั่วประเทศ

ที่มา: will.com

เพิ่มความคิดเห็น