Codeengn Basic 01~04번 문제 풀이
네이버 사다리게임 사이트를 활용하여 각 문제 담당자를 정한 후 풀이 발표 진행
1번문항 : 이지혜
여기서 EAX는 종료되는 상횡에서 return 값을 저장하는 용도이다.
2번문항 : 유민서
CodeEngn - Basic RCE L02 - 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇 인지 분석하시오
02.exe 파일을 실행해보면 앱을 실행할 수 없다고 나오고, 올리디버거로 열어도 알 수 없다는 오류가 뜬다. PE구조를 분석하기 위해 PEView를 다운받아서 실행시켜보았더니 실행파일 구조 자체에 결함이 있어서 실행할 수 없다고 판단할 수 있었다. 오른쪽 화면을 내리다 보면 you did it! 뒤에 알 수 없는 문자열 JK3FJZh가 나오고, 이것이 패스워드라는 것을 알 수 있다.
3번문항 : 이현수
CodeEngn - Basic RCE L03 - 비주얼베이직에서 스트링 비교함수 이름은?
맨 처음에 이렇게 오류가 떠서 ‘MSVBVM50.DLL’ 관련 실행 파일을 다운로드 받아서 해결했다.
오류해결 - https://m.blog.daum.net/2vaupc/1555878
코드 값을 입력해 해결하는 문제인 것 같다. 임의로 1234를 입력해보았더니 ERROR 메시지가 떴다. x32 디버거를 열어 파일을 살펴본다.
디버거를 열어 먼저 함수 호출 목록을 살펴본다.
아마 입력한 코드와 답을 비교하는 문자열 비교 함수로 추측할 수 있는 ‘StrCmp’가 들어간 함수를 찾을 수 있었다.
해당 코드가 있는 주소로 이동해본다.
‘vbaStrCmp’ 함수 호출 전에 스택에 어떠한 값을 넣는 것을 확인할 수 있다.
스택에 값을 넣고 해당 값을 함수를 통해 입력 값과 비교하는 것 같다.
함수 호출 전의 주소에서 문제의 답인 것 같은 “2G83G35Hs2”라는 문자열을 PUSH 하는 것을 볼 수 있다.
영어는 아닌 것 같은 알 수 없는 언어가 나와서 번역기를 돌려봤다.
the password is correct! 라는 것을 보니 답이 맞는 것 같다.
발견한 문자열 함수도 정답인지 코드엔진에서 확인해보았다.
4번문항 : 장지원
이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가?
옆 창을 참고하여 IsDebuggerPresent 함수가 탐지기능이 있음을 유추할 수 있다.
자세히 알기 위해 레지스터 esi와 esp를 살펴보면, 비교함수인 cmp가 각 레지스터 값을 비교하여 ZF값을 내놓는데, 이때 1이 되면 디버깅 당함이라는 문구가 뜨는 것을 확인할 수 있다.
정답은 IsDebuggerPresent 함수
이후 다음 주차 문제 분량과 공부해 올 책 분량을 정했으며, 책 부분 발표자를 선정하였다.
'2. Reversing (리버싱) > 1) Write UP' 카테고리의 다른 글
[2021.03.27] CodeEngn Basic L08~L10 & 교재 3장 (0) | 2021.03.27 |
---|---|
[2021.03.20] CodeEngn Basic L05-L07 & 교재 Chapter2 발표 (0) | 2021.03.20 |
[2020.11.28] Reversing.kr Challenge Music Player 라이트업 (0) | 2020.11.28 |
[2020.11.21]CodeEngn Challenges Basic RCE L19, L20 라이트업 (0) | 2020.11.21 |
[2020.11.14]CodeEngn Challenges Basic RCE L17, L18 라이트업 (0) | 2020.11.14 |