나는 기본적으로 C# .net의 메타 데이터에 대해 알고 있으며 최근에 .net Obfuscating에 대해 들었습니다. 내 어셈블리를 IL에서 이해하기 어렵게 만드는 데 obfuscator를 사용하는지 알고 싶지만 메타 데이터도 변경됩니까? 그런 다음 프로젝트에 대한 참조로 추가하고 클래스 및 멤버의 실제 이름을 볼 수 있습니까?.NET Obfuscator를 사용하는 경우 metaData가 변경됩니까?
답변
요즘 대부분의 난독 화기는 기본적으로 어셈블리를 다시 작성할 수 있습니다. 기능의 대부분은 다음과 같습니다
이
문자열 암호화 (툴 벤더들은 수동 리플렉터와 같은 도구를 사용하여 원래의 멤버 이름에 이름 구성원을지도 할 수 있도록지도를 만들 수있는 옵션을 제공합니다) 이름 바꾸기 - 이것은 코드의 문자열 상수를 암호화합니다 (문자열의 힙 영역에 저장 됨). 그래서 Reflector에서 파일을 열면 보통 암호화되어 표시됩니다. 암호화 된 값은 사용 직전에 여전히 해독됩니다.
IL 난독 - 일리노이의 제어 흐름의 재 작성 스파게티 코드를 만들기 위해 어려운
이 넘어 길을 갈 다른 도구도 있습니다 따라하지만 그들은 모두 그냥 뭔가를 반대하는 데 걸리는 무엇의 막대를 올립니다.
난독 화 된 dll/exe에 대한 참조를 설정하면 난독 화/이름이 변경된 멤버가 표시되지만 공급 업체가지도를 제공하면 (대부분) 원하는 것을 알 수 있습니다. 또한 일반적으로 읽을 수있는 API가 필요할 경우 난독 화되지 않는 인터페이스를 사용할 수 있습니다. Reflector의 예는 addin apis는 난독 화되지 않은 모든 인터페이스이지만 구체적인 클래스의 모든 구현은 난독 화됩니다.
Confuser를 사용해보십시오. 아직까지는 Deobfuscator가 없으므로 사용해보십시오. 그들 해시 또한 더 많은으로
당신은 일반 클래스의 이름과 방법을 볼 수 없습니다. 그 이후에 코드를 꺼내는 것은 기본적으로 불가능합니다.
강력한 도구, 고마워요 :) –
왜 시도하지 않습니까? [이] (http://ilspy.net/)도 도움이 될 수 있습니다. – I4V
나는 ILspy를 사용하고 있었고 .net obfuscator의 무료 버전을 사용하여 내 Dll 중 하나를 난독 화하려고 시도했지만 "Dotfuscator Community Edition은 일반 유형이나 메소드의 이름을 바꿀 수 없습니다"라고 말했고 실패했습니다. ( –
Obfuscating은 대부분 쓸모가 없습니다. .. 정확히 무엇을하려고합니까? –