지금껏 .NET Fraemwork용 Application을 만들어오면서, 바이너리 파일 난독화에서는 Obfuscar가 제일 효과적인 것 같습니다.
물론 _유료버전_의 다른 솔루션들을 찾으라고하면 더 좋고 편한 것들이 있겠지만,
Open Source 기반으로 나름 기능 괜찮을 것을 꼽으라면 이 패키지가 제일인듯 싶습니다.
과거에는 개발자가 빌드한 버전을 압축파일이나 설치 프로그램을 제시했는데,
오랜만에 홈페이지에 들어갔더니, Nuget을 통해서 배포되고 있으므로, Nuget을 통해 받으라고 나오네요.
문제는 매우 고루하고 신문물을 잘 접하지 않다보니, 이 과정이 매우 난감하더군요.
지속적으로 업데이트해왔으면 바로 따라가는데, 시작점부터 많이 생략된 상태로
Nuget에서 받아서 구성하라는 이야기 뿐이였습니다.
이에 다음 블로그의 글을 읽으면서 따라가다보니, 조금은 이해가 되기도 하고 해서
일단 Obfuscar를 Nuget으로 설치를 진행했습니다.
다음 명령을 넣으면 되더군요.
dotnet tool install --global Obfuscar.GlobalTool
개인적으로 사용 중인 개발 PC에서는 위의 명령을 넣으니 바로 적용이 되더군요.
그래서 자신감 넘치는 마음에 빌드 서버에 명령을 넣었는데...에러가 빡뜨더군요.
위와 같은 상황이라... 다음 단계들을 하나씩 적용해봤습니다.
1. Visual Studio 2022 버전이 낮아서 아닌가?
현재 빌드서버에서는 빌드작업을 위해 Visual Studio 2022를 설치했습니다.
문제는 제 개발 PC는 수시로 들낙달락하니 업데이트가 발생하면 틈나는대로 업데이트를 수행했습니다.
하지만, 빌드 서버에는 애초 원격 접속을 잘 안하다보니, 자연스럽게 업데이트가 안되어 있더군요.
그래서 최신 버전으로 업데이트 했습니다.
결론 : 실패.
2. NET 8.0 Framework 부재 문제가 아닌가?
그렇다면, .NET Framework 문제는 아닐까? 그래서 혹시나 하는 마음에, 다음을 입력했습니다.
dotnet --version
그러자 9.0.201 이라고 응답을 보내더군요. 그럼 버전은 맞는 것 같은데,
혹시 .NET Framework SDK 설치에 문제가 있는 건 아닐까 싶었습니다.
그래서 다음 명령을 넣었습니다.
dotnet --list-sdks
2.1.519 에서부터 5.0.416, 9.0.201 이 설치되어 있더군요.
아하! 8.0이 빠져서 구나.. 싶어서 8.0 버전을 다운 받아 설치했습니다.
https://dotnet.microsoft.com/ko-kr/download/dotnet/8.0
[.NET 8.0 다운로드(Linux, macOS 및 Windows)
Linux, macOS 및 Windows용 .NET 8.0 다운로드. .NET은 다양한 유형의 애플리케이션을 빌드하기 위한 무료 크로스 플랫폼 오픈 소스 개발자 플랫폼입니다.
dotnet.microsoft.com](https://dotnet.microsoft.com/ko-kr/download/dotnet/8.0)
결론 : 실패
3. Nuget 패키지 참조 문제?
그렇다면... 위의 메시지를 근간으로 볼 때, Nuget 패키지 목록을 못가져와서 그런가 싶더군요,
우분투에서 apt update 할 때도 패키지의 한글자가 틀려 제대로 안된 기억이 나더군요
(http://mirror.kakao.com/ubuntu/ 라고 넣어야 하는데, r자가 하나 빠진 http://miror.kakao.com/ubuntu/ 에서 진행이 안되었음)
문제는 현재 Nuget의 소스 리스트는 어떻게 확인할 수 있는지 모르겠더군요.
주섬 주섬 검색해서 아래의 명령을 넣으니, 나옵니다.
dotnet nuget list source
그러자.... 미묘하게 나오네요.
Nuget 관련된 URL이 전혀 안나옵니다. 혹시나 해서 개인 개발 PC에서 열어보니, 위의 목록과 다르더군요.
아마도.. DevExpress를 깔면 nuget이 날아가고 자기 것을 추가하는 것 같습니다.
그래서 다음 명령을 넣어 추가했습니다.
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
결론 : 성공
결론적으로 Nuget Source에 대한 문제였고, 이 부분을 추가하자 바로 성공했네요.
일단 Nuget을 이용해 Obfuscar는 설치했고, 이제 이렇게 설치된 Obfuscar를 이용해 난독화 하는
구성을 해봐야 겠네요.