2015-10-27 3 views
1

Я работаю через функцию дешифрования и ударил стену. Я не очень разбираюсь в ActionScript, но когда я запускаю эту функцию, он переходит в бесконечный цикл.Функция mcrypt_decrypt, застрявшая в вечной петле

private function mcrypt_decrypt(param1:Array, param2:Number,param3:Number): Array { 
var _loc4_:* = -9.57401312E8; 
while(_loc4_) 
{ 
    var param3:Number = param3 - ((param2 << 4^param2 >>> 5) + param2^_loc4_ + param1[_loc4_ >>> 11 & 3]); 
    _loc4_ = _loc4_ - -1640531527; 
    var param2:Number = param2 - ((param3 << 4^param3 >>> 5) + param3^_loc4_ + param1[_loc4_ & 3]); 
} 
return [param2,param3]; 
} 

От тестирования я вижу, что loc4 начинается как -9.57401312E8, а затем итерации продолжает -1640531527 удаляется каждый раз, но в каком случае будет это удовлетворяет условию время? Есть идеи?

+0

Вы уверены, что после каждой итерации? В наши дни я немного ржавый, используя ActionScript, поскольку это были годы, но эта строка _loc4_ = _loc4_ -1640531527; мне кажется, что он добавляет 1640531527 вместо вычитания ... всякий раз, когда я вижу знак двойного минуса, я вижу знак плюса. –

+0

Из того, что я вижу, вывод после одной итерации составляет 683130215.0, а затем за другим его 2323661742.0, после третьего - 3964193269.0. Таким образом, вы были бы правы в этом, но это только усложняет его дальнейшее, когда условие while будет удовлетворено ... –

+0

время будет выходить только тогда, когда _loc4_ действительно равно 0, которое никогда не будет в вашем случае. – BotMaster

ответ

1

Ваша функция застревает в вечном цикле из-за этого:

_loc4_ = _loc4_ - -1640531527;

Двойной знак минус - это знак плюса. Поскольку значение никогда не равно нулю, оценка в вашем цикле всегда возвращает значение true.

+0

Я вижу, однако запутанная часть об этом заключается в том, что это рабочий метод в * .swf, который я декомпилировал. Может быть, это проблема с декомпилятором? –

+0

О, я вижу. Да, это, наверное, то, что произошло. Где у вас есть var _loc4 _: * = -9.57401312E8; декомпилятор, вероятно, неверно истолковал число. Поскольку это криптофункция, я не удивлюсь, если здесь будет какая-то запутывание. –

+0

Почему вы все равно должны декомпилировать это? Не можете ли вы просто открыть проект и работать с ним из исходного исходного кода? –

Смежные вопросы