HOME
home
CV News
home

dnspy reversing

속성
REVERSE ENGINEERING
날짜
C/S Reversing은 필요한 기술이지만 마땅히 테스트 할 대상이 없어 reversing.kr에 있는 CSHOP.exe를 대상으로 정리하였다.
가장먼저 수행해야될 것은 다운받은 파일을 실행하여 어떤 동작을 수행하는지 확인하는 것이다. 프로그램을 실행하면 빈 페이지만 가득한 채 더이상 진행되지 않는다.
PEiD를 이용하여 대상 파일이 어떤 언어로 구현되어 있는지 확인한다. PEiD로 파일을 열어보면 C# / .NET으로 이루어진 것을 확인할 수있다. .NET은 IDA로 분석이 어려우니 dnspy를 이용하여 분석을 진행한다.
[PEiD 다운로드 주소]
[dnspy 다운로드 주소]
dnspy의 왼쪽 탭에 CSHOP.exe 파일을 드래그&드랍 하면 위 그림와 같이 디컴파일되어 분석이 가능하다. 하지만 자세히 보면 난독화하여 \uFFFD와 같은 문자가 존재하여 분석에 어려움이 있다.
복호화는 de4dot를 이용하여 진행 한다.
apt -y install de4dot
r 옵션을 이용하면 해당 디렉터리 내에 있는 모든 파일을 대상으로 복호화를 진행한다.
mkdir ./out de4dot -r ./ -ro ./out
이제 다시 복호화된 파일을 dnspy로 열어보면 깔끔하게 보이는것을 확인할 수 있다.
이제 분석을 시작하는데 기초 문제답게 시작과 동시에 힌트가 나와있다. 버튼을 생성하는데 버튼의 사이즈가 [0,0] 으로 지정되어 있어 프로그램 실행 시 아무것도 보이지 않는 것이다.
문제점을 알았으니 코드를 패치해야 한다. 코드 패치는 .NET refletor와 reflexil를 사용하여 진행한다.
[.NET refletor 다운로드]
[reflexil 다운로드]
reflexil는 reflexil.for.Reflector.2.7.AIO.bin.zip 파일을 다운 받는다.
압축 해제 후 reflexil.for.Reflector.2.7.AIO.dll파일은 Addins폴더 하위에 복사하고 Reflector를 실행한다.
Tools - Add-ins에서 AIO.dll파일을 추가하면 Tools탭에 Reflexil 도구가 추가된다. Reflexil 도구 클릭
조금전에 확인했던 함수에서 버튼 [0,0]의 값을 [50,50]으로 변경하였다.
대상에서 우클릭 후 다른이름으로 파일을 저장한다.
이제 파일을 실행하면 네모 크기의 버튼이 보이고 버튼을 클릭하면 키값을 얻을 수 있다.