왜 필요한가?
파일 스트림에서 Buffer로 0x36만큼 읽어오는 것으로 보아 Buffer는 최소 0x36 크기의 구조체
하지만 IDA가 인식한 버퍼의 크기는 2B*5 = 10B. 구조체를 제대로 인식 못 함
=> 구조체 만듦으로써 디컴파일 코드의 가독성 증가, 분석 용이
구조체 만들기
1. Structure → Add Struct Type (Insert 키) 하여 bmp_header 이름의 구조체 추가
2. bmp_header 클릭 후 d 키 눌러 구조체 내 변수(field) 추가
3. convert to array 기능을 이용해 1byte * 0x36 개의 변수를 만든다
4. 디컴파일 화면으로 돌아가 buffer 변수의 타입을 새로 생성한 구조체 타입으로 바꿔줌 (y 이용)
5. structure 화면으로 돌아가, 아는 정보들을 바탕으로 1바이트 변수들을 묶어 renaming 해주면 됨
- d 버튼 눌러서 자료형 db -> dw/dd 등으로 바꿔주고(합치고)
- n 버튼 눌러서 renaming 한다
- 만약 d 눌렀는데 원하는 자료형 안나오면 alt+d 눌러서 추가 (8Byte DWORD 자료형과 같이)
6. 코드가 훨씬 보기 편해졌음
기타 IDA 단축키들
- CTRL+F5: 바이너리 전체 디컴파일, c 파일로 추출 가능
- u 로 undefine 후 d 로 다시 define
- shift+/ : 계산기 뜸
- alt+b : 바이트 단위 검색, 파일 시그니쳐 바이트 등을 검색할 수 있음
- synchronize with 기능 : hexray 디컴파일 코드와 assembly 코드 같이 볼 수 있음
'security > 화이트햇' 카테고리의 다른 글
Mini CTF - XSS, DOM Clobbering (0) | 2024.01.07 |
---|---|
Mini CTF - XSS, DOM Clobbering (0) | 2024.01.07 |
Windbg 커맨드 정리 (2) | 2024.01.06 |
WTF(What The Fuzz) 퍼저를 활용해 타겟 분석하기 (2) | 2024.01.06 |
WinAFL 퍼징을 통해 타겟 분석하기 (1) | 2024.01.06 |