Я недавно узнал об обфускации кода. Это приятно делать, когда у тебя есть свободное время, но у меня другой вопрос. Зачем это делать?
Во-первых, есть языки, в которых, я уверен, это здорово - интерпретируемые, такие как php, JavaScript и многие другие. Там это кажется хорошей и более безопасной вещью.
Во-вторых, есть языки, в которых это, кажется, не имеет никакого реального эффекта - все языки, скомпилированные с нативным кодом. Взять, к примеру, C. после компиляции все имена переменных, имена функций, большинство методов запутывания исчезают. Если кто-то может превратить его в нативный код, это будут такие вещи, как рекурсия вместо циклов и т. Д., Но в любом случае дизассемблированный код будет иметь вместо имен некоторые идентификаторы, созданные дизассемблером, верно?
И последняя категория - это языки, в которых я не совсем уверен. И это главная причина, которую я спрашиваю. Этими языками будут Java, C # (.NET) и последний Silverlight, используемый в WP7. Я спрашиваю, потому что я прочитал статью, в которой говорится, что в приложениях WP7 запутывание кода помогает предотвратить взлом кода. Но я всегда думал, что байт-код очень похож на стандартные коды ассемблера, поэтому опять не имею никакой информации о реальных именах переменных перед компиляцией, именах функций и т. Д. Итак, где же правда?