Wargame/CodeEngn

code engn basic 13번

JeonYoungSin 2018. 2. 4. 14:23

code engn basic 13번 문제다.

파일부터 실행해 봤다.

흠 키 값을 구해야 할 것 같다. 일단 패킹되있는지부터 확인하고 열어보자.

흠..따로 패킹은 안되있는 것 같다. 그냥 열어보니 실행이 안된다..?응?

뭔가 싶어서 Microsoft Visual C# 실행파일 형식에 대해 검색을 좀 해봤다. 찾아보니 실행하려면  .NET

Framework가 필요한 것 같다. 설치를 하려보니 이미 설치가 되어있다고..?뭐지 다시 또 찾아봤다. C#

은 애초에 올리디버거에서 잘 안열린다는 것 같다. 대신 디컴파일러로 유명한  .NET Reflector라는 프로

그램이 있단다. 다운받아보자.

http://www.red-gate.com/products/dotnet-development/reflector/

처음써보는 프로그램이라 프로그램 자체에 대한 자세한 설명은 궁금하시면 따로 검색해주는게 좋을 것 같다.

간단하게 설명해드리면 처음에 파일을 연다음 file탭에 export  Assembly source code를 누르면 다음

과 같이 ConsoleApplication3 라는게 생긴다. 그러면 우클릭해서export source code를 클릭해주면

코드가 생기는데 저기서 메인코드를 찾아주면 된다.



프로그램을 열고 파일을 연다음 다음과 같은 메인 코드를 찾았다.

특정 암호화방식을 거쳐 planText()라는 걸 만들어 내는 것 같다. 저걸 알아내려면 저 코드를 해석해야

되는데 저 함수 동작과정을 알아내긴 너무 귀찮아보인다. 그렇다면 결국 구하고자 하는건 PlatinText()

값이기 때문에 코드만 조작할 수 있다면 Console.WriteLine(plainText);를 변수 계산된 곳 밑에 넣어주

면 값을 볼 수 있을 것 같다. 그렇다면 코드를 수정할 수 있는 방법을 찾아야되는데 이부분은 처음다뤄보

는 프로그램이라 검색을 좀 해봤다. 그냥 추출한 소스코드를 visual studio에서 열면 visual측에서 기본

적으로 C# 파일 호환이 가능해 이를 활용하면 될 것 같다.

Console.WriteLine(plainText); 코드를 main문에서 바로 실행되도록 적절한 위치에 넣어봤다.

다음과 같이 나온다.

실제로 입력해주면 성공하게된다.