뛰어난 ‘소스 코드 보안성’ 을 제공하는 프레임워크는? (델파이 vs. WPF vs. Electron)
- 2021-04-16
- Posted by: Narae Kim
- Categories: 기술자료, 메인 노출
- 원문: https://blogs.embarcadero.com/delphi-provides-better-enterprise-source-code-protection-than-wpf-and-electron/?utm_source=Eloqua&utm_medium=email&utm_content=Article-210415-Security
- 작성자: 짐 맥키트 (Jim McKeeth)
델파이, WPF 닷넷 프레임워크, 일렉트론(Electron)을 가장 객관적으로 비교할 수 있는 방법은 무엇일까요? 세 프레임워크의 차이점들을 정리한 백서에 그 답이 있습니다. 실제로 윈도우 데스크탑 애플리케이션을 세 개의 플랫폼으로 개발해보면서, 총 23개 평가 항목들을 각각 평가했습니다. 이 작업에는 델파이 MVP와 WPF 전문가, 일렉트론 전문가들이 참여했습니다.
이번에는 기술백서의 IP 보안 매트릭스 비교와 관련한 내용을 정리했습니다.
배포 가능한 앱에게 있어 IP 보안 프로토콜은 어떤 의미인가요?
배포 가능한 프로젝트의 소스 코드는 얼마나 안전할까요? 기업들은 프로젝트에 다양한 리소스를 투자합니다. 그리고 수익을 창출하는 코드와 기술을 보호하면서도 완성된 제품을 퍼블릭하게 오픈 해야 하는 상황과도 맞닥뜨리게 됩니다. 이번 글에서는 사용자가 소스 코드에 액세스할 수 있도록 제공되는 기능들을 각 프레임워크마다 평가하고 정리했습니다.
객관적인 평가를 위해 세 개의 프레임워크로 동일한 윈도우용 계산기를 만들어보았습니다.
지적 재산 보호는 비즈니스에 있어 장기적으로 매우 중요합니다. 새로운 문제 해소 또는 새로운 기술이 필요한 경우, 개발자들은 프레임워크 선택이 IP 취약성에 영향을 미칠 수 있음을 이해하고 있어야 합니다. 델파이로 개발된 프로그램들은 중간 코드가 아닌 네이티브 플랫폼 머신 코드로 바로 컴파일됩니다. 무료 도구로 역컴파일(decompilation) 하게 되면, GUI 폼은 나타나지만, 로직의 어셈블리 코드만 생성됩니다. WPF에서는 IP 보안 작업이 훨씬 더 까다롭습니다. 무료 도구로 실행 파일과 라이브러리 파일들을 역컴파일하면, C# 비즈니스 로직 인식이 가능합니다. XAML 텍스트도 거의 완벽하게 인식할 수 있습니다. 마지막으로 일렉트론은 가장 중요한 문제를 안고 있는데요 – 설치가 될 때마다 소스 코드까지도 오픈하는 게 기본이라는 점입니다. 일렉트론 애플리케이션 코드는 프레임워크를 구조화하는 함수로 간단한 문서 편집기를 만들 수 있지만, 써드파티 도구를 사용하게 되면 상당히 까다로워질 수 있습니다. 각 프레임워크들에서 사용 가능한 역컴파일 도구들과 그 결과는 아래에 정리하겠습니다.
이번 역컴파일 평가의 목표는 오픈 소스 또는 무료 도구를 사용해 각 프레임워크로 개발한 애플리케이션에서 필요한 데이터를 찾기 위해 UI와 본래 코드를 확인할 수 있는지 여부였습니다. 델파이 VCL, 델파이 FMX, WPF(C#), 일렉트론(with Angular)을 각각 평가했습니다.
델파이 VCL과 FMX로 만든 계산기를 역컴파일하면, 모든 UI 요소들이 완벽하게 나타나고 로직 코드는 어셈블리로 표현됩니다. 이 예제에서는 기능이나 절차 구조를 추출하지는 않았지만, 이 또한 가능할 것으로 보입니다.
WPF로 만든 계산기를 역컴파일하면 UI 요소들과 C# 코드가 생성되는데, 이 C# 코드는 대부분 인식 가능합니다. WPF 닷넷 프레임워크로 만든 애플리케이션은 MSIL(Microsoft Intermediate Language) 형식을 사용하는데, 디스어셈블리(disassemble)과 역컴파일(decompile) 모두 쉽습니다. 종속 어셈블리와 리소스도 쉽게 추출할 수 있습니다. 닷넷 리플렉션(.NET Reflection)을 사용해 닷넷 어셈블리 정보를 추출해낼 수도 있죠. 클래스, 메소드, 코드, 리소스를 포함한 전체적인 내용을 어셈블리에서 추출할 수 있습니다. 고급화된 역컴파일러로 for/while 루프, if 문, try catch 블록 등 포함한 코드 구조를 거의 정확하게 재구성하는 것도 가능합니다. 리터럴 스트링(Literal string)을 추출하는 것도 쉽습니다. 외부 어셈블리에 대한 속성과 메소드 호출을 추출할 수도 있습니다.
일렉트론(Electron)으로 개발한 계산기에서 UI 요소와 자바스크립트(JavaScript) 코드는 일반적인 표준 텍스트 편집기로 쉽게 확인할 수 있습니다. 타입스크립트(Typescript) 코드가 자바스크립트로 전송되며, 복구할 수는 없습니다. 전반적으로 일렉트론에서의 패키지는 매우 제한된 수준으로만 제공됩니다.
각각의 프레임워크들을 자세히 살펴볼까요?
델파이로 개발한 애플리케이션의 역컴파일(Decompile)이 가능한가요?
델파이는 네이티브 머신 코드로 컴파일합니다. 정확한 역컴파일과 해석에 필요한 많은 소스 코드 구조와 메타데이터를 선별하여 자체적으로 삭제합니다. DeDe와 같은 도구를 사용해서 역컴파일하면 UI는 전체 세부 정보를 확인할 수 있지만, 어셈블리 코드로 로직/백엔드에 대한 부분만 확인 가능합니다.
역컴파일 도구들
- DeDe – 델파이 역컴파일러들 중 가장 많이 사용되는 도구
- Interactive Delphi Reconstructor – 델파이 실행파일과 동적 라이브러리용 역컴파일러
- MiTeC DFM Editor – 독립적으로 실행되는 바이너리, 텍스트 형태 모두로 지원 가능한 델파이 폼 파일 (*.dfm) 에디터
WPF 닷넷 프레임워크로 개발한 애플리케이션의 역컴파일(Decompile)이 가능한가요?
WPF로 컴파일한 윈도우 데스크탑 애플리케이션은 .dll과 .baml 파일로 변환됩니다. 써드파티 도구를 이용하면 인식 가능한 C#과 거의 완벽하게 XAML로 역컴파일이 가능합니다. 마이크로소프트는 비주얼 스튜디오에 Dotfuscator 커뮤니티 에디션을 함께 제공하고 있습니다. 단, 개인 용도로만 사용 가능한 라이선스입니다. 닷넷(.NET) 난독화를 풀기 위한 전문적인 솔루션은 수 백~수 천 달러에 달합니다. 그리고 이런 현상이 발생하지 않도록 애플리케이션을 보호 하기 위해서는 추가 단계가 필요합니다.
역컴파일 도구들
- WPF StylesExplorer – .baml 리소스를 탐색하는 WPF .baml 컴파일러와 도구
- Snoop WPF – 디버거 없이도 실행중인 WPF 애플리케이션 트리 형태로 spy/browse 할 수 있는 도구
- JetBrains dotPeek – 닷넷(.NET) 역컴파일러이자 어셈블리 브라우저
일렉트론으로 개발한 애플리케이션의 역컴파일(Decompile)이 가능한가요?
일렉트론 소스 코드는 패키지화되어 최종 사용자 시스템에 배포됩니다. 개발자가 써드파티 도구를 사용해서 코드를 혼란스럽게 만들지 않는 이상, 소스 코드는 간단한 문서 편집기를 사용하거나 asar과 같은 도구로 패키지화 된 걸 풀어서 읽을 수 있습니다.
역컴파일 도구들
- TextPad – 일반 텍스트 파일을 위한 보편적인 문서 편집기
- asar – 간단한 압축되지 않은 연결 아카이브 형식 파일 패키지/언패키지 도구
결론적으로 델파이는 상업용 라이선스 한 번 구입으로, 가장 확실하면서도 장기적인 전망은 물론 최상의 지적 재산 보안을 제공합니다. 또한 사내 상황에 알맞게 맞춤화 설정까지 매우 쉽습니다. WPF는 기본 설정에서 역컴파일을 쉽게 할 수 있지만, 코드를 이해하기 어렵도록 하기 위해서는 추가적인 단계와 도구가 필요합니다. 일렉트론도 기본 설정에서 추출해내는 것은 쉽습니다. 하지만 코드를 이해하기 어렵도록 설정하기 위해서는 마찬가지로 추가 단계와 도구가 필요합니다. 또한 장기 전망이 불확실하고 기업 후원이나 커뮤니티 지원에 의존해야만 추가적인 업데이트가 제공될 수 있다는 점에서 안정성이 떨어진다고 볼 수 있습니다.
12.0 12.1 AI AWS C++ c++빌더 chatgpt DelphiCon ios rad서버 RAD스튜디오 UI UIUX UX uxsummit vcl 개발 개발사례 고객사례 기술레터 기술백서 데브옵스 데이터 데이터베이스 델파이 리눅스 마이그레이션 맥 머신러닝 모바일 새버전 샘플 세미나 안드로이드 웹 윈도우 인공지능 인터베이스 출시 커뮤니티에디션 코드 클라우드 파이썬 파이어몽키 현대화