본문 바로가기

리소스

커널 오브젝트(Kernel Object) 커널 오브젝트 : Windows 운영체제에서 리소스(Resource : 프로세스, 쓰레드, 파일)들을 관리하기 위한 데이터를 저장하는 메모리 블록 Windows에서 관리하는 리소스 특성을 변경하기 위해서는 해당 리소스의 커널 오브젝트를 조작해야한다. 해당 리소스의 정보를 저장하고 있는 커널 오브젝트에 접근하기 위해서는 커널 오브젝트들을 구별하는 커널 오브젝트 핸들(Object Handle)을 얻어야 한다. 커널 오브젝트와 핸들 : 커널 오브젝트는 Windows 운영체제에 종속적이다. 사용자가 리소스 생성을 요청하면 운영체제에서 사용자가 요청한 대로 리소스를 생성하게 되고 이를 관리하기 위해 커널 오브젝트를 생성한다. 즉, 커널 오브젝트는 Windows 운영체제에 의해 생성 및 소멸이 결정된다. 리소스가 .. 더보기
리소스(Resource) 리소스(Resouce) : 코드의 논리와 무관한 데이터 메뉴, 비트맵, 액셀러레이터, 문자열, 아이콘, 커서 등이 속한다. 1. 리소스의 분리 : 프로그램은 코드와 데이터로 구성된다. 데이터는 프로그램의 처리 대상이며 코드는 데이터를 처리하는 수단이다. 도스 프로그래밍과 달리 윈도우즈 프로그래밍에서는 이러한 데이터를 만들고 관리하는 것이 별도의 작업으로 분리되어 있다. 이 데이터들 중에 코드와 무관한 것들을 리소스(Resource)라 하며 별도의 편집기로 만들어져 컴파일되며 링크시에 실행파일에 결합된다. 윈도우즈 프로그래밍에서 리소스와 코드가 분리되어 있어 다음과 같은 장점이 있다. 1. 디자이너와 프로그래머가 분담하여 작업을 하기가 편하다. 2. 리소스를 수정하더라도 리소스만 컴파일 하면 되므로 컴파일.. 더보기
바이너리 분석 바이너리 분석(Binary Analysis) 툴은 어떤 패커를 이용해서 바이너리를 패킹했는지, 어떤 언어로 제작된 프로그램인지를 알아 낼 때 사용된다. PEID : 파일을 열어도 되고 드래그 앤 드롭을 하여 파일을 넣을 수도 있다. 또한 Multi Scan 기능으로 여러개의 파일을 분석할 수 있다. 플러그인에는 unpack을 해주거나 문자열을 추출해주는 것들이 있다. 리소스 해커 : 리소스를 분석해야 하느 경우, 프로그램 내부에서 사용되는 문자열이나 아이콘, 이미지, 폼 구조에 대해서 분석할 때 사용된다. 사용전에 PEID 같은 툴로 패킹이 되어있는지 확인을 먼저 해야한다. 패킹이 되어 있으면 이런 경고가 뜬다. 프로그램에서 사용되는 아이콘이나 bitmap들을 추출해서 저장할 수 있고, 프로그램에서 사용.. 더보기
디컴파일러(Decompliers) 디컴파일러(Decompilers)는 바이너리를 역으로 컴파일해주는 툴이다. 역으로 컴파일을 하여 어셈블리어로 코드가 나타나거나 리소스 파일들이 추출된다. 디컴파일러를 사용하려면 바이너리 분석 툴을 이용하여 바이너리의 컴파일러와 해당 버전을 알아내고, 해당 컴파일러를 지원하는 툴을 찾아서 실행만 하면 된다. 바이너리가 패킹이 되어있으면 언패킹하고 바이너리의 컴파일러가 어떤 것인지를 PEID와 같은 바이너리 분석툴로 확인이 가능한 상태이어야 디 컴파일러를 사용할수 있다. 분석 후 프로그램을 제작한 환경에 맞게 디컴파일러를 사용하면 원래 소스와 비슷한 결과물을 얻을 수 있다. 주요한 디컴파일러들이다. 자바 디컴파일러 : 델파이 디컴파일러 : 플래시 디컴파일러 : 닷넷(.net) 디컴파일러 : 더보기