2010-11-24 2 views
3

어셈블리에 적용한 난독 화로 충분하다는 암시를하려고합니다. 가장 중요한 것은 암호 또는 개인 키가 포함 된 문자열을 보호하는 것입니다.

성공적으로 내 어셈블리를 Salamander Decompiler으로 디 컴파일하여 내 문자열이 암호화되었지만 런타임 중에 문자열을 암호 해독하여 사용해야합니다.

나는 응용 프로그램을 디버그하고 어셈블러 코드를 볼 수 있다고 들었다.난독 화 된 .Net 어셈블리를 디버그하십시오.

솔루션
아마 WinDbg는 함께 일을 더 나은 방법이 있지만 이것은 나를 위해 일했다.

adplus -crash -pn [executablename] -o [ output directory ] 

* ADPlus에서 프로그램을 닫거나 기다려

-3- WinDBG로

동일한 폴더에 배치된다

1-
2- 명령 라인 입력을 열어 프로그램을 실행 닫습니다
4- 지정된 출력 디렉토리에 FULLDUMP * .dmp 파일을 엽니 다.
5 노트 파일 열기 ++ anb를 선택합니다. TextFX-> 문자 -> 인쇄 할 수없는 모든 문자를 #
으로 압축합니다. 이 형식의 문자열을 6 검색의 #의 t # r에 # 내가 # N #의 g '
또는

(이 걸릴 수 있습니다)', '모든'# '을 대체'및 검색 '문자열을

* 그런데 일반 텍스트 메모리에있는 SecureString을 찾을 수 없습니다.

답변

4

암호 및 개인 키와 같은 중요한 데이터의 경우 SecureString을 사용해야합니다.

어셈블러 코드를 볼 때 - 응용 프로그램이 실행 중일 때 windbg을 사용하여 메모리 덤프를 얻은 다음 windb에서 실제 어셈블러를 살펴볼 수 있습니다.

+0

전에는 SecureString에 대해 들어 본 적이 없다고 생각합니다! 가장 유용한. –

+0

SecureString은 꽤 흥미 롭습니다. 그러나 나는 그것이 디 컴파일과 관련된 일을 복잡하게 만들지 만 확실한 해결책은 아니라고 확신합니다. 문자열을 사용해야한다면 결국 보안되지 않은 위치로 이동해야하기 때문입니다. 나는 windbg 덤프를 살펴볼 것이다. –

+0

@ 크리스티안 - 얼마나 안전합니까? 사실, 당신의 코드를 모호하게 만들었습니다. 프로세서에서 실행되는 경우 해커가 충분히 해독/디 컴파일 할 수 있습니다. – Oded

1

어려운 난독 화 된 응용 프로그램을 디버깅하려는 경우 0xd4d에 의해 dnSpy를 찾을 수 있습니다. 무료이고 오픈 소스 인 .NET 디 컴파일러로 .NET 어셈블리를 디버그 할 수 있습니다. & 중단 점 넣기 var의 값을 얻습니다. 디버깅에 관한 한 정말 흥미 롭습니다. WinDBG 나 Olly2가없는 응용 프로그램을 디버깅 할 수 있다는 것은 분명히 기쁜 일입니다.

이제는 문자열 난독 처리에 대해 매우 복잡한 방법 (.NET 스택 프레임 + 개인 키 + 리소스 해독 + 포인터)을 사용하는 .NETGuard's string encryption을 살펴볼 수 있습니다. & 문자열을 보호하십시오. 해커가 앱을 검토하고 문자열을 주로 참조하므로 내 마음에 문자열을 보호하는 것이 최우선 과제입니다.