Reversing

[코드엔진] basic 13

BIGFROG 2020. 2. 18. 16:22

XP 가상머신에서 그냥 실행시켜 보았다.

- 실행 불가능

PEiD로 확인해보니 visual C# / basic .NET 형식이다.

그냥 실행시켰을 때의 오류코드가 0xc0000135인데,

.net 형식으로 만들어진 프로그램이기 때문에 .NET framework가 없는 경우에 이런 오류가 뜬다.

마이크로소프트 .net freamework 2.0을 설치해주면 제대로 동작한다.

Please enter the password:

라는 문구와 함께 비밀번호를 입력받는다.

문제에서 말한 정답은 이 비밀번호를 뜻할 것이다.

 

동적분석을 진행하기 위해 올리디버거에 올려보았으나..

실행이 되지 않는다.

찾아보니까, C#으로 작성된 경우에는 올리디버거로 분석이 불가능하다고 함.

 

대신 닷넷용 디컴파일러 툴이 필요한데,

다른 블로그를 참고하니까 대부분 .net reflector를 이용해서 풀었더라..

근데 버전 문제인지 리플렉터를 이용하는게 잘 안돼서,

dnspy라는 툴을 사용함.

디버깅도 되고 훨씬 강력한듯.

 

아무튼 소스를 복원해보면 아래와 같다.

클래스에 Encrypt, Decrypt가 존재함.

cipherText를 Decrypt해서 plainText를 얻어내는 방식인데,

소스코드를 조금 수정해서 plainText를 바로 출력하는게 편하다.

 

평문인 text 변수를 Console.WriteLine(text)로 출력하도록 한다.

디버깅을 통해 답을 알 수도 있겠지만,

Export to project를 통해 얻은 파일을 비주얼 스튜디오로 열어서 다시 컴파일했다.

실행시키면 plain text가 출력되었음을 알 수 있다.