1. Overview


블로그 이전으로 작성시간 변경됨 - 기존 [2016.09.18 19:08] 작성

(혼자 공부하며 참고하기 위해 본문 내용을 그대로 가져왔습니다. 문제시 삭제 조치 하겠습니다.)



핸들(Handle)은 프로세스 정보 중 하나로 커널이 관리하는 오브젝트들에 할당되는 유일한 '값'

프로세스 생성시 필요한 자원에 대한 사용 요청을 할 때 사용 하는 값. 파일, 디렉터리, 포트, 스레드, 세마포어 등이 포함

하나의 프로세스에 여러 개의 핸들을 가지고 있는 것이 일반적


PID(Process ID)는 프로세스를 구분하기 위해 커널에서 제공하는 유니크한 ID


커널 객체는 핸들보다 유니크하게 구분하는 ID가 더 중요

다른 객체들은 ID가 없고, 유저 객체를 컨트롤 하기 위해서는 핸들이 있어야 함


윈도우 핸들은 다른 프로세스로 넘길 수 있음, 핸들을 사용한다는 것은 전역적이라는 것

예를 들어 A,B 프로세스가 있고, A프로세스의 커널객체의 핸들값이 200일 때 ID를 B에게 알려주면 언제든 핸들을 찾을 수 있음

(B프로세스가 사용할 핸들을 만들어 줌, A,B프로세스가 핸들 값이 각각 달리 할당되지만, ID는 같아서 사용 가능)



핸들 - 프로세스 내에서 해당 객체를 액세스할 때 사용하는 한정적인 값이며 이 핸들을 사용하여 객체를 마음대로 조작할 수 있다. (C++의 지역변수)
ID -  시스템 전역적인 값이며 다른 프로세스 ID와 절대 중복되지 않는다. 그래서 프로세스끼리 ID를 전달함으로써 목적이 되는 프로세스 핸들을 다시 오픈할 수 있다. 실행 중인 프로세스의 ID는 작업 관리자에서 쉽게 확인할 수 있다.
(C++에서 Get 함수)

정리 - 프로세스 ID는 프로세스간의 구분을 위한 중복되지 않는 식별값일 뿐이며 ID로부터 직접 프로세스를 제어할 수는 없다. ID로부터 핸들을 발급받아야만 비로소 이 객체를 제어할 수 있다.


hInstance : 프로그램의 인스턴스 핸들


2. Reference


[1] http://sapzapee.tistory.com/469
[2] http://yonghello.tistory.com/entry/%EC%8A%A4%EB%A0%88%EB%93%9C

'Reversing > Theory' 카테고리의 다른 글

Windows XP Folders and Locations & Windows 7 and Vista  (0) 2019.01.06
Process Hollowing  (0) 2019.01.06
About Rich Header  (0) 2019.01.06
Code Injection overview  (0) 2019.01.06
CreateFile의 CreateFileW CreateFileA 차이  (0) 2019.01.06

1. Overview


블로그 이전으로 작성시간 변경됨 - 기존 [2015.07.10 11:38] 작성

(혼자 공부하며 참고하기 위해 본문 내용을 그대로 가져왔습니다. 문제시 삭제 조치 하겠습니다.)

A 버전과 W 버전의 내부적 차이는, 인자가 Unicode 인지 아닌지가 대부분입니다.

 

실제로 코드를 보시면 A 에서는 Unicode 로 변환한 후 W 함수를 호출하는 경우가 많습니다.

 

이는 NT 계열은 내부적으로 Unicode 를 사용하도록 되어 있기 때문입니다. (ntdll.dll 의함수들 및 커널 함수들이...)

 

그러므로, 유니코드로 파일을 쓰시는 것은 Buffer 의 데이터에 대한 내용이지, A 함수를 사용하느냐의 차이가 아닙니다.

 

그리고 A, W 는 Macro 로 설정된 것으로, 현재 프로젝트의 설정이 어떻게 되어있느냐에 따라서결정됩니다.

 

물론 A 를 호출하셔도 내부적으로 W 를 호출하는 경우도 많이 있습니다.





2. Reference


[1] http://www.devpia.com/MAEUL/Contents/Detail.aspxBoardID=50&MAEULNo=20&no=654769&ref=654769


'Reversing > Theory' 카테고리의 다른 글

Windows XP Folders and Locations & Windows 7 and Vista  (0) 2019.01.06
Process Hollowing  (0) 2019.01.06
About Rich Header  (0) 2019.01.06
Code Injection overview  (0) 2019.01.06
프로세스 핸들과 PID의 차이  (0) 2019.01.06

+ Recent posts