줴림이 공부하줴림
[CodeEngine] Basic RCE L10 본문
Basic L10 문제는 "OEP를 구한 후 '등록성공'으로 가는 분기점의 OPCODE를 구하는" 문제이다. 정답인증을 할 때는 OEP + OPCODE 형식으로 하라고 명시되어 있다.
바로 10.exe를 열어준다.
이름이랑 Serial 번호를 입력하는 창이 뜬다. 이래서 등록성공이 어쩌고 저쩌고인 문제인걸까. HxD로 패킹이 되어 있는지 확인해보자.
이전 문제들처럼 UPX로 패킹되어 있는 것 같지는 않은데, 근데 또 Olly를 보면 뭔가 명확하게 작성되어 있지 않아서 분명 패킹된 것 같은데... 다시 또 인터넷의 도움을 받아 패킹 감지 툴(?)을 찾으러 다녔다. 다른 사람들 보니까 다들 PEiD를 많이 쓰는 것 같아서 나도 설치해줬다. 점점 컴퓨터에 뭔가가 많이 생기기 시작.
10.exe를 PEiD에 올려줬더니 패킹이 되어있다고 뜬다! 맨 밑줄에 ASPack이라고 적혀 있는데, 이 부분이 패킹을 나타내는 것 같다. 패킹이 안 되어 있으면 좀 다르게 뜬다.
어쨌든, ASPack으로 패킹이 되어 있으니 이제 unpack을 시켜줘야된다. 근데 UPX 언팩은 많이 해봤는데 ASPack 패킹은 처음 들어서 또 인터넷의 도움을 받아 언패킹 방법을 찾아봤다. 아니 근데 선호도가 낮은 패킹 기법인데 왜 쓰는겨
아무리 찾아봐도 수동으로 해야하는 거 같아서 눈물을 머금고 언패킹을 해주겠다..
UPX 패킹 / 언패킹 방법
패킹이란...? 패킹은 "실행 압축"이라고 표현할 수 있다. 실행 파일 내부에 있는 코드를 압축하여 평소에는 코드를 압축한 상태로 저장하고 있다가 파일을 실행하면 메모리에서 압축을 해제 시킨
easy7.tistory.com
[코드엔진] Basic RCE L10 풀이
패킹된 파일을 여러 방법으로 언패킹하고 분석하는 리버싱 문제입니다💻
velog.io
OEP가 00445834인 건 PEiD로 알아냈는데, 문제는 Olly에서 이 주소까지 실행을 시켜야 하는데 그걸 지금 못하고 있단 거다... 장장 1시간이 넘는 시간 동안...
결국 그냥 XVolkolak이라는 툴을 사용해서 자동으로 언팩했다. 자동 툴 만세!!!!!!
이제 여기서 등록성공과 관련된 문구를 찾아야 한다. 밑으로 내리니까 아무것도 없어서 그냥 위로 쭉쭉 올렸다. 그랬더니 "Registered... Well done!" 바로 발견. 이 문구는 004454D4의 JNZ SHORT 0044552B를 통해서 출력이 된다. 여기가 분기점인 셈.
그러면 OEP는 00445834이고 분기점의 OPCODE는 7555이므로 답은 004458347555가 된다.
문제... 어떻게 풀긴 했지만 다른 사람들이랑 다르게 언팩시켜주는 툴에 의존해서 풀어서 그런가 뭔가 풀어도 푼 것 같지가 않은 느낌. 찝찝하다.ㅁ
'Study > Reversing' 카테고리의 다른 글
[CodeEngine] Basic RCE L12 (0) | 2025.04.28 |
---|---|
[CodeEngine] Basic RCE L11 (0) | 2025.04.24 |
[CodeEngine] Basic RCE L09 (0) | 2025.04.22 |
[CodeEngine] Basic RCE L08 (0) | 2025.04.21 |
[CodeEngine] Basic RCE L07 (0) | 2025.04.18 |