바이너리 분석을 위한 CFG(Control Flow Graph) 복원 과정 중 C++의 try-catch와 같은 예외 처리 코드는 제어 흐름이 명시적으로 나타나지 않기 때문에 코드 분석만으로 복원할 수 없습니다. 따라서 정확한 CFG를 복원하기 위해서는 예외 처리의 동작 방식을 이해해야 합니다. 본 블로그에서는 예외 처리 과정을 이해하는데 필요한 다양한 메타 데이터의 의미와 분석 과정 등을 설명하여 예외 처리의 전반적인 과정을 알아보겠습니다.
[태그:] 바이너리
KAIST 정보보호대학원 (Softsec Lab 최재승)에서 개발한 NTFUZZ라는 퍼징 도구를 이용하여, 사용자들이 블루스크린을 덜 접할 수 있도록 도와줍니다. NTFUZZ를 설치부터 사용까지 설명하여, 일반 사용자들도 쉽게 따라할 수 있습니다.
KAIST 사이버보안연구센터가 개발중인 B2R2는 함수형 언어인 F#으로 작성된 바이너리 분석엔진입니다. B2R2의 역어셈블 성능을 다른 언어로 짜여진 역어셈블 라이브러리와 비교 분석하고 F#으로 만들어진 코드가 얼마나 효율적일 수 있는지 설명합니다.
많은 분이 B2R2 프로젝트를 보면서 왜 F#인가 궁금해합니다. 어찌 보면, F#이라는 언어가 프로젝트의 대중화에 걸림돌이 되는 것 같기도 합니다. 왜 잘 알려지지도 않은 언어인 데다가 사용하기도 불편해 보이는 함수형 언어를 써야만 했던 것일까요? 앞으로 두세 차례 포스팅을 통해 왜 우리가 F#을 썼는지, 우리의 비전은 무엇인지에 대해 이야기해보려 합니다. B2R2는 닷넷(.NET) 라이브러리 정확히 말하면 F#은 B2R2의
소프트웨어 보안 논문을 읽다 보면, 역어셈블(Disassemble)은 비결정(undecidable)문제라는 이야기를 자주 접하게 됩니다. 하지만 그 의미를 정확히 아는 사람은 드뭅니다. 국내외를 막론하고 역어셈블의 의미를 깊이 있게 고찰하는 글을 찾아보기는 매우 어렵기 때문입니다. 이번 시간에는 많은 사람들이 궁금해하는 바이너리 역어셈블의 의미와 원리를 한 번 파헤쳐보겠습니다. 역어셈블의 뜻은 그 대상에 따라 달라진다. 역어셈블(Disassemble)은 말 그대로 어셈블(Assemble)을 거꾸로 하는 것을
소스 코드가 없는 경우엔, 바이너리 코드를 본다? 보안에 관심 있는 사람은 누구나 바이너리(binary)에 대해서 들어보았을 것입니다. 해킹 경연대회(CTF)에서는 항상 바이너리 기반의 문제가 출제되죠. 소스 코드를 활용한 해킹대회 문제는 웹 해킹 쪽을 제외하고서는 매우 드물다 할 것입니다. 그뿐 아니라 메모리 취약점을 공격한다고 하면 누구나 다 바이너리를 기반으로 공격 코드(exploit)를 만듭니다. 그런데 왜 이렇게 보안에서는 바이너리가 중시되는