블로그

9 March 2017

소프트웨어 개발 : 후크 란 무엇입니까?

/
에 의해 게시 됨

소프트웨어 개발 : 후크 란 무엇입니까?

우리는 몇 가지 유형의 후크에 대해 알아야합니다.

후크 란 무엇입니까?소프트웨어 개발에서, 후킹은 프로그램의 실행을 변경하는 것을 허용하는 아이디어입니다. 가능성 코드는 비교 클래스의 코드를 변경하지 않고 무언가의 첫 번째 행동을 변경하도록합니다. 후크 전략을 덮어 쓰면됩니다.

이러한 종류의 사용법은 응용 프로그램에 새로운 기능을 추가하고 시스템의 대체 절차와 메시지 간의 대응을 장려하는 데 매우 유용합니다. 후크는 시스템이 각 메시지에 대해 수행해야하는 준비로드를 확장하여 시스템 실행을 줄이는 경향이 있습니다. 가능한 한 빨리 필요시 대피해야합니다.

당신이 외부인으로부터 고객 관리 시스템 (CMS)을 이용하는 것을 상상해보십시오. 또 다른 게시물이 배포 될 때마다 최고 경영진에게 이메일로주의를주고,이 행동은 장치의 기본값이 아니길 바랄 수 있습니다. 앞으로 몇 가지 경로가있을 것입니다 :

CMS 소스 코드를 변경하면 다음과 같은 장치를 새로 고칩니다. 변경 사항을 잃어 버리기가 어려워 지거나 모든 기능을 계속 유지할 수 없게됩니다.

  • 자신 만의 특별한 CMS를 만드는 것이 또 다른 끔찍한 생각이며, 모든 것이 고려되고, 새로운 일을하거나 심지어 무엇을 조작 할 충분한 에너지 또는 자산을 가지고 있지 않다.
  • 후크를 사용할 가능성을 탐험합니다. 즉, CMS가 모듈 또는 모듈 외부를 들여다 보며 제공되는 이름의 요소가 새 사안의 배포를 위해 갈망 된 순간에 실행되는지 확인합니다.
  • 후크를 사용하는 지구의 아래 부분은 일반적으로 장치에서 장비로 다양합니다. 후크의 기본 위치는 첫 번째 코드를 변경하는 것이 아닙니다. 간헐적 인 업데이트가있는 모든 오픈 소스 장치의 모든 훌륭한 연습 설명서에서 자체를 재 해석하는 만트라는 센터를 변경하지 않습니다. 상상할 수없는 상상력을 되찾았음에도 불구하고 나중에 유지해야 할 개인은 그 변화에 대해 생각하지 않을 것이고, 거의 논의하지 않는 사람은 당신이 아니라 장치 일 것입니다.

확장 성은 응용 프로그램이 안정된 인터페이스를 보강하도록 허용하는 후크 전략을 사용하는 또 다른 바람직한 관점입니다. 훅 전략은 안정된 인터페이스를 분리하고 특정 설정에 대한 응용 프로그램의 인스턴스화에서 나타날 수있는 다양한 공간을 수행합니다.

혁신적인 기술 솔루션 인도의 델리 NCR 구르 가온에서 소프트웨어 개발 교육을 제공합니다.

후크 디자인 패턴으로

수많은 (모든) 윤곽선 디자인이 후크에 대한 의미를 보여주고 있다는 점이 흥미 롭습니다. 문제 영역의 하위 시스템을 실행하는 방법에 대해 설명합니다. 초안, 공장, 빌더, 지휘, 통역, 옵저버, 프로토 타입, 주 및 전략 : 분리 개발의 규칙에 따라 달라집니다.

통합 및 파티션 개발의 두 가지 예 : 템플릿 방법 및 브리지.

의미 체계는 일반적으로 후크 기술 이름으로 전달됩니다 (예 : Command에서는 전략을 execute ()라고 함).

가상 메소드 테이블 후킹

소프트웨어 개발 - Hook-Point 란 정적 전략에서 구별 할 수없는 경로로 1Virtual 기술을 가져 왔지만 가상 기술을 변경할 수 있기 때문에 컴파일러는 코드에서 호출 할 때 특정 가상 용량의 주소를 알지 못합니다. 따라서 컴파일러는 런타임에 용량 주소를 조회하는 방법을 제공하는 VMT (Virtual Method Table)를 어셈블합니다. 모든 단일 가상 전략은 VMT를 통해 런타임에 활성화됩니다. 질문의 VMT는 선구자들에 대한 모든 가상 전략들과 그것이 선포 한 가상 전략들을 포함한다. 따라서 가상 기술은 더 빠르게 실행된다는 사실에도 불구하고 요소 전략보다 더 많은 메모리를 사용합니다.

VMT는 인터페이스 용량을위한 메모리 주소를 가진 포인터를 포함하고있는 테이블이므로 첫 번째 메모리 주소를 정당한 후크 작업의 주소로 대체해야합니다. 이 행을 따라 호출 된 기술을 덮어 쓰며 탐내는 능력에 대한 새로운 탐욕스러운 행동이 실행됩니다.

후킹 API

소프트웨어 개발 - Hook-Point 란 무엇인가 2The Hooking API 프로 시저는 진정으로 작업 시스템의 요소를 재발 명하도록 허용합니다. 이러한 요금을 징수 할 수있는 기능을 사용하면 초기에 수행 될 활동을 변경하여 매개 변수를 변경할 수 있습니다.

예를 들어, 특정 기록을 취소하고, 응용 프로그램을 실행하지 않게하고, 서클에 아카이브를 저장하는 클라이언트 확인을 요구하는 등의 방법이 있습니다.

실제로 가장 큰 결정은 안티 바이러스 및 스파이웨어 방지와 같은 보안 영역에 있습니다. Hooking API가 주요 경로가 될 수있는 일반적인 개발 상황이있을 수 있습니다.

프로그래밍 인터페이스 우리의 특정 상황에서, 후킹은 OS 또는 DLL로부터 API를 가져 와서 다른 곳으로, 더 정확하게는 다른 용량으로 일반적인 실행을 변경 함을 의미합니다. 근본적으로 두 가지 접근 방식이 있습니다.

EAT 및 IAT : 모든 EXE / DLL에는 가져 오기 및 요금 테이블 API가 포함되어 있습니다. 이 테이블에는 API 진입 점을 표시하는 포인터가 있습니다. 이 포인터를 변경하여 콜백을 나타내도록 설정하면 후크가 생깁니다. 이 EXE / DLL이 API를 가져 오지 않으면이 전략이 작동하지 않을 수도 있습니다.

간단한 코드 덮어 쓰기 : 앞서 말했듯이, API 코드의 시작으로 우리 콜백에 대한 호출을 추가 할 수있는 경우, API를 호출 한 모든 지점에서 용량을 실행하게 만들 수 있습니다. 코드가 처리 된 후 첫 번째 API를 호출해야하고 콜백으로 폴백해야하고 스택 플러드가 생성되는 문제가 있습니다. 한 가지 방법은 API 호출을위한 용량을 갖도록 후크를 수정하고 일단 실행되면 다시 시도합니다. 이 중심지에서 API 호출을 몇 가지 만들 수 있고 콜백을 수행하지 않을 수도 있습니다.

인라인 훅 (Inline Hook)은 용량에 대한 주요 가이드 라인을 얻는 시점이며, 점프, 푸시 (Push) 또는 전화로 교환 할 수 있습니다.

사전 정의 된 읽기 : Windows 작업 시스템은 API 후킹을 추가적으로 지원합니다. Windows API 후킹 기능을 알아야합니까?

기회 후킹

소프트웨어 개발 - Hook-Point 란 무엇인가 3As의 후크 기술은 안정된 인터페이스를 분리하고 다양한 공간을 구현함으로써 특정 인스턴스에 대한 응용 프로그램의 인스턴스 생성이 가능 해지고 제어가 취소됩니다. 객체 상황 핸들러는 준비 단계를 수정합니다. 하루가 끝나면, 사건이 발생할 때, 처리기는 특별한 경우 준비 활동을 수행하는 사전 등록 된 대상에 대한 환상적인 후크 전략에 응답합니다. 경우의 경우 : 메시지 메시지, 번들이 통신 포트에서 착신합니다.

IAT 후킹

소프트웨어 개발 - Hook-Point 란 Windows의 4Each 프로세스에는 IAT (Import Address Table)라는 테이블이 있습니다. IAT는 각 프로 시저의 DLL에서 전송 된 용량에 대한 포인터를 저장합니다. 이 테이블은 런타임에 DLL 요소의 주소로 점진적으로 채워집니다.

특정 용량을 사용하여 IAT 테이블을 쓰기 가능하게 만들 수 있습니다. 사용자 지정 용량의 주소로 주소를 변경하고이 변경 후에 테이블을 읽기 전용으로 다시 표시 할 수 있습니다. 프로 시저가 용량을 호출하려고 할 때 IAT 테이블에 주소가 저장되고 포인터가 반환됩니다. IAT 테이블이 변경되면 맞춤 용량이 첫 번째 용량으로 설정되고 프로 시저에 주입 된 코드가 생성됩니다.

Netfilter Hook

소프트웨어 개발 - Hook-Point 란 무엇인가 5Netfilter는 2.4보다 더 주목할만한 Linux 피스 서브 시스템입니다. 번들 분리, NAT, 방화벽, 재 지정 등을 담당합니다. 예외적으로 Netfilter는 확장 가능하며 문서가 완성됩니다. 커널 코드에서 Hooks를 사용할 확률이 매우 높기 때문에 활용도가 매우 유연하고 일반적으로 그룹에서 수신합니다. 이 후크는 몇 가지 상상 가능한 결과를 남기며 특정 상황에 대한 트리거로 채울 수 있습니다.

결론 :

소프트웨어 개발 - 훅 (hook)은 무엇인가 결론 - 후킹 프로그래밍 절차는 효과적이며 소프트웨어 엔지니어가 생각할 수있는 결과의 범위를 넓히지 만, 절차의 흐름에 더 눈에 띄는 복잡성을 포함하고 첫 번째 변경 운영 체제, 응용 프로그램 또는 기타 소프트웨어 세그먼트의 행위로 인해 소프트웨어의 이론적 근거를 이해하기 어렵습니다. 이 기사의 앞 부분에서 설명했듯이 패러다임없이 이러한 시스템을 활용하면 응용 프로그램 실행이 저하 될 수 있습니다.

&bsp

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