硕思闪客精灵在奇怪的地方使用null

发布于 2024-11-17 04:25:42 字数 488 浏览 2 评论 0原文

我一直在尝试计算 Flash 游戏 中的背景数学使用硕思闪客精灵查看ActionScript文件。诚然,我对 ActionScript 知之甚少,但我看到的代码行看起来像:

_loc_2 = null * (null * true) <= null;

或:

_loc_3 = null & null << (null === false);

从我的立场来看,value <= null 没有多大意义,< i>null * true 或 null &空。我只是没有正确理解 ActionScript,或者这是反编译过程中的错误?如果出现错误,有什么办法解决吗?

I've been attempting to figure out the background math in a Flash game by using the Sothink SWF Decompiler to view the ActionScript files. Admittedly I know very little about ActionScript, but I'm seeing lines of code that look like:

_loc_2 = null * (null * true) <= null;

or:

_loc_3 = null & null << (null === false);

From where I stand, value <= null doesn't make much sense, and neither does null * true or null & null. Am I just not understanding ActionScript properly, or is this an error in the decompiling process? If it's an error, is there any way to solve it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

窝囊感情。 2024-11-24 04:25:42

swf 可能已使用混淆器加密,这就是为什么您会看到这样的废话。您可以自己测试这段代码(尽管您必须在非严格模式下编译):

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 是一个局部变量设置为真

The swf has probably been encrypted with an obfuscater, which is why you're seeing nonsense like this. You can test this code yourself (though you have to compile in non-strict mode):

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

so basically _loc_2 is a local variable set to 0, while _loc_3 is a local variable set to true

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文