Blog

9 làm hư 2017

Phát triển phần mềm: Hook là gì?

/
Gửi bởi

Phát triển phần mềm: Hook là gì?

Chúng ta nên biết về một vài loại Hook.

Hook là gì?Trong phát triển phần mềm, Hooking là một ý tưởng cho phép thay đổi cách tiến hành một chương trình. Mã khả năng cung cấp cho bạn để thay đổi hành vi đầu tiên của cái gì đó mà không thay đổi mã của bạn của lớp so sánh. Điều này được hoàn thành bằng cách ghi đè lên các chiến lược hook.

Cách sử dụng này rất hữu ích khi bổ sung các chức năng mới vào ứng dụng, khuyến khích thêm sự tương ứng giữa các thủ tục thay thế và các thông điệp của hệ thống. Hook có xu hướng làm giảm hệ thống bằng cách mở rộng tải chuẩn bị mà hệ thống cần để thực hiện cho mỗi tin nhắn. Nó chỉ nên được giới thiệu khi cần thiết và sơ tán trong cơ hội sớm nhất.

Hãy hình dung rằng bạn đang sử dụng Hệ thống Quản lý Khách hàng (CMS) từ bên ngoài và bạn có thể muốn một người quản lý cấp cao được cảnh báo bằng email mỗi khi một bài đăng khác được phân phối và hành vi này không phải là thiết bị mặc định. Sẽ có một vài tuyến đường phía trước:

Thay đổi mã nguồn CMS không phải là một ý tưởng thông minh, sau khi tất cả trong làm mới sau đây của thiết bị bạn sẽ phải đối mặt với những khó khăn của việc mất thay đổi của bạn hoặc không có khả năng để tiếp tục mọi thứ làm mới;

  • Làm cho CMS cụ thể của riêng bạn là một ý nghĩ khủng khiếp, tất cả mọi thứ được xem xét, bạn không có đủ năng lượng hoặc tài sản đủ để tạo ra những thứ mới hoặc thậm chí theo kịp những gì để chế tạo;
  • Khám phá khả năng sử dụng một cái móc, nghĩa là kiểm tra nếu CMS tìm trong các mô-đun bên ngoài hoặc các mô-đun cho các phần tử của một tên được cung cấp sẽ được thực hiện vào phút chót, trong trường hợp này, việc phân phối các bài viết mới.
  • Phần xuống đất của việc sử dụng móc dao động thường từ thiết bị đến công cụ. Vị trí thuận lợi nguyên tắc của móc không phải là thay đổi mã đầu tiên. Trong tất cả các sách hướng dẫn thực hành tuyệt vời của tất cả các thiết bị nguồn mở có cập nhật liên tục, câu thần chú tự phục hồi không thay đổi trung tâm. Bất chấp việc làm mới không thể tưởng tượng được, bất kỳ cá nhân nào đến sau để làm bảo trì sẽ không nghĩ về sự thay đổi, và người hiếm khi thảo luận về nó là bạn, không phải là bộ máy.

Khả năng mở rộng là một quan điểm khác được ưu tiên sử dụng các chiến lược hook cho phép ứng dụng tăng cường các giao diện ổn định của nó. Hook chiến lược decouple ổn định giao diện và tiến hành một không gian khác nhau mà có thể nổi lên từ các ví dụ của một ứng dụng cho một thiết lập cụ thể.

Giải pháp Công nghệ Đổi mới cung cấp đào tạo phát triển phần mềm tại Gurgaon, Delhi NCR ở Ấn Độ.

Hooks as Patterns Thiết kế

Thật hấp dẫn khi lưu ý rằng rất nhiều thiết kế phác thảo (ví dụ) cho thấy ngữ nghĩa cho móc. Họ nói chuyện làm thế nào để thực hiện các tiểu hệ thống của các khu vực có vấn đề. Một số phụ thuộc vào quy tắc phát triển đội: Tóm tắt, Nhà máy, Builder, Command, Thông dịch, Người quan sát, Prototype, Nhà nước, và Chiến lược.

Khác trong cả hai ví dụ của thống nhất và phát triển phân vùng: Phương pháp Mẫu và Cầu.

Ngữ nghĩa là thông thường được truyền đạt trong tên kỹ thuật móc nối (ví dụ trong Command, chiến lược được gọi là execute ()).

Ghép bảng Phương pháp ảo

Phát triển phần mềm - Một kĩ thuật 1 Point được đưa vào một con đường không thể phân biệt được từ các chiến lược tĩnh, nhưng vì các kỹ thuật ảo có thể được thay đổi, trình biên dịch không biết địa chỉ của một dung lượng ảo cụ thể khi bạn gọi nó trong mã của bạn. Trình biên dịch, do đó, lắp ráp một bảng phương pháp ảo (VMT), cung cấp một cách để yêu cầu các địa chỉ dung lượng trong thời gian chạy. Mỗi chiến lược ảo được kích hoạt trong thời gian chạy thông qua VMT. VMT của một câu hỏi chứa tất cả các chiến lược ảo cho tiền thân của nó, và thêm vào đó là các chiến lược mà nó tuyên bố. Do đó, các kỹ thuật ảo sử dụng nhiều bộ nhớ hơn các chiến lược phần tử, mặc dù thực tế là chúng chạy nhanh hơn.

Vì VMT là một bảng có chứa các con trỏ với địa chỉ bộ nhớ cho các khả năng giao diện, nên làm gì để thay thế địa chỉ bộ nhớ thứ nhất với địa chỉ của một công việc móc hợp pháp. Dọc theo những đường này, kỹ thuật được gọi sẽ được ghi đè, và việc thực hiện thèm muốn mới của năng lực sẽ được thực hiện.

API Hooking

Phát triển phần mềm - Điều gì là một Hook - Point 2The Hooking API thủ tục thực sự cho phép bạn tái tạo lại các yếu tố của hệ thống làm việc. Với khả năng thu phí như vậy, bạn có thể thay đổi thông số của chúng bằng cách thay đổi hoạt động sẽ được thực hiện ban đầu.

Ví dụ, có thể chấp nhận xóa bỏ một bản ghi cụ thể, giữ ứng dụng chạy và yêu cầu xác nhận của khách hàng để lưu trữ kho lưu trữ vào vòng tròn, v.v ...

Thật vậy, quyết định cắt giảm lớn nhất là trong lĩnh vực an ninh, ví dụ như chống virus và chống spyware. Trong trường hợp có thể, có những hoàn cảnh trong quá trình phát triển thông thường của chúng ta, nơi Hooking API, có thể là cách ra chính.

Giao diện lập trình Hooking, trong trường hợp cụ thể của chúng tôi, ngụ ý nhận một API từ hệ điều hành, hoặc từ bất kỳ DLL, và thay đổi việc thực hiện điển hình của nó sang một nơi khác, chính xác hơn, với năng lực khác. Về cơ bản có hai cách tiếp cận:

EAT và IAT: tất cả EXE / DLL chứa API để nhập và bảng giá vé. Các bảng này chứa các con trỏ hiển thị điểm nhập API. Bằng cách thay đổi các con trỏ này, làm cho chúng biểu thị sự gọi lại của chúng ta, chúng ta có một cái móc. Có thể như vậy, nếu EXE / DLL này không nhập API, chiến lược này sẽ không hoạt động;

Viết mã đơn giản: Như đã nói trước đây, trong trường hợp có thể thêm một lời gọi vào hàm callback của chúng tôi để bắt đầu mã API, chúng ta có thể “móc nó”, làm cho khả năng của chúng ta chạy bất cứ lúc nào API được gọi. Có thể, có một vấn đề: nếu sau khi mã của chúng tôi được xử lý, chúng tôi cần gọi API đầu tiên, chúng tôi sẽ quay trở lại cuộc gọi lại của chúng tôi và một cơn lũ ngăn xếp sẽ được tạo. Một sắp xếp là sửa chữa móc để có khả năng gọi API, thử lại nó khi nó được thực hiện. Có thể như vậy, trong bối cảnh trung tâm này, một vài cuộc gọi API có thể được thực hiện và sẽ không thực hiện cuộc gọi lại của chúng tôi;

Inline Hook là điểm mà chúng ta có được hướng dẫn chính về năng lực, và chúng tôi thương mại cho một Jump, Push hoặc một cuộc gọi cho năng lực của chúng tôi.

Được quy định là đã đọc: Hệ thống làm việc của Windows còn hỗ trợ API móc nối. Chúng ta nên biết Windows API hooking chức năng như thế nào?

Thỉnh thoảng Hooking

Phát triển phần mềm - Một kỹ thuật móc Hook - Point 3As tách các giao diện ổn định và tiến hành một không gian đa dạng có thể xuất hiện từ sự khởi tạo của một ứng dụng cho một thiết lập cụ thể xảy ra một sự đảo ngược kiểm soát. Đối tượng nhân dịp xử lý sửa đổi các bước chuẩn bị. Vào cuối ngày, khi một dịp xảy ra, người xử lý đáp ứng các chiến lược móc liên quan đến các đối tượng được đăng ký trước để thực hiện các hoạt động chuẩn bị các dịp cụ thể. Trường hợp của các dịp: tin nhắn cửa sổ, bó hạ cánh từ các cổng tương ứng.

Bên trong IAT Hooking

Phát triển phần mềm - Quy trình 4E Hook trong Windows có một bảng gọi là Import Address Table (IAT), nó lưu trữ các con trỏ tới các khả năng được gửi bởi các DLL của mỗi thủ tục. Bảng này được phổ biến dần dần với địa chỉ của các phần tử của các DLL trong thời gian chạy.

Sử dụng các năng lực đặc biệt, chúng ta có thể làm cho bảng IAT có thể ghi được, có thể dễ dàng thay đổi địa chỉ của nó bằng địa chỉ của một dung lượng tuỳ ý, biểu thị lại bảng như đã được đọc-đơn giản là sau sự thay đổi này. Tại thời điểm thủ tục cố gắng để gọi dung lượng, địa chỉ của nó là nhận được trong bảng IAT, và một con trỏ được trả lại. Khi bảng IAT đã được thay đổi, dung lượng tùy chỉnh được đưa ra thiết lập của công suất đầu tiên và mã truyền vào thủ tục là nhận được.

Netfilter Hook

Phát triển phần mềm - Điều gì là một Hook - điểm 5Netfilter là một hệ thống phụ Linux mảnh đáng chú ý hơn so với 2.4. Nó phụ trách việc tách nhóm, NAT, tường lửa, chuyển hướng, trong số những người khác. Netfilter là đặc biệt mở rộng, và tài liệu của nó được hoàn thành. Nó để lại khả năng sử dụng Hooks trong mã Kernel, làm cho việc sử dụng nó cực kỳ linh hoạt và thường được nhóm nhận. Những Hooks này để lại một vài kết quả có thể hiểu được và có thể điền vào như là các trigger cho những dịp cụ thể.

Kết luận:

Phát triển phần mềm - Cái móc là gì - kết luận Các thủ tục lập trình hooking có hiệu quả và mở ra một phạm vi kết quả có thể hiểu được cho kĩ sư phần mềm, tuy nhiên nó phải được sử dụng với cảnh báo vì chúng bao gồm một sự phức tạp nổi bật hơn trong luồng thủ tục và thay đổi đầu tiên thực hiện các hệ điều hành, ứng dụng hoặc các phân đoạn phần mềm khác, làm cho việc hiểu rõ lý do phần mềm. Ngoài ra, như được chỉ định trước trong bài viết này, việc sử dụng các hệ thống này mà không có mô hình có thể hủy bỏ việc thực hiện các ứng dụng.

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