我正在通过解密功能解决问题。我对Actionscript不太熟悉,但是当我运行这个函数时,它会进行无限循环。
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,但在什么情况下这会满足while条件?有什么想法吗?
答案 0 :(得分:1)
因为这个原因,你的功能陷入了永恒的循环:
_loc4_ = _loc4_ - -1640531527;
双减号与加号相同。由于该值永远不为零,因此循环中的求值始终返回true。