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문에서 바로 실행되도록 적절한 위치에 넣어봤다.

다음과 같이 나온다.

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


'Wargame > CodeEngn' 카테고리의 다른 글

code engn basic 15번  (0) 2018.02.04
code engn basic 14번  (0) 2018.02.04
code engn basic 12번  (0) 2018.02.04
code engn basic 11번  (0) 2018.01.28
code engn basic 10번  (0) 2018.01.28
블로그 이미지

JeonYoungSin

메모 기록용 공간

,