Sothink SWF Декомпилятор использует ноль в странных местах
Я пытался выяснить фоновую математику во флэш-игре, используя декомпилятор Sothink SWF для просмотра файлов ActionScript. По общему признанию я знаю очень мало о ActionScript, но я вижу строки кода, которые похожи на:
_loc_2 = null * (null * true) <= null;
или же:
_loc_3 = null & null << (null === false);
С того места, где я стою, значение <= null не имеет особого смысла, равно как и null * true или null & null. Я просто неправильно понимаю ActionScript или это ошибка в процессе декомпиляции? Если это ошибка, есть ли способ ее решить?
1 ответ
SWF, вероятно, был зашифрован с помощью obfuscater, вот почему вы видите глупости, подобные этой. Вы можете проверить этот код самостоятельно (хотя вы должны компилировать в нестрогом режиме):
trace( "null & null: " + ( null & null ) ); // traces 0
trace( "null === false: " + ( null === false ) ); // traces false
trace( "null & null << (null === false): " + (null & null << (null === false)) ); // traces 0
trace( "null * true: " + ( null * true ) ); // traces 0
trace( "null * null * true " + ( null * ( null * true ) ) ); // traces 0
trace( "null * (null * true) <= null: " + (null * (null * true) <= null) ); // traces true
так в основном _loc_2
является локальной переменной, установленной в 0, в то время как _loc_3
локальная переменная установлена в true