我已经看到一些浏览器游戏的工具,它们将代码注入到swf文件中,以便自动化游戏的某些部分。
我一直在阅读有关swf flash格式的文章,我还不知道这可能是怎么回事,也许该程序使用自定义Flash播放器运行swf文件?
如果你可以指导我,我将非常感激,这非常有趣。
答案 0 :(得分:0)
试一试:
var actionString:String = "methodAddOne";
var paramString:String = "1";
function methodAddOne(num:String):void{
trace(Number(num)+1);
}
this[actionString](paramString); //trace: 2
对于params队列:
var actionString2:String="methodAdd";
var paramString2:String="1,2,3,-6";
function methodAdd(nums:String):void{
var params:Array= nums.split(",");
var out=0;
for each(var num:Number in params){
out += num;
}
trace(out);
}
this[actionString2](paramString2);// returns 0
所有计算,核心方法,......你必须解析。非常复杂... 例如。尝试解析并计算“1 + 2 + 3-6”。它当然可能,但很难用其他东西和数学语法。
因此,更简单的方法是使用所有方法提供基于字符串的Api 用户可以使用params预定义使用。
像这样:var stackString:String = "methodAddOne(100); methodAdd(1,2,3);";
function parseFunctionsString(str:String):void
{
//better use regExp at all the following
var f:String = str.substring(0,str.indexOf("("));
var p:String = str.substring(str.indexOf("(") + 1,str.indexOf(")"));
// clean spaces // also better regExp to validate some other user mistakes - just for this test in this way
f = f.replace(" ","");
p = p.replace(" ","");
//trace("** "+f+" ("+p+")");
if (this[f])
{
this[f](p);
}
else
{
trace("unknown function: "+f);
}
str = str.substr(str.indexOf(";") + 1,str.length - str.indexOf(";") + 1);
if (str.length > 2)
{
parseFunctionsString(str);
}
}
parseFunctionsString(stackString);
// trace:
// 101
// 6
作为一个想法...问候安德烈