2017-05-10 15 views
0

올바르게 읽으면 (https://github.com/Microsoft/microsoft-pdb) pdb에 디버그 정보가 들어 있습니다. exe와 함께 고객에게 릴리스하는 경우 고객 또는 최종 사용자가 소스 코드를 찾을 수있는 위험이 있습니까?exe에서 pdb를 공개하는 것이 얼마나 안전합니까?

Visual Studio를 프로세스에 연결하면 가능하다고 생각할 수 있지만 직접 시도하지는 않았지만 pdb를 사용하기 위해 어딘가에 소스 코드가 필요하지 않을 것이라고 확신합니다. 진입 점과 결국 일부 데이터가 취한 전체 경로를 볼 수 있습니다.

그렇다면 최종 사용자가이를 방지하지 못하도록하는 방법이 있습니까?

답변

1

사용자가 자신의 소스 코드를 찾을 수 없게하는 방법은 없습니다. 사용자가 충분한 지식을 가지고있는 경우 프로그램이 수행합니다.

PDB가없는 경우에도 리버스 엔지니어링이라는 기술을 사용하여 프로그램의 기능을 확인할 수 있습니다. IDA Pro 같은 프로그램은 정말 잘합니다. 중간 언어를 사용하는 C# 및 Java와 같은 프로그래밍 언어는 거의 소스 코드로 제공됩니다. dotPeek과 같은 도구는 디 컴파일 된 소스 코드를 표시 할 수 있으며 실제 소스 코드와 얼마나 가까운 지 믿을 수 없습니다.

PDB와 관련하여 공개 PDB와 개인 PDB가 있습니다. 일반적으로 공용 PDB를 공개 (이름에서 알 수 있듯이)하고 내부 PDB를 내부 디버깅 용도로 유지합니다. PDBCopy (-p 매개 변수 사용) 도구를 사용하여 개인 PDB (자세한 정보를 변환 함)를 공용 PDB로 변환 할 수 있습니다.

개인적으로 공용 PDB를 제공하는 것에 대해 개인적으로 걱정하지 않겠습니다. 마이크로 소프트조차 Windows 용입니다.

0

pdb 소스 코드가 없습니다. 기호 (함수, 클래스, 전역 변수) 및 소스 파일 이름/행에 대한 정보가 들어 있습니다 (변환 방법은 RVA/파일). 그래서 pdb는 사용자에게 소스 코드를 제공하지 않고 소스 파일의 이름을 파일 시스템에 전체 경로와 함께 말하고 모든 내부 심볼 이름