HexWorkshop
HexWorkshop은 BreakPoint Software에서 개발한 헥스 편집기이며, 상용 소프트웨어이다. 최신 업데이트는 2014년 9월 1일이며, 최신 업데이트 버전은 V6.8.0이다. 본 항에서는 V6.8.0버전을 사용하였다.
목차
소개[편집]
HexWorkshop은 BreakPoint Software에서 개발한 헥스 편집기이며, 모든 Windows 운영체제 환경에서 사용 가능하다. HexWorkshop은 홈페이지 (http://www.hexworkshop.com/)에서 다운받아서 30일 동안 무료 사용이 가능하다. 복사, 붙여넣기 등 기본적인 편집과 16진수나 10진수로 오프셋 위치와 길이를 확인하는 기능이 있다. 섹터 편집 기능으로 물리적인 디스크나 파티션을 섹터 단위로 편집/복사 가능하며, 섹터 범위만으로 저장이 가능하다. 데이터 구조 편집 및 뷰어기능과 if나 switch를 이용한 조건부로 구조 확인 가능하며, 통합기능으로 인해 데이터 조작과 파일 포맷 파싱이 자동적으로 가능하다. 비교 기능으로 다른 도구와 비슷하게 바이너리 수준의 바이트 단위 비교와 다른 부분을 색으로 강조하는 기능이 있다. 플러그인 API로 열려있는 문서의 데이터 조작 허용하거나 새 문서를 생성 할 수 있다. HexWorkshop의 실행 화면은 [그림 1]과 같다.
사용법[편집]
파일열기 및 생성[편집]
HexWorkshop을 실행하고 메뉴에서 File – Open File을 선택하여 파일을 열거나 드래그 & 드롭으로 파일을 열 수 있다. 파일뿐만 아니라 드라이브도 Disk메뉴 - Open Drive를 클릭하면 볼 수 있다. 파일 생성은 File – New를 클릭하여 생성하거나 혹은 Ctrl+N을 눌러 파일을 생성 할 수 있다.
저장[편집]
새로 생성한 파일이나 수정한 파일을 저장할 때에는 File탭의 Save를 이용하거나 단축키인 Ctrl+S를 이용하여 저장할 수 있다. 다른 이름으로 파일을 저장하려면 File – Save As를 눌러서 저장한다.
Find 및 Replace[편집]
Edit탭의 Find를 클릭하면 [그림 2]과 같이 Find창이 나타난다. 검색하고자하는 문자열 종류를 Type에서 선택하고 Value에 검색어를 입력하면 동시에 Hex 값이 표시됩니다. Options에서 검색할 문자 집합을 선택하고 확인을 클릭하면 [그림 3]의 Results 창의 Find탭에 검색된 문자 주소 값과 함께 결과가 출력된다. Direction은 위로 탐색할지 아래로 탐색할지 선택하는 것이다.
Edit메뉴의 Replace를 클릭하면 [그림 4]처럼 Replace창이 나타난다. 문자열 Type을 선택하고 바꾸고자하는 값을 Find, Replace에 각각 값을 넣는다. Options에서 검색할 문자 집합을 선택하고 Direction에서 어느 방향으로 바꿀 것인지 선택한 뒤 확인 버튼을 누른다. 그러면 [그림 5] 창이 뜨는데 첫 번째 Find Next는 다음 검색어를 찾는 버튼이고 Find Previous는 이전 검색어를 찾는 버튼, Replace는 바꾸고자 하는 값으로 바뀌고 Replace All은 한 번에 바꾸고자하는 값이 모두 바뀐다.
Bookmark[편집]
Bookmark하고자하는 영역을 선택한 뒤, Tools메뉴의 Bookmarks – Add Bookmark를 클릭하거나 Ctrl+B를 눌러서 북마크를 추가한다. 북마크를 추가하면 [그림 6]과 같이 Results창의 Bookmarks탭에 추가된 북마크에 대한 정보(주소, 길이, 값, 설명)가 나타난다.
추가된 북마크 간에 F7(다음 북마크)과 Shift+F7(이전 북마크)을 이용하여 북마크를 탐색할 수 있다.
도구 기능[편집]
기본적인 편집[편집]
[그림 7]은 파일을 생성하거나 열고 닫을 수 있고 프린트 할 수 있는 기능이 있는 File 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 1]와 같다.
기능 | 설명 |
New | 새로운 파일 생성 |
Open | 파일 열기 |
Close | 파일 닫기 |
Save | 저장하기 |
Save As | 다른 이름으로 저장하기 |
Insert File | 파일 추가하기 |
Save Selection | 선택한 부분 파일로 저장하기 |
Import | 8, 16, 32 bit Intel Hex Code, Motorola S19, S28 또는 S37 레코드 형식을 임포트 기능 |
Export | 8, 16, 32 bit Intel Hex Code, Motorola S19, S28 또는 S37 레코드, HTML, RTF, C source, Java source, Text(ANSI, UTF-8, Unicode), Hex string, Base64 형식으로 출력하는 기능 |
Page Setup | 프린트 출력 시, 출력화면 설정 맨 위부분과 아래 부분의 출력 값에 대한 설정인 파일이름, 파일경로, 현재 페이지, 총 페이지, 시간(24h, AM/PM, Local), Short Date, Long Date, 왼쪽정렬, 중앙 정령, 오른쪽으로 정렬이 있고 폰트나 여백에 대한 설정 기능 |
Print Preview | 프린트 미리보기 |
프린트 출력 | |
Paths | 최근 연 파일의 경로 |
Exit | 종료하기 |
[그림 8]은 수정 시 되돌리기, 자르기, 복사하기, 붙여넣기, 찾기, 바꾸기, 바로가기 기능이 있는 Edit 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 2]과 같다.
기능 | 설명 |
Undo | 이전 상태로 되돌리기 기능 |
Redo | 수정하기 전 상태로 되돌리기 |
Cut | 자르기 |
Copy | 붙여넣기 |
Copy Address | 커서 위치의 주소 값 복사하기 |
Copy As | C source, Java source, Hex string, HTML, RTF, Text, Base 64, UUEncoding형태로 복사하기 |
Paste | 붙여넣기 |
Paste Special | 파일에서 현재 사용 할 수 있는 표준 Windows 클립보드 형식 중 하나를 붙여 넣기 |
Select All | 전체 선택하기 |
Select Block | 블럭 선택하기 |
Insert | 현재 위치에서 값을 넣는 기능 |
Delete | 선택한 영역 삭제하기 |
Find | 찾기 |
Find Next | 아래방향으로 찾기 |
Find Previous | 위 방향으로 찾기 |
Find Selection | 선택한 영역 찾기 |
Replace | 바꾸기 |
Goto | 지정한 위치로 바로가기 |
Goto Forwards | 다음 위치로 이동 |
Goto Backwards | 이전 위치로 이동 |
Goto Selected Address | 선택한 주소로 이동 |
Properties | 파일의 상세정보 (파일 이름, 생성 날짜, 마지막 수정 날짜, 상태, 크기) |
Insert Bytes는 Dec 또는 Hex값을 이용하여 Number of bytes에 몇 바이트를 추가할지 적고 Fill with the following hex byte에 초기 헥스 값을 지정한 다음, OK버튼을 누르면 커서의 위치부터 값이 추가된다.
Goto기능은 Offset위치에 From Where를 기준으로 파일의 시작부터, 현재 위치부터, 파일의 끝에서부터 얼마만큼 이동할지 값(Dec 혹은 Hex 값으로)을 적는다. OK버튼을 누르면 해당 위치로 이동한다. F5를 누르거나 Shift+F5를 누르면 다음 위치나 이전 위치로 이동한다.
디스크 드라이브[편집]
[그림 11]는 디스크를 열거나 섹터 단위로 탐색하거나 이동하는 기능이 있는 Disk 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 3]와 같다.
기능 | 설명 |
Open Drive | 디스크 열기 |
Previous Sector | 이전 섹터로 이동 |
Next Sector | 다음 섹터로 이동 |
First Sector | 첫 번째 섹터로 이동 |
Last Sector | 마지막 섹터로 이동 |
Goto Sector | 지정한 섹터로 이동 |
Goto Sector Again | 이전 섹터로 이동한 만큼 다시 이동 |
Save Sectors | 선택한 영역만큼 섹터 저장 |
Restore Sectors | 이전에 저장한 섹터를 다시 저장 |
Copy Sectors | 선택한 영역을 다른 디스크에 복사 |
[그림 12]는 Sector Range에서 저장할 섹터 영역을 적고 Target File에 저장할 위치와 파일명을 적은 뒤 OK버튼을 눌러 섹터를 저장한다. Results는 선택한 영역의 섹터 수와 크기가 나타난다.
[그림 13]은 Save Sector에서 저장한 섹터를 다시 저장하는 기능이다.
[그림 14]은 Copy From에서 복사할 디스크와 섹터 범위를 선택하고 해당 섹터를 Copy To에서 지정한 디스크에 붙여 넣는다.
Options[편집]
[그림 15]은 화면이나 환경설정이 있는 Options 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 4]과 같다.
기능 | 설명 |
Byte Order | 바이트 순서 설정 (Little Endian e.g. Intel, Big Endian e.g. Motorola) |
File Offset | 오프셋 값 설정(Hex 또는 Decimal) |
Toolbars | 툴바 설정 |
Show Data Inspector Window | 창을 보일지 안보일지 선택하는 메뉴 |
Show Expression Calc Window | |
Show Data Visualizer Window | |
Show Structure Viewer Window | |
Show Results Window | |
Show Status Bar | |
Display Editor Tooltips | 에디터의 툴팁을 보여주는 기능 |
Preferences | 환경 설정 |
Define Keycuts | 단축키 설정 |
HexWorkshop은 8개(Tool Bar, Data Visualizer, Editor Window, Data Inspector, Expression Calc, Structure View, Results Window, Status Bar)의 요소와 창으로 구성되어 있다. [그림 16]는 HexWorkshop의 Layout을 나타낸 것이다.
[그림 17]은 단축키를 설정하는 창이다. 단축키를 지정할 메크로를 지정하고 Create Shortcut버튼을 누른 후 카를 지정한다. Description은 해당 매크로에 대한 설명이다. Assigned shortcuts은 이미 지정된 단축키를 보여준다.
Tools[편집]
[그림 18]은 북마크, 계산기, 파일 비교 기능 등이 있는 Tools 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 5]과 같다.
기능 | 설명 |
Base Converter | hex, decimal, binary 중 8 bit, 16 bit, 32 bit로 변환하는 기능 |
Hex Calculator | , &, ^, <<, >>, ~ 연산 기능 지원 |
Operations | Byte Flip, Invers Bits, Shift Left, Shift Right, Rotate Left, Rotate Right, Block Shift Left, Block Shift Right, Set Ceiling Value, Set Floor Value, AND, OR, XOR, Change Sign, Add, Subtract, Multiply, Divide, Mod, Upper Case, Lower Case, Inverse Case를 지원 |
Bookmarks | 북마크 기능 |
Character Distribution | 문자열 분포도를 보여주는 기능 |
Color Mapping | 매핑되는 영역을 색으로 표시하는 기능 |
Compare | 파일 비교 기능 |
Generate Checksum | 체크썸 기능 |
Find Strings | 문자열 검색 기능 |
Structure Viewer | 파일에 구조를 보여주는 기능 |
Customize | 사용자가 도구를 직접 추가하는 기능 |
Notepad | 윈도우즈의 메모장을 켜는 기능 |
그 외 기능[편집]
그 외의 기능으로는 Plug-Ins메뉴와 Window 창 설정에 관한 메뉴 그리고 Help메뉴가 있다. Plug-Ins메뉴는 C/C++ API를 추가할 수 있고, 로깅을 위해 출력 창으로 통합할 수 있으며 스마트 북마크를 만들거나 조작할 수 있다. [그림 19]은 HexWorkshop의 창을 설정하는 Window 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 6]와 같다.
기능 | 설명 |
New Window | 현재 화면에 있는 내용을 복사하여 새 창을 만드는 기능 |
Cascade | 현재 열린 창들을 연속적인 창으로 보이게 하는 기능 |
Tile Horizontally | 현재 열린 창들을 수평으로 나열하는 기능 |
Tile Vertically | 현재 열린 창들을 수직으로 나열하는 기능 |
Arrange Icons | 아이콘 정렬 기능 |
Lists | 현재 열린 창의 목록 |
[그림 20]는 HexWorkshop의 도움말, 단축키, 웹사이트를 방문할 수 있는 Help 메뉴이다. 각 메뉴에 대한 설명은 다음 [표 7]과 같다.
기능 | 설명 |
Contents | 설명 기능 |
Keycuts | 단축키 보기 기능 |
Reference Material | Data Types에 대한 설명 |
How to Order | 이 도구를 구매하기 위한 방법 |
BreakPoint Software Web Site | 웹 사이트 방문 |
Report Bugs | 버그 리포트 기능 |
Product Suggestions | 제품에 대한 피드백을 주는 기능 |
Check for New Version | 새로운 버전을 체크하는 기능 |
About Hex Workshop | Hex Workshop에 대한 설명 |
제한사항[편집]
디스크를 볼 때 전체를 볼 수 없고, 섹터단위로 출력되어 디스크 전체 분석 시 수사에 불편하다.
수사 활용 방안[편집]
다른 헥스 편집기에 비해 사용하기 편리하여 수사 시 유용하다.