본문 바로가기

2018/06

pintool 이번 포스팅에서는 pintool 사용법 및 예제코드에 대한 간단한 분석을 진행한다. pintool 이란, Intel PIN SDK 를 이용해 개발한 라이브러리이다. PIN 이란 프로그램의 플러그인(?) 이라 생각하면 될 것 같다. 혹여나 설치를 하지 못했다면, http://woosunbi.tistory.com/170 을 참고하기 바란다. 기본적인 사용 방법은, # ./pin -t [ .so 파일] -- [분석하고자 하는 파일] # Instrumentation Granularity : Pin 의 Instrumentation Granularity 에 따라 4가지 방식으로 Binary Instrumentation(Just in time) 이 가능하다. 1. Trace Instrumentation (TRACE_.. 더보기
Intel PIN PIN 이란, Intel 에서 제작한 DBI(Dynamic Binary Instrumentation Framework) 이다. DBI 를 이용하면 실행 중인 프로세스에 임의의 코드를 삽입하는 것이 가능하다. 영어로 작성되어있지만, 메뉴얼도 잘 작성이 되어있고 예제코드 또한 꽤나 있기에 쉽게 이해할 수 있다. # Install 다운로드 : https://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads 다양한 환경에서 지원하고 있으며, 쉽게 설치 및 사용 가능하다. 해당 포스팅에서는 Linux 에서의 사용방법을 간단히 소개한다. OS : Ubuntu 16.04 64bit # tar -xvzf pin~.tar.gz # .. 더보기
IDAPython Plugin IDA 는 편리한 분석을 위한 Python Plugin 을 제공해준다. 설치는 http://code.google.com/p/idapython/downloads/list 설치방법은, 파일을 받아 압축을 푼 후 plugins 폴더에 있는 파일을 IDA 설치 폴더에서 - [plugins] 폴더에 복사 python 폴더에 있는 파일을 IDA 설피 폴더에서 - [python] 폴더에 복사 위 작업을 거친 후 IDA 실행하면 정상적으로 로드되었다는 메시지를 확인할 수 있다. IDAPython 을 통해 어떤 것을 할 수 있을지는 examples 폴더 안의 예제 파일들을 참고. 더보기
[DEFCON 2018 CTF] ELF Crumble 처음에 정상적으로 동작하지 않는 바이너리와 파일명이 "fragment~" 인 8개의 파일이 제공된다. 파일명으로 미루어보아 fragment 파일들을 이용해 정상적으로 동작시켜야 하는 것임을 추측할 수 있다. 직접 fragment 파일을 디어셈블하여 순서를 각각 맞춰 동작시킬 수도 있지만, 파이썬의 itertools 모듈을 이용하면 이러한 작업을 훨씬 쉽게 수월하게 할 수 있다. itertools 에서 permutations() 를 이용해 순열을 만들 수 있다. 모든 순열의 바이너리를 생성하여 실행하는 코드를 짜고 결과 값을 출력하도록 하면 플래그가 나온다.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3.. 더보기