บล็อก

9 ทำลาย 2017

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

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

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

What is a Hook? ในการพัฒนาซอฟต์แวร์ 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 ในรหัสเคอร์เนลทำให้การใช้ประโยชน์มีความยืดหยุ่นมากและได้รับโดยทั่วไปจากกลุ่ม ตะขอเหล่านี้ปล่อยให้ผลที่นึกไม่ถึงและสามารถเติมเป็นทริกเกอร์สำหรับโอกาสที่เฉพาะเจาะจงได้

สรุป:

Software Development – What is a Hook – conclusion The hooking programming procedures are effective and open up a scope of conceivable outcomes for software engineers, however it ought to be utilized with alert since they include a more prominent intricacy in the stream of procedures and change the first conduct of the OS, applications or other software segments, making it hard to comprehend the rationale of software. Other than that, as specified prior in this article, the utilization of these systems without paradigm may debase the execution of the applications.

การฝึกอบรม ITIL

Get ITIL Training & Certification
สมัครเดี๋ยวนี้

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