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

Другие вопросы по тегам