Actionscript 3 Flash ABC:<;的数字部分是什么;文件>;。as$<;数量>;在swfdump中
如果我取一个swf,通过swfdump运行它Actionscript 3 Flash ABC:<;的数字部分是什么;文件>;。as$<;数量>;在swfdump中,actionscript-3,flash,Actionscript 3,Flash,如果我取一个swf,通过swfdump运行它 swfdump.exe -abc file.swf > ABC.txt 第一次运行时,我可能会在ABC.txt中获得如下输出 ObjectConfig.as$60 在同一SWF的后续运行中,会得到不同的输出 ObjectConfig.as$61 $后面的数字是什么意思?这是调试元数据的一部分,当您进行调试编译时,mxmlc编译器会将其添加到字节码中,debug=true。如果您执行普通版本编译,则会忽略此信息 此元数据存储文件名和行号,以
swfdump.exe -abc file.swf > ABC.txt
第一次运行时,我可能会在ABC.txt中获得如下输出
ObjectConfig.as$60
在同一SWF的后续运行中,会得到不同的输出
ObjectConfig.as$61
$后面的数字是什么意思?这是调试元数据的一部分,当您进行调试编译时,mxmlc编译器会将其添加到字节码中,
debug=true
。如果您执行普通版本编译,则会忽略此信息
此元数据存储文件名和行号,以便在调试时可以看到源代码中的位置。虽然我不确定这些特定数字的确切含义,但它们似乎是调试器文件的唯一标识符或索引,可能是在两个同名类的情况下。我能看到的最好情况是在swfdump的源代码中,它调用swf_GetString。在这个链的某个地方,它在类名的末尾添加了一个类似于debugLine或scopeDepth的内容:
char* swf_GetString(TAG*t)
{
int pos = t->pos;
while(t->pos < t->len && swf_GetU8(t));
/* make sure we always have a trailing zero byte */
if(t->pos == t->len) {
if(t->len == t->memsize) {
swf_ResetWriteBits(t);
swf_SetU8(t, 0);
t->len = t->pos;
}
t->data[t->len] = 0;
}
return (char*)&(t->data[pos]);
}
char*swf\u GetString(TAG*t)
{
int pos=t->pos;
而(t->poslen&swf_GetU8(t));
/*确保我们始终有一个尾随的零字节*/
如果(t->pos==t->len){
如果(t->len==t->memsize){
swf_可写息税前利润(t);
swf_SetU8(t,0);
t->len=t->pos;
}
t->data[t->len]=0;
}
返回(char*)和(t->data[pos]);
}