Q13. 정답은 무엇인가

password를 입력받으며 잘못된 입력값에 대해서 Bad Luck! 문구를 출력해 준다.

OllyDbg로는 13.exe 파일을 열 수 없다고 한다.

Exeinfo PE 툴로 13.exe 정보를 알아보니 C#으로 이루어진 파일이었다.
검색해 보니 C#으로 작성된 파일은 닷넷 프레임워크 환경이 필요하였고, 닷넷 전용 디컴파일러 도구를 사용해서 분석을 진행해야 한다는 사실을 알았다.
OllyDbg는 사용하지 못하므로 C# 디컴파일러를 찾아보다가 dotPeek이라는 디컴파일러를 찾아냈다.
dotPeek 디컴파일러 다운로드
dotPeek: 무료, JetBrains이 만든. NET 디컴파일러 및 어셈블리 브라우저

우측 Assembly Explorer에서 RijndaelSimpleTest에서 익숙한 문구와 코드를 볼 수 있었다.

코드를 분석하는 도중 RijndaelSimple의 암호화 코드에서는 평문 Text를,
복호화 코드에서 받는 인자는 암호화된 Text를 인자 값으로 받아 str에 저장하는 것을 확인하였다.

프로그램의 동작 원리는 Console.ReadLine()과 str이 같을 때 성공 문구를 출력해 주고, 아니면 Bad Luck! 문구를 출력해 준다.
str에 어떠한 문장이 들어있는지를 알아내면 된다. 따라서 이 코드를 패치를 해줄 필요가 있다.
C# 코드를 수정하기 위해서. NET SDK가 필요하였고, 별도로 VSCode에서 C#환경 구성도 해주었다.
Visual Studio Code용. NET SDK 다운로드
Visual Studio Code용 .NET SDK 다운로드 | .NET
Linux, macOS 또는 Windows에서 Visual Studio Code를 사용하여 .NET 앱을 빌드하기 위한 .NET SDK를 다운로드하고 설치합니다.
dotnet.microsoft.com

Please enter the password 위에 str에 대해 문구를 출력해 주기로 했다.

코드 수정을 위해서 위 코드를 Export해서 VScode로 열어보기로 했다.

해당 코드를 저장할 폴더와 프로젝트 명을 지정하고 Export해준다.

if문의 조건에서 str과 같은 문구를 확인하기 위해 [그림 10]과 같은 코드를
"Please enter the password : "코드 위에 추가한다면 Serial값을 확인해 볼 수 있을 것이다.
Console.WriteLine(str);


.NETFramework에서 v3.5버전을 찾을 수 없다고 한다. 이 에러를 해결하는 방법을 찾아보았다.

해당 부분이 체크가 되어있는지 확인하면 편할 것이다.
예전 .NET Framework 버전은 해제되어 있는 경우가 있을 수 있다. 해당 부분이 체크해제 되어있어서 많이 헤맸다...
혹시 모르니 .NET Framework v3.5 수동 설치 링크도 남겨두었다.
.NET Framework v3.5 설치
Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center
Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center
Microsoft .NET Framework 3.5에는 .NET Framework 2.0 및 3.0 위에 추가된 새로운 기능이 들어 있으며 .NET Framework 2.0 서비스 팩 1과 .NET Framework 3.0 서비스 팩 1이 포함되어 있습니다.
www.microsoft.com
혹시나 비슷한 다른 에러가 발생할 때 이 글도 참조한다면 도움이 될 수 있을 것이다.
.NET Framework 대상 지정 오류 문제 해결 - Visual Studio | Microsoft Learn
.NET Framework 대상 지정 오류 문제 해결 - Visual Studio
이 문서에서는 참조 문제로 인해 발생할 수 있는 MSBuild 오류에 대한 해결을 제공합니다.
learn.microsoft.com

이 msbuild 에러로 인해 시간이 꽤 오래 잡아먹었다. 여러 방안을 통해 해결해보고자 했다.
Microsoft C++ Build Tools - Visual Studio
Microsoft C++ Build Tools - Visual Studio
visualstudio.microsoft.com
별도로 Visual Studio Build Tools도 다운로드 해주었다.

다운로드 받은 후 [그림 17]에 있는 2개의 항목 체크 후 다운로드했다.
Windows, Mac, Linux용 Visual Studio 및 VS Code 다운로드
Windows, Mac, Linux용 Visual Studio 및 VS Code 다운로드
Visual Studio IDE 또는 VS Code를 무료로 다운로드하세요. Windows 또는 Mac에서 Visual Studio Professional 또는 Enterprise Edition을 사용해 보세요.
visualstudio.microsoft.com
그래도 에러가 발생하는 것 같아 VScode가 아닌 Visual Studio도 설치해 디버깅을 시도해보기로 했다.

C# 관련 에러는 언어 버전을 통해서 해결해야 한다고 한다.
이 언어 버전을 수정하기 위해서는 2가지 방식을 따라야 했다.

우선 RijndaelSimpleTest파일에서 C#으로 주석처리를 위해 nullable앞에 새로 //을 앞에 붙여주고 저장한다.

에러 문구에서 C# 8.0 버전 이상을 사용해야 한다고 했으므로 PropertyGroup 안에 다음 코드를 추가해주었다.
<LangVersion>8.0</LangVersion>

이제 디버깅을 진행해보면 코드에 str을 출력해주는 문구를 저장한 뒤 디버깅 해보면 Leteminman 이라는 문구를 확인 해 볼 수 있었다.
'Reversing > CodeEngn' 카테고리의 다른 글
| [CodeEngn] RCE basic L15 풀이 (0) | 2025.09.03 |
|---|---|
| [CodeEngn] RCE basic L14 풀이 (0) | 2025.09.03 |
| [CodeEngn] RCE basic L12 풀이 (1) | 2025.09.01 |
| [CodeEngn] RCE basic L11 풀이 (2) | 2025.09.01 |
| [CodeEngn] RCE basic L10 풀이 (3) | 2025.09.01 |