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;

  • Thực hiện riêng của riêng bạn CMS là một suy 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, đủ để làm những điều 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.
  • Việc hạ xuống đất một phần của việc sử dụng móc dao động thường từ thiết bị đến dụng cụ. Các vị trí thuận lợi chính của móc không phải là để thay đổi mã đầu tiên. Trong tất cả các hướng dẫn sử dụng thực tế tuyệt vời của tất cả các thiết bị mã nguồn mở có cập nhật không thường xuyên thần chú mà rehashes chính nó không thay đổi trung tâm. Mặc dù 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 này, và người chỉ thảo luận về bạn là không, chứ 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 Hook-Point 1Các kỹ thuật ảo được đưa vào trong một tuyến đườ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 (Virtual Method Table - VMT), cho phép tìm hiểu các địa chỉ dung lượng trong thời gian chạy. Mỗi chiến lược ảo duy nhất được kích hoạt khi 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 các tiền thân của nó, và thêm vào những gì nó tuyên bố. Do đó, kỹ thuật ảo sử dụng bộ nhớ nhiều hơn các chiến lược phần tử, mặc dù 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 - Hook-Point là gì 2Các thủ tục API Hooking 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 nắm bắt các khoản phí như vậy, bạn có thể thay đổi các thông số của họ 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ỏ, làm cho chúng chỉ ra gọi lại của chúng tôi, chúng tôi có một móc. Hãy là như nó có thể, nếu điều này EXE / DLL không nhập khẩu của API, chiến lược này sẽ không làm việc;

Viết lại mã đơn giản: Như đã nói trước, trong trường hợp có thể gọi thêm cuộc gọi tới callback của chúng tôi đối với sự khởi đầu của mã API, chúng tôi có thể "móc nó", làm cho khả năng của chúng tôi chạy ở bất cứ nơi nào API được gọi. Có thể là như vậy, 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 phải gọi API đầu tiên, chúng tôi sẽ quay trở lại gọi lại của chúng tôi, và một lũ stack sẽ được tạo ra. Một sắp xếp là sửa các móc để có khả năng gọi API, thử lại nó một khi nó được thực hiện. Khi đó, giữa một 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 - Hook-Point 3ác nghĩa các kỹ thuật móc nối với các giao diện ổn định và tiến hành một không gian khác nhau 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ể sẽ xảy ra sự đảo ngược kiểm soát. Đối tượng xử lý nhân sự sửa đổi các bước chuẩn bị. Vào cuối ngày, khi có dịp xảy ra, người điều khiển đáp ứng các chiến lược huyên náo đối với các đối tượng đã đăng ký trước để thực hiện các hoạt động chuẩn bị nhân sự cụ thể. Trường hợp các dịp: thông báo cửa sổ, bó từ cổng thư tín.

 

Bên trong IAT Hooking

Phát triển phần mềm - Quá trình Hook-Point 4Each trong Windows có một bảng gọi là Bảng Nhập Dữ liệu Địa chỉ (IAT), nơi chứa các con trỏ tới khả năng được gửi đi bởi các DLL của mỗi thủ tục. Bảng này được dân cư tiến bộ với địa chỉ của các yếu tố của DLLs 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 - Hook-Point 5Netfilter là một hệ thống con Linux phần nào đáng chú ý hơn 2.4. Nó là phụ trách bó bóp, NAT, tường lửa, chuyển hướng, trong số những người khác. Netfilter mở rộng đặc biệt, và tài liệu của nó đã hoàn tất. Nó có khả năng sử dụng Hooks trong mã hạt nhân, làm cho việc sử dụng Hooks rất linh hoạt và thường nhận được bởi nhóm. Những Hooks để lại một vài kết quả có thể tưởng tượng và có thể điền vào như là gây nên cho những dịp cụ thể.

 

Kết luận:

Phát triển phần mềm - Hook 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 các kết quả có thể tưởng tượng cho các kỹ sư phần mềm, tuy nhiên nó nên được sử dụng với cảnh báo vì chúng bao gồm một sự lộn xộn nổi bật hơn trong dòng thủ tục và thay đổi thứ nhất tiến hành các hệ điều hành, các ứng dụng hoặc các phân đoạn phần mềm khác, làm cho nó khó hiểu được lý do của phần mềm. Khác với điều đó, như được quy định trước trong bài báo này, việc sử dụng các hệ thống này mà không có mô hình có thể làm suy giảm việc thực hiện các ứng dụng.

Bình luận

 
GTranslate Please upgrade your plan for SSL support!
GTranslate Your license is inactive or expired, please subscribe again!