Обфускатор делает сложным для понимания дизассемблерированный/декомпилированный листинг, что весьма актуально для Java или .NET, которые можно восстановить из байт-кода почти до исходного текста. Работают заменой зашитых имен, перемешиваниями кусков кода, использованием набора заранее заданных приемов, вроде шифрования строк с дешифровкой перед использованием, "раскрытия" стандартных функций, увеличения количества условных переходов и т.п.