Reversing/CodeEngn 34

[CodeEngn] RCE basic L14 풀이

Q14. Name이 CodeEngn 일 때 Serial을 구하시오 (이 문제는 정답이 여러 개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야 함, bruteforce 필요) Ex) 11111입력받는 칸이 2개가 있는 프로그램이다. 위 칸은 Name, 아래칸은 Serial 값을 받을 것이라고 예측되는 프로그램이다.Name은 문제에서 CodeEngn이 주어졌고, Serial 값은 임의의 값 12345를 입력했을 때 다음과 같은 창이 출력되었다.OllyDbg로 실행해보려 했으나 압축된 코드라고 알려주었다.Exeinfo PE 툴 처럼 PE 구조에 대해 분석해 주는 PEiD프로그램을 통해 14.exe을 분석해 보니 UPX 패킹된 프로그램이었다.upx 언패킹 툴로 14.exe를 언패킹 진행했다.성공 ..

Reversing/CodeEngn 2025.09.03

[CodeEngn] RCE basic L13 풀이

Q13. 정답은 무엇인가password를 입력받으며 잘못된 입력값에 대해서 Bad Luck! 문구를 출력해 준다.OllyDbg로는 13.exe 파일을 열 수 없다고 한다.Exeinfo PE 툴로 13.exe 정보를 알아보니 C#으로 이루어진 파일이었다.검색해 보니 C#으로 작성된 파일은 닷넷 프레임워크 환경이 필요하였고, 닷넷 전용 디컴파일러 도구를 사용해서 분석을 진행해야 한다는 사실을 알았다.OllyDbg는 사용하지 못하므로 C# 디컴파일러를 찾아보다가 dotPeek이라는 디컴파일러를 찾아냈다.dotPeek 디컴파일러 다운로드 dotPeek: 무료, JetBrains이 만든. NET 디컴파일러 및 어셈블리 브라우저우측 Assembly Explorer에서 RijndaelSimpleTest에서 익숙한 문..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L12 풀이

Q12. Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다. 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오. Ex) 7777777????????Key 값을 인증하는 프로그램이다.OllyDbg로 12.exe를 열어 분석하다 보면 성공 문구를 확인해 볼 수 있었다.CMP명령어를 통해 EAX와 7A2896BF비교를 진행하고, JNZ 분기점을 만나 성공분기점으로 갈 수 있다.40107D에서 BP(F2 단축키)를 걸고 디버깅을 통해 동적 분석을 진행했다.Key값에 123을 넣고 디버깅 해서 EAX를 확인해보니 7B라는 ..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L11 풀이

Q11. OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000key 파일을 검사하는 프로그램인 것 같다.문제에서 OEP를 찾으라고 했으므로 이번 프로그램 역시 패킹되어 있다는 것을 유추해볼 수 있다.Exeinfo PE를 통해 11.exe의 파일구조를 확인해본 결과 UPX 패킹으로 된 프로그램임을 확인했다.upx -d 11.exeUPX 언패킹 툴을 통해 11.exe를 언패킹을 진행해주었다.OllyDbg로 UPX 언패킹한 11.exe를 열어보면 EP를 401000주소로 하는 것을 확인할 수 있다.패킹한 위치의 EP는 OEP와 같으므..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L10 풀이

Q10. OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 Name과 Serial 값을 받는 프로그램이다.OllyDbg로 열어보면 10.exe의 EP는 코드 바깥에 있으므로, BP를 걸때 이를 명심하라는 경고창이 나온다.이후엔 실행 압축 코드라는 정보도 얻을 수 있었다.Aspack이라는 패킹으로 되어있는 프로그램이다.Aspack을 언패킹 하는 방법에 대해 구글링을 해보다가 여러 정보를 얻을 수 있었다.1. OEP를 구해야 하는 문제라면 패킹이 되어있을 것이다.- 패킹된 파일의 실제 프로그램 시작 부분을 OEP라고 하기 때문이다.2. Aspack 언패킹 방법 | 출처 : [ASPACK Unpacking]MUP [ASP..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L09 풀이

Q9. StolenByte를 구하시오 Ex) 75156A006835204009.exe를 바로 실행해보았더니 다음과 같은 에러 메세지를 확인해 볼 수 있었다.가끔 Windows 업데이트를 실행하면 실시간 보호가 다시 켜지는데, 이를 꺼두면 이 에러는 해결할 수 있다.09.exe 실행하면 keyfile을 체크한다고 한다. 확인 버튼을 누르면 해당 파일을 찾지 못했다는 메세지가 출력된다.문제를 풀기에 앞서 Stolen Byte의 의미를 이해하기 위해서 구글링을 진행했다.Stolen Byte는 패커가 위치를 이동시킨 코드로, POPAD와 OEP 사이의 연속되는 PUSH를 의미한다.그렇다면 Stolen Byte를 구해야 하는 이 문제도 무언가 패킹되었다는 힌트를 유추해볼 수 있을 것이다.09.exe는 UPX로 패..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L08 풀이

Q8. OEP를 구하시오 Ex) 00400000평범한 계산기 프로그램으로 보였다. 간단한 연산도 잘 수행해냈다.OllyDbg로 열어보려고 하니 Compressed code라고 알림창이 하나 출력되었다.실행 압축된 코드라고 하니 어떤 실행 압축 프로그램인지 알아내기 위해서 ExeinfoPE 프로그램을 이용하였다.해당 프로그램을 이용해서 08.exe를 분석해보니 UPX 실행 압축된 프로그램이라고 한다.upx -d 08.exe따라서 UPX 언패킹 툴을 이용하여 언패킹을 진행한다.이제 OEP를 알아내기 위해서 언패킹한 08.exe를 다시 ollydbg로 로드해보았다.디버깅 후 프로그램을 종료하면 EP로 돌아오게 되는데, 언패킹을 진행한 프로그램의 EP는 OEP이므로 정답을 찾아낼 수 있다. 따라서 OEP는 01..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L07 풀이

Q7. 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 '어떤것'으로 변경되는가문제에서는 C드라이브의 이름이 CodeEngn일 경우라고 했으므로, VMware를 설치해서 C드라이브의 이름을 CodeEngn으로 변경해주는 작업을 시도했다.VMware에 07.exe, ollyDbg를 설치한 후 로드해서 F8로 내려가다 보면 4010ED에서 Serial값 입력받는 메세지 다음 4010F2주소의 String1 = "L2C-5781EqfgEngn4562-ABEX" 라는 Serial 값으로 보이는 값 하나를 찾아볼 수 있었다.해당 문구는 Serial 값이 맞다. 하지만 어떤식으로 C드라이브의 이름이 CodeEngn일 때, Serial 값이 생성되는 방식인지 궁금했다.다시 Ho..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L06 풀이

Q6. Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD06.exe를 실행해보면 다음과 같이 serial 값을 입력받는 칸과 체크하는 버튼이 전부인 프로그램이다.아무 값이나 입력하고 체크 해보면 다음과 같은 에러가 발생했다.IDA 프로그램을 통해 06.exe를 로드해서 분석해보면 UPX0이라는 UPX패킹과 관련된 정보를 얻을 수 있다.따라서 UPX 실행 압축 프로그램임을 유추해볼 수 있다.upx -d 06.exeUPX 언패킹 툴을 통해 06.exe를 언패킹을 진행한다.UPX 언패킹을 진행한 06.exe를 열어보면 AD46DFS547값이 보이고, Good Job! 문구도 확인해 볼 수 있었다.이 프로그램의 Serial 값은 'AD46DFS..

Reversing/CodeEngn 2025.09.01

[CodeEngn] RCE basic L05 풀이

Q5. 이 프로그램의 등록키는 무엇인가이번 프로그램은 올바른 등록키와 serial값을 입력해야 하는 것 같다.분석하기 앞서서 처음보는 명령어들이 꽤 있었다. 우선 처음보는 명령어에 대해서 검색을 진행하였고, 그래도 찾아볼 수 없는 내용에 대해서는 gpt의 도움을 받아 정리를 해보았다.XCHG첫번째 오퍼랜드와 두번째 오버랜드 교환FISTPFloating point를 integer로 변환하는 방식 (x86 instruction)PREFIXCPU 명령어라기보다는 디스어셈블러에서 보여주는 토큰SALCCF(Carry Flag)의 값에 따라 AL 레지스터에 0x00 또는 0xFF를 넣는 명령어LOOPDLOOP with DWORD counter로, ECX 레지스터를 1 줄이고(ECX ← ECX - 1),→ ECX ≠..

Reversing/CodeEngn 2025.08.31