บล็อก

9 ทำลาย 2017

การพัฒนาซอฟต์แวร์: อะไรคือตะขอ?

/
โพสโดย

การพัฒนาซอฟต์แวร์: อะไรคือตะขอ?

เราควรทราบเกี่ยวกับประเภทของตะขอ

ตะขอคืออะไร?ในการพัฒนาซอฟต์แวร์ Hooking เป็นแนวคิดที่อนุญาตให้เปลี่ยนการดำเนินการของโปรแกรม รหัสความเป็นไปได้เสนอให้คุณเปลี่ยนแปลงการกระทำครั้งแรกของบางสิ่งบางอย่างโดยไม่ต้องเปลี่ยนรหัสของชั้นเทียบเคียง นี้จะเสร็จสิ้นโดยการเขียนทับกลยุทธ์เบ็ด

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

แสดงให้เห็นว่าคุณกำลังใช้ระบบการจัดการลูกค้า (CMS) จากบุคคลภายนอกและคุณอาจต้องการให้ผู้บริหารระดับสูงได้รับอีเมลแจ้งเตือนทุกครั้งที่เผยแพร่โพสต์อื่นและพฤติกรรมนี้ไม่ได้เป็นค่าเริ่มต้นของอุปกรณ์ จะมีเส้นทางสองเส้นทางไปข้างหน้า:

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

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

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

นวัตกรรมเทคโนโลยี เสนอการฝึกอบรมการพัฒนาซอฟต์แวร์ใน Gurgaon, Delhi NCR ในอินเดีย

ตะขอเป็นรูปแบบการออกแบบ

เป็นที่น่าสนใจที่จะทราบว่าการออกแบบเค้าร่างจำนวนมาก (ทั้งหมด) เป็นตัวอย่างความหมายสำหรับตะขอ พวกเขาพูดถึงวิธีการดำเนินการระบบย่อยของพื้นที่ที่มีปัญหา บางส่วนขึ้นอยู่กับกฎของการพัฒนากองกำลัง: บทคัดย่อ, โรงงาน, Builder, Command, Interpreter, สังเกตการณ์, ต้นแบบ, รัฐและยุทธศาสตร์

อื่น ๆ ในทั้งสองตัวอย่างของการรวมกันและการพัฒนาพาร์ทิชัน: แม่แบบและสะพาน

ความหมายจะถูกสื่อสารโดยปกติในชื่อเทคนิคของ hook (ตัวอย่างเช่นใน Command, กลยุทธ์เรียกว่า execute ())

การวางตารางวิธีเสมือน

การพัฒนาซอฟต์แวร์ - อะไรคือเทคนิค Hook-Point 1 เสมือนจะนำเส้นทางที่แยกไม่ออกจากกลยุทธ์แบบคงที่ แต่เนื่องจากสามารถเปลี่ยนเทคนิคเสมือนได้ผู้รวบรวมไม่รู้จักที่อยู่ของความจุเสมือนเฉพาะเมื่อคุณเรียกใช้งานในโค้ดของคุณ คอมไพเลอร์จึงรวบรวม Virtual Method Table (VMT) ซึ่งเป็นวิธีการสอบถามรายละเอียดเพิ่มเติมเกี่ยวกับที่อยู่ที่มีอยู่ในรันไทม์ ทุกกลยุทธ์เสมือนจะเปิดใช้งานเมื่อรันไทม์ผ่าน VMT VMT ของคำถามมีกลยุทธ์เสมือนทั้งหมดสำหรับบรรพบุรุษของตนและนอกจากนั้นจะมีการประกาศ ดังนั้นเทคนิคเสมือนใช้หน่วยความจำมากกว่ากลยุทธ์ขององค์ประกอบแม้ว่าจะทำงานเร็วขึ้น

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

Hooking API

การพัฒนาซอฟต์แวร์ - อะไรคือ Hook-Point 2 กระบวนการ Hooking API ช่วยให้คุณสามารถปรับเปลี่ยนองค์ประกอบของระบบการทำงานได้อย่างแท้จริง ด้วยความสามารถในการเรียกเก็บค่าใช้จ่ายดังกล่าวคุณสามารถเปลี่ยนพารามิเตอร์โดยการเปลี่ยนกิจกรรมที่จะดำเนินการในขั้นแรก

เป็นไปได้ที่จะยกชิ้นส่วนออกจากเร็กคอร์ดเฉพาะเก็บแอ็พพลิเคชันจากการทำงานและเรียกร้องการยืนยันของลูกค้าเพื่อสำรองที่เก็บข้อมูลไปยังแวดวง ฯลฯ

แท้จริงแล้วการตัดสินใจที่ยิ่งใหญ่ที่สุดคือการรักษาความปลอดภัยเช่นการป้องกันไวรัสและการป้องกันสปายแวร์ เป็นไปตามที่อาจมีสถานการณ์ในการพัฒนาสามัญของเราที่ Hooking API สามารถเป็นวิธีหลักออก

อินเทอร์เฟซสำหรับการเขียนโปรแกรม Hooking ในกรณีเฉพาะของเราหมายถึงการใช้ API จากระบบปฏิบัติการหรือจาก DLL ใด ๆ และเปลี่ยนการทำงานโดยทั่วไปไปยังที่อื่น มีพื้นฐานสองวิธีคือ

EAT และ IAT: EXE / DLL ทั้งหมดมี API เพื่อนำเข้าและตารางค่าโดยสาร ตารางเหล่านี้มีคำแนะนำที่แสดงจุดเข้า API โดยการเปลี่ยนคำแนะนำเหล่านี้ทำให้พวกเขาระบุถึงการโทรกลับของเราเรามีเบ็ด เป็นไปได้ว่า EXE / DLL นี้ไม่สามารถนำเข้า API ได้กลยุทธ์นี้จะไม่ทำงาน

การเขียนทับโค้ดที่ตรงไปตรงมา: ก่อนหน้านี้ในกรณีที่เป็นไปได้ที่จะเพิ่มการโทรไปยัง callback ของเราไปสู่จุดเริ่มต้นของโค้ด API เราสามารถ "เบ็ด" ได้ทำให้ความสามารถของเราทำงานที่จุดใดก็ตามที่เรียก API เป็นไปตามที่อาจมีปัญหา: ถ้าหลังจากจัดการโค้ดของเราเราจำเป็นต้องเรียก API แรกเราจะถอยกลับไปที่ callback ของเราและจะสร้าง stack flood ขึ้น การจัดเรียงหนึ่งครั้งเป็นการแก้ไขเบ็ดเพื่อให้สามารถเรียกใช้ API ได้ลองใช้งานอีกครั้งเมื่อดำเนินการแล้ว เป็นไปได้ว่าท่ามกลางจุดศูนย์กลางนี้การโทร API ไม่กี่ครั้งสามารถทำได้และจะไม่ดำเนินการติดต่อกลับของเรา

Inline Hook คือจุดที่เราได้รับแนวทางหลักของกำลังการผลิตและเราทำการค้า Jump, Push หรือ Call สำหรับความสามารถของเรา

การอ่านที่กำหนดไว้: ระบบการทำงานของ Windows ช่วยเพิ่ม API การติดตั้ง เราควรทราบว่า Windows API hooking ทำงานอย่างไร

โอกาสในการจับ

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

IAT Hooking ภายใน

การพัฒนาซอฟต์แวร์ - อะไรคือกระบวนการ Hook-Point 4Each ใน Windows มีตารางที่เรียกว่าตารางที่อยู่การนำเข้า (IAT) ซึ่งเก็บคำแนะนำไปยังขีดความสามารถที่ส่งออกโดย DLL ของแต่ละขั้นตอน ตารางนี้มีความหนาแน่นมากขึ้นกับที่อยู่ขององค์ประกอบของ DLLs ในขณะดำเนินการ

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

ตะแกรง Netfilter

การพัฒนาซอฟต์แวร์ - อะไรคือ Hook-Point 5Netfilter คือระบบย่อยของลินุกซ์ที่น่าสนใจกว่า 2.4 มีหน้าที่ในการแยกกลุ่ม, NAT, ไฟร์วอลล์, การเปลี่ยนเส้นทาง, และอื่น ๆ Netfilter สามารถขยายได้เป็นพิเศษและเอกสารประกอบเสร็จสิ้น ทำให้โอกาสในการใช้ Hooks ในรหัสเคอร์เนลทำให้การใช้ประโยชน์มีความยืดหยุ่นมากและได้รับโดยทั่วไปจากกลุ่ม ตะขอเหล่านี้ปล่อยให้ผลที่นึกไม่ถึงและสามารถเติมเป็นทริกเกอร์สำหรับโอกาสที่เฉพาะเจาะจงได้

สรุป:

การพัฒนาซอฟต์แวร์ - อะไรคือ Hook - ข้อสรุปขั้นตอนการเขียนโปรแกรม hooking มีประสิทธิภาพและเปิดขอบเขตของผลลัพธ์ที่เป็นไปได้สำหรับวิศวกรซอฟต์แวร์ แต่ควรใช้กับการแจ้งเตือนเนื่องจากรวมถึงความสับสนที่โดดเด่นมากขึ้นในขั้นตอนการทำงานและการเปลี่ยนแปลงครั้งแรก การดำเนินงานของระบบปฏิบัติการแอพพลิเคชันหรือซอฟต์แวร์อื่น ๆ ทำให้ยากต่อการเข้าใจเหตุผลของซอฟต์แวร์ นอกเหนือจากที่ระบุไว้ก่อนหน้าในบทความนี้การใช้ประโยชน์จากระบบเหล่านี้โดยไม่มีกระบวนทัศน์อาจทำให้การใช้แอ็พพลิเคชันลดลง

GTranslate Your license is inactive or expired, please subscribe again!