본문 바로가기

전체 글

(15)
정적분석과 동적분석 정적분석정적분석은 프로그램을 실행시키지 않고 분석하는 방법이다. 정적분석의 장점1. 프로그램의 전체구조를 파악하기 쉽다.정적분석 도구들은 프로그램의 여러 정보를 살펴볼 수 있도록 도움을 주는데, 프로그램이 어떤 함수로 구성됐고 함수들은 서로 어떤 호출 관계를 갖는지, 어떤 API를 사용하는지 등을 종합적으로 살펴볼 수 있다. 분석자는 이러한 정보들을 바탕으로 프로그램을 큰 관점에서 이해할 수 있다.2. 분석 환경의 제약에서도 비교적 자유롭다.안드로이드의 apk 파일은 별도의 소프트웨어를 사용하지 않는 한 윈도우 시스템에서 실행할 수 없지만 정적분석은 프로그램을 실행하지 않아도 되므로 분석을 지원하는 적절한 도구만 갖춘다면 시도할 수 있다.3. 악성 프로그램의 위협으로부터 안전하다.바이러스를 동적 분석할 ..
Windows Memory Layout 메모리 레이아웃메모리 레이아웃이란 프로세스 가상 메모리의 구성을 말한다. 프로그램을 실행하면 운영체제는 프로세스에게 사용 가능한 메모리 공간을 할당해 주는데 이 공간을 가상 메모리라고 한다. 운영체제는 프로그램의 정보를 참조하여 프로그램에 저장된 데이터가 적절한 영역에 저장되게 한다. 프로세스가 사용할 가상 메모리를 용도별로 구획하고, 프로세스가 사용하는 데이터를 적절한 구획에 저장한다. 유사한 데이터를 모아놓기 때문에 운영체제는 각 구획에 적절한 권한을 부여할 수 있고, 개발자는 프로세스의 메모리를 더 직관적으로 이해할 수 있다. 소프트웨어 리버스 엔지니어링의 핵심은 바이너리를 분석하여 바이너리의 동작을 이해하는 것이다. 바이너리의 동작은 메모리와 굉장히 밀접한 관련이 있으므로 바이너리의 동작을 자세히..
리버싱 핵심원리 15장 15장 UPX 실행 압축된 notepad 디버깅 실행 압축 파일들의 디버깅은 많은 루프의 연속이며 어떠한 루프를 하는지 UPX로 패킹된 notepad로 알아볼 예정 (*ESI와 EDI가 동시에 세팅되면 ESI가 가르키는 버퍼에서 EDI가 가르키는 버퍼로 메모리 복사가 일어날 것이라고 예측할 수 있다. 압축 해제의 경우에는 ESI로부터 데이터를 읽어서 압축을 해제한 후 EDI에 저장하는 것.) 루프1 EDX에서 한 바이트를 읽어 EDI에 쓰는 것. EDX 레지스터가 가리키는 01001000 주소는 첫 번째 섹션(UPX0)의 시작 주소이며, 메모리에서만 존재하는 섹션이다. 루프2 본격적인 디코딩 루프(압축해제 루프)이다. ESI가 가리키는 두 번째 섹션(UPX1)의 주소에서 차례대로 값을 읽어서 적절한 연산..