[CodeEngn] Basic RCE L06 풀이
- 리버싱/CodeEngn
- 2020. 2. 20. 14:31
반응형
CodeEngn Basic RCE E06 풀이
언팩 과정에서 OEP를 찾고, 시리얼도 추가적으로 찾는 문제이다.
파일을 실행시켜 보니, 아래와 같이 시리얼을 입력받도록 되어있다.
CodeEngn Basic RCE L06 분석
수동 언패킹 과정은 L05 문제에서 했던 방법과 같다. upx 패킹은 초반에 아래와 같이 pushad로 레지스터 정보를 스택에 전부 백업해놓는다.
그리고 아래와 같이 명령어 찾기로 popad를 찾아주고 실행시켜보면, 백업해두었던 스택의 레지스터 값들이 전부 복원된 것을 볼 수 있다. 그리고 그 밑에 jmp에 bp를 걸어주고 실행시킨 후 jmp하는 위치로 가보자.
이렇게 OEP를 찾을 수 있다. 수동으로 언팩을 하려면 OEP, IAT, Imports를 맞춰주어야 하는데 다행히도 X32Dbg에는 플러그인 Scylla가 그 기능을 제공한다. IAT Autosearch와 Get Imports로 필요한 정보들을 찾아놓고 Dump를 눌러 파일 덤프를 먼저 떠놓는다. 그리고 Fix Dump를 눌러 찾은 IAT와 Imports 정보를 맞춰준다.
언팩이 정상적으로 진행됐으니 이제 시리얼을 찾아보자. string에서 serial을 찾아보니 하나가 있다.
해당 string 사용 위치로 가보니, 시리얼이 맞았을 때와 아닐때의 분기가 나뉘는 부분을 찾을 수 있다. 그리고 그 위쪽에 strcmp로 문자열 비교를 하는 부분이 있기 때문에 네모박스 친 문자열이 시리얼임을 유추할 수 있다.
You got it ;)
'리버싱 > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE L12 풀이 (0) | 2020.02.22 |
---|---|
[CodeEngn] Basic RCE L07 풀이 (0) | 2020.02.20 |
[CodeEngn] Basic RCE L05 풀이 (UPX 패킹) (0) | 2020.02.19 |
[CodeEngn] Basic RCE L04 풀이 (IsDbuggerPresent) (0) | 2020.02.19 |
[CodeEngn] Basic RCE L03 풀이 (0) | 2020.02.18 |