문제

나는 Java 실행 파일(jar 파일)이 소스 코드를 디컴파일하고 얻는 것이 쉽지 않다고 생각합니다.

다른 언어는 어떻습니까?.net과 모두?

디컴파일 가능한 코드로만 컴파일할 수 있는 모든 언어는 무엇입니까?

도움이 되었습니까?

해결책

일반적으로 Java, C#, VB.NET과 같은 언어는 순수 기계어가 아닌 중간 언어로 컴파일되기 때문에 상대적으로 디컴파일이 쉽습니다.IL 형식에서는 기계어로 컴파일할 때 C 코드보다 더 많은 메타데이터를 유지합니다.

기술적으로 원본 소스 코드를 가져오는 것이 아니라 컴파일할 때 컴파일된 코드를 다시 제공하는 소스 코드의 변형입니다.주석, 주석, 컴파일러 지시어 등은 일반적으로 컴파일된 코드로 전달되지 않으므로 소스 코드와 동일하지 않습니다.

다른 팁

실행 파일에는 지원해야 할 많은 메타데이터가 포함되어 있어야 하므로 관리 언어를 쉽게 디컴파일할 수 있습니다. 반사.
C++와 같은 언어는 네이티브 코드로 컴파일될 수 있습니다.프로그램 구조는 컴파일/번역 과정에서 완전히 변경될 수 있습니다.
컴파일러는 코드의 일부를 쉽게 교체\병합\삭제할 수 있습니다.원본 코드와 컴파일된(네이티브) 코드 사이에는 1:1 관계가 없습니다.

.NET은 디컴파일하기가 매우 쉽습니다.이를 수행하는 가장 좋은 도구는 .NET 리플렉터 최근 RedGate에 인수되었습니다.

대부분의 언어는 디컴파일이 가능하지만 일부 언어는 다른 언어보다 디컴파일하기가 더 쉽습니다..Net 및 Java는 실행 파일(메소드 이름, 변수 이름 등)에 원래 프로그램에 대한 추가 정보를 추가하므로 원래 정보를 더 많이 얻을 수 있습니다.

예를 들어 C++에서는 변수와 함수 등을 번역합니다.메모리 주소에 (예, 이것이 매우 단순화된 것이라는 것을 알고 있습니다) 디컴파일러는 어떤 항목이 호출되었는지 알 수 없습니다.하지만 여전히 프로그램 구조의 일부를 되돌릴 수 있습니다.

VB6을 pcode로 컴파일하면 다음을 사용하여 거의 전체 소스로 디컴파일할 수도 있습니다. P32다즘, Flash(또는 액션스크립트)는 다음과 같은 것을 사용하여 전체 소스로 디컴파일할 수도 있습니다. 플레어

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top