This MP3 Player is limited to 1 minutes. You have to play more than one minute. There are exist several 1-minute-check-routine. After bypassing every check routine, you will see the perfect flag. Readme.txt를 읽어보면은 음악이 1분간 재생되는데 그 이상 재생되게 하라는 뜻 같다. 먼저 파일에 음악을 넣고 실행보면은 이렇게 알림창이 뜬다. 그다음 디버거를 통해 파일을 열어봤는데 Open을 눌렀을때 거의 무한 루프에 빠지게 돼서 파일 주소를 입력칸에 넣어야 한다. 그리고 저 1분 미리듣기만 가능합니다 부분을 찾아야 하는데 string으로 찾아봤을 ..
Reversing
ReversingKr UnpackMe Find the OEP ex) 00401000 OEP를 찾는 문제이다. OEP란 Original Entry Point로, 패킹된 파일의 실제 프로그램 시작 부분을 의미한다. 디버깅 해보다가 어느 순간 code 영역으로 점프하는 지점이나 파일이 시작되는 부분이 있을 것이다. 그부분을 찾으면 된다. 먼저, ollydbg로 디버깅해보겠다. 디버깅 해보다보면 알겠지만 파일을 더럽게 꼬아놨다. 계속해서 반복문에 걸리는데 반복문 탈출 지점에 ep를 걸어놔서 계속해서 탈출해줬다. 탈출하다보면은 이상한 주소로 가는 명령문이 있는데 이 주소로 가보면은 자세히 보기 위해 Ctrl+A( 코드를 다시 분석) 를 눌러주겠다. 여기가 본 code 같아보인다. 그러므로 OEP 지점은 00401..
Find the Name when the Serial is 5B134977135E7D13 저 시리얼에 통과하는 name을 찾으면 통과하는 문제이다. 대충 둘러보고자 F8로 하나하나씩 봤는데 저 00401000함수에서 거의 모든 기능을 담당하는 듯 했다. 엔터로 들어가보면 뭐 여러 명령어들과 string 이 나온다. 함수안에 bp를 걸고 하나하나씩 알아보았다. 대충 4011B9함수에서 input name 문자를 프린트하고 4011a2함수에서 scanf로 name을 받는듯 했다. 밑에 시리얼 넘버도 똑같이 작동했다. 가장 중요한 부분은 그 중간에 있는 부분들이다. name에 따라 통과되는 시리얼이 다르니 name으로 시리얼을 만들 것이다. 요 부분이 시리얼을 만드는 곳인 거 같은데 이것만 봐서는 잘 몰라서 ..
PE file 구조 중 DOS header 부터 Section header 까지를 PE header, 그 이외의 부분을 PE body라고 부른다 PE header의 구조를 책을 참고하여 아래와 같이 큰 부분들만 정리해 봤다.
리버싱 공부를 하다 test라는 생소한 어셈블리어를 발견해서 정리하고자 한다. 논리 비교 명령어로 AND 연산과 동일하다. 두 operand 중에 하나가 0이면 AND 연산 결과는 0 -> ZF = 1로 세팅된다. 만약 TEST AX,AX이면 AX가 0인지 확인하기 위함이다. 만약 JE 조건 분기가 있으면 zf가 1일시 점프한다.