2017-04-10 8 views
-1

나는 바이너리 디 컴파일을 요구하는 crackme challenge를 만들고있다. 난컴파일러가 사용하지 않는 문자열을 받아들이도록 하시겠습니까?

은 바이너리 사용하여 문자열을 반대하려는 사용자를 여행하기 위해 다음을 포함하려고 :

const string pointless = "Strings would be too easy"; 

불행히도 내 코드에서이 곳을 참조하지 않고 중복 코드는 컴파일시에 제거됩니다. 어쨌든 컴파일러에게 포함시킬 수있는 방법이 있습니까?

+0

의미가없는 방식으로 참조 할 수 있습니다. –

+0

@ RaymondChen 나는 동의한다. 그러나 더 좋은 방법이 있는지 궁금해하고 있었다! – Codingo

답변

3

변수를 사용하는 것이 변수를 컴파일 된 코드로 유지하는 유일한 방법입니다. 이제는 컴파일 된 코드에서이 명령문을 사용하지 말아야합니다.

마지막으로 두 가지 작업이 있습니다. 당신은 확실히 컴파일 된 코드에서 그것을 얻을 것이다 사용하는 경우

  • Use variable
  • 다음 not to get this using code in compiled code

    ,

은 당신은 알고있다. Debug 클래스의 변수를 사용하므로 debug 모드로 컴파일하는 경우에만 얻을 수 있으며 release 모드와 동일한 코드를 컴파일하면 using your variable 코드가 생성되지 않습니다. 다음과 같이 -

const string pointless = "Strings would be too easy"; 
Debug.WriteLine(pointless); 

변수를 사용 했으므로 이제 컴파일 된 형식에서 제거되지 않습니다. 당신이 debug으로 코드를 컴파일하는 경우 지금 당신은 당신이 얻을 것이다 release 모드로 코드를 컴파일 지금이 Debug.WriteLine(pointless);

를 얻을 수 있지만 것이다 변수가 아니라이 Debug.WriteLine(pointless);

그것이 도움이되기를 바랍니다.!