2011-03-08 5 views
5

난독 화는 비공개 변수/멤버의 이름을 왜곡시키는 것에 관한 것입니까? 그렇다면 적어도 "변수 1"등과 같이이 이름을 읽을 수있는 이름으로 바꿀 응용 프로그램을 작성한 다음 컴파일 할 수있는 전체 코드를 추출 할 수 있습니까?.NET에서 난독 화를 역전시키는 방법은 무엇입니까?

+1

물론 가능합니다. 일반적으로 리버스 엔지니어링/역 어셈블/디 컴파일 링 등 (도구를 찾고있는 경우)이라고합니다. – stefan

+0

이러한 도구의 예는 http://de4dot.com/ – gregmac

답변

8

아니요, 특히 더 복잡한 obfuscator를 사용하면 훨씬 더 많습니다. 그들은 이 대부분의 언어로 표현 될 수없고, 논리 흐름이 끔찍하게 꼬여 최상의 도구를 누설하는 일리노이를 생성 할 수 있습니다. 많은 시간을으로하면 (아마도 많은 손으로) 할 수 있으며, obfuscator와 deobfuscator 사이에는 분명히 군비 경쟁이 있습니다. 그러나 여기에서는 기술을 크게 과소 평가합니다.

또한 많은 obfuscator가 전체 응용 프로그램 (하나의 어셈블리뿐만 아니라)을 보게되므로 public API도 변경할 수 있습니다.

+0

멋진 소식입니다.이 링크가 있습니까? 완전히 rad! 들립니다. – stefan

+0

@stefan 체크 아웃 http://brajeshmahor.blogspot.com/2010/11/code-security-net-obfuscation.html – BrokenGlass

+0

@BrokenGlass Marc Gravell이 쓴 내용은 없습니다. 그리고 iam은 1 : 1 코드를 다시 얻을 수 있다고 가정하지는 않지만 컴파일 및 코드 조각을 분석하기 쉽습니다. – stefan

1

난독 화는 accountBalance과 같은 의미있는 이름을 a1과 같은 의미없는 이름으로 변경하는 것과 같습니다. 응용 프로그램은 여전히 ​​작동하지만 내부의 알고리즘을 이해하는 것이 더 어려울 것입니다.

+1

을 참조하십시오. 이는 하나의 (어리석은) 난독 화 방법입니다. LSD가 높고 여전히 물건을 만드는 상상해보십시오. Thats는 좋은 난독 화입니다. – stefan

+0

웃음, 좋은 코멘트. –

1

사용되는 난독 화 기술에 따라 다릅니다. Obsfucating 변수 이름은 문제의 한 부분 일뿐입니다. 많은 난독 화 도구가 일종의 프로그램 흐름 난독 화를 동시에 수행하므로 코드 이해가 더 복잡해집니다. 결국 대부분의 프로그래밍 언어에서 난독 화 된 일리노이는 쉽게 표현할 수 없습니다.

변수와 입력란의 이름을 바꾸면 많은 변수 1, 변수 2를 사용하면 도움이되지 않습니다. 읽은 내용을 이해하는 데 도움이되지 않습니다.

2

확실히 obfuscator의 시작입니다. 일부 난독 화기는 문자열 및 기타 이와 같은 트릭을 암호화하여 매우 어셈블리를 리버스 엔지니어링하지 못하게합니다. 물론

, 런타임이이 모든 후 어셈블리를 실행해야하기 때문에 결정 해커가

1

여러 난독 화 기술을 취소 할 수있는 'deobfuscator'도구가 있습니다 :) 리버스 엔지니어링하는 것은 가능 디버그 문자열 제거, 프록시 메소드 제거, 가상화 코드의 가상화, 안티 디버그 코드 제거, 정크 클래스 제거, 메소드 매개 변수 및 필드 유형 복원 등을 수행합니다.

매우 강력한 도구는 de4dot입니다.

그러나 more이 있습니다.

관련 문제