분류 전체보기 (36) 썸네일형 리스트형 [CodeEngn] Basic RCE L09 코드엔진 챌린지들을 기초부터 풀고 있다. 그중 이 문제는 안티 디버깅 기법이 들어간 문제여서, 기록해 두려고 한다. StolenByte를 구하라고 한다. 훔쳐진 바이트? 처음엔 이게 뭔지 모르고 일단 디버깅을 시작했다. x32dbg로 디버깅을 하니 unpacking 코드가 있어서 peview로 살펴봤다. 섹션 이름을 보면, UPX로 패킹되어 있단 것을 알 수 있다. F8로 움직이며, OEP를 찾아주었다. 위 사진이 OEP 부분이다. 코드는 복잡하지 않다. CreateFileA 함수를 실행하고서 리턴 값에 따라서 메시지 박스가 띄어진다. well done! 메세지 박스를 띄어야 하는 건가 싶어 CreateFileA 함수를 찾아봤었는데, 풀리지 않았다. StolenByte가 무슨 뜻인지 모르겠어서, 그냥 다.. [Reversing.kr] Direct3D FPS 문제 풀이 제공되는 파일 게임 실행 모습 총을 쏘는 게임이다. 처음에 너무 느려서 안 움직이는 줄 알았는데, 아주 천천히 움직이긴 한다. 조금 나가보면, 이런 고구마 군단이 있는 걸 볼 수 있다. 고구마에 찰싹 붙으면 HP가 떨어진다. 또, 총으로 고구마를 가까이서 계속 쏘면 사라진다. (참고로 게임 실행하면 마우스 꺼내기가 곤란한데, Alt를 누르면 커서가 게임 밖으로 나온다.) 너무 귀여운 게임이다. Flag는 어디있을까? /data 폴더를 살펴보면 딱히 flag로 의심되는 파일은 없다. 디버깅을 통해 살펴보자. 문제 분석 # 참고로 아래 캡처 사진들에서 프로그램은 0xE90000에 Image가 로딩되었다. # ImageBase: 0xE90000 먼저, 프로그램에서 사용되는 문자열 목록을 보자. "Game Ov.. Position 파이썬 코드 해설 이번 글에서는 Position 파이썬 코드를 해설하겠다. Position 문제에 대해서는 다음 글을 참고하면 된다. 2023.07.03 - [리버싱] - Reversing.kr Position 문제 풀이 Reversing.kr Position 문제 풀이 주어지는 파일 Position.exe 실행 모습 ReadMe.txt 내용 ReversingKr KeygenMe Find the Name when the Serial is 76876-77776 This problem has several answers. Password is ***p Input name은 알파벳이 들어가고, Input Serial은 숫자가 들어 hobak-gamja.tistory.com 전체 코드 import copy import re de.. Reversing.kr Position 문제 풀이 주어지는 파일 Position.exe 실행 모습 ReadMe.txt 내용 ReversingKr KeygenMe Find the Name when the Serial is 76876-77776 This problem has several answers. Password is ***p Input name은 알파벳이 들어가고, Input Serial은 숫자가 들어가나 보다. 문제 분석 참조되는 문자열 목록을 보면 아까 실행 창에서 보였던 Input Name이랑 Input Serial이 보인다. 그리고 그 밑에 Correct! 와 Wrong 문자열이 보인다. 실행되는 모습에서 보이다시피 Wrong이라는 문자열이 Default로 프로그램 하단에 적혀있다. 그럼 비교를 통해서 이 Wrong 부분을 Correct!로.. Reversing.kr ImagePrc 문제 풀이 주어지는 파일 실행 모습 하얀색 부분에 낙서가 가능하다. Check 버튼을 누르면 Wrong이라고 뜬다. 분석 먼저, 프로그램에 사용된 스트링들을 보자. "Wrong" 문자열 부근을 봐서 어떤 비교를 거친 건지 살펴보자. 반복문이 있고 반복문에서 jne 명령어를 통해서 "Wrong" 메시지 창을 띄우는 부분으로 분기하는 것을 볼 수 있다. 반복문은 dl과 bl을 비교하면서 같은 지 확인한다. 총, 0x15F90만큼 반복된다. 먼저 첫번째 dl로 들어가는 ecx 부분은 위의 사진과 같다. bl에 들어가는 eax+ecx 부분은 위와 같다. ImagePrc.exe에 그리는 그림과 정답 이미지를 한 비트씩 비교해서 맞는지 틀린 지 확인하는 것 같다. 이런 식으로 그리고 Check 해보니, ecx가 사용자가 입력.. Reversing.kr Replace 문제 풀이 파일 실행 파일 하나만 주어진다. 실행 모습 프로그램의 모습은 심플하다. 입력창이 하나, Check 버튼, 그리고 밑에 Wrong이라고 써져 있다. 입력창에는 숫자만 입력 가능하다. 아무 숫자나 입력하고 Check 버튼을 누르면 이상하게도 프로그램이 그냥 종료되어 버린다. 분석 어떤 것을 해야되는지조차 아직 모르는 상태이다. 저 wrong 부분을 맞았다고 바꾸면 될 거 같은데 일단 x32dbg로 열어보자. 문자열 검색에 Correct! 문자열이 있다. 저 Correct 부분이 실행되도록 하면 될 것 같다. API들도 보면, GetDlgItemInt라는 함수가 입력창에 숫자를 입력한 것을 가져오는 함수인 것 같고, SetDlgItemTextA가 Correct 문자열을 dlg에 설정하는 함수인 것 같다. 코.. Reversing.kr Music Player 문제 풀이 주어지는 파일 ReadMe.txt 내용 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. Music_Player.exe 실행 화면 목표 1분 미리듣기만 가능한 뮤직플레이어의 1분을 체크하는 몇몇 루틴을 회피하여 1분 이상 들을 수 있도록 하기!! 풀이 먼저, 재생할 음악 파일이 필요하다. 유튜브에서 무료로 음원을 받을 수 있었다. 음악을 재생하면 다음 사진과 같이 시간이 나오고 하단에서 바가 움직인다. 1분이.. Reversing.kr Easy Keygen 문제 풀이 파일은 두 가지가 제공된다. ReadMe의 내용은 다음과 같다. ReversingKr KeygenMe Find the Name when the Serial is 5B134977135E7D13 파일을 실행했을 때 두 가지를 물어본다. (이름과 시리얼 번호) x64dbg로 디버깅해 보자. EntryPoint 부근의 코드는 위와 같다. 문자열 참조를 통해 보면 입력할 때 사용하는 문자열들인 "Input Name: "과 "Input Serial" 문자가 보인다. 그 밑에는 비교한 결과에 따라 맞는지 틀렸는지를 출력하는 코드가 있다. 입력한 이름을 가지고 시리얼 번호를 생성하여 입력한 시리얼 번호와 일치하는 지를 확인하는 구조이다. 문제에서 구해야 하는 것은 ReadMe에 적혀있는 시리얼 번호 5B13497713.. 이전 1 2 3 4 5 다음