【问题标题】:Inject AS3 or ABC to a swf file in runtime?在运行时将 AS3 或 ABC 注入 swf 文件?
【发布时间】:2015-04-17 21:46:22
【问题描述】:

我已经看到一些用于浏览器游戏的工具,这些工具将代码注入到 swf 文件中以自动化游戏的某些部分。

我一直在阅读有关 swf flash 格式的信息,但我仍然不知道这怎么可能,也许程序使用自定义 flash 播放器运行 swf 文件?

如果你能指导我,我将不胜感激,这很有趣。

【问题讨论】:

标签: actionscript-3 flash code-injection


【解决方案1】:

试一试:

var actionString:String = "methodAddOne";
var paramString:String = "1";

function methodAddOne(num:String):void{
    trace(Number(num)+1);
}

this[actionString](paramString); //trace: 2

对于参数队列:

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,即 用户可以通过参数预定义使用。

像这样:

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

作为一个想法...问候安德烈

【讨论】:

  • 感谢您的回复,但我的意思是将任何其他编程语言的代码注入到正在运行的 swf 文件中
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2011-09-08
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多