컴파일러 컴파일: 소스코드를 컴퓨터가 이해할 수 있는 기계어 형식으로 번역하는 것 컴파일러: 컴파일을 해주는 소프트웨어 Ex) GCC, Clang, MSVC 등 인터프리터 python, Javascript 등은 컴파일을 필요로 하지 않는다. 인터프리팅: 사용자가 작
리버스 엔지니어링에서는 소프트웨어를 분석하기 위해 사용하는 분석 방법들을 크게 정적 분석(Static Analysis)과 동적 분석(Dynamic Analysis)으로 구분한다. 정적 분석 프로그램을 실행시키지 않고 분석하는 방법. 장점 프로그램의 전체 구조
폰 노이만 구조하버드 구조수정된 하버드 구조x86, x86-64ARMMIPSAVR캐시 설계파이프라이닝슈퍼 스칼라분기 예측비순차적 명령어 처리직접 메모리 접근컴퓨터는 연산과 제어를 위해 CPU(중앙처리장치)를, 저장을 위해 memory(기억장치)를 사용. 장치간의 데이터
윈도우의 PE 파일은 PE 헤더와 1개 이상의 섹션으로 구성. 섹션: 유사한 용도로 사용되는 데이터가 모여있는 영역섹션에 대한 정보는 PE 헤더에 적혀있다. PE 헤더에 저장되는 섹션과 관련된 데이터 중 중요한 것들은섹션의 이름섹션의 크기섹션이 로드될 주소의 오프셋섹션
먼저 IDA 창을 열어줍니다. 이런 창이 나오면 분석하려는 파일을 창으로 드래그해줍니다. 파일이 정상적으로 열리면 위와 같은 창이 나타나는데 아무것도 변경하지 말고 OK를 클릭합니다. 먼저, main 함수를 찾아보려 합니다. 문자열 검색 프로그래머는 디버깅
실행파일을 실행해보니 함수들을 살펴보았다. MessageBoxA를 두 개 발견했고 MessageBoxA가 호출된 곳으로 이동해보니 성공한 경우와 실패한 경우에 대한 코드가 있었다. 패스워드가 틀렸을 경우 출력되는 MessageBox로 JMP하도록 하는 분기
문제 파일을 다운받아보니 3개의 파일이 있었다. -> dll 파일, Music_Player.exe, readme.txt 우선 readme 텍스트 파일을 열어보니 MP3 플레이어가 1분으로 제한되어 있고 1분 이상을 재생할 수 있도록 check routine을 우회