2011-04-26 23 views
5

que tienen algo de código AS3 que incrusta un archivo SWF (que a su vez contiene AS3):¿Qué sucede con un swf cuando está incrustado?

[Embed(source="/assets/myas3libswf.swf", mimeType="application/octet-stream")] 
protected static const MyAs3LibSwfClass : Class; 
... 
var loader:Loader= new Loader(); 
loader.loadBytes(new MySwfClass() as ByteArray); 
... 

Al observar cómo descompiladores flash (Trillix, So-Think, etc) ver esto, que sólo muestran:

//MyClass_MyAs3LibSwfClass 
package mypackage 
{ 
    import mx.core.*; 

    public class MyClass_MyAs3LibSwfClass extends mx.core.ByteArrayAsset 
    { 
     public function MyClass_MyAs3LibSwfClass() 
     { 
      super(); 
      return; 
     } 
    } 
} 

Tampoco parecen ofrecer ninguna forma de extraer el ByteArray.

Seguramente no puede ser tan fácil ofuscar el código AS3. Pero, ¿a dónde fue el SWF? Al mirarlo con un editor hexadecimal, ni siquiera puedo encontrar el encabezado de inicio ("CWS") del SWF incrustado.

Mi pregunta es: ¿qué ocurre con un archivo SWF cuando está incrustado como un ByteArray? ¿Y algún descompilador admite extraer un ByteArray incrustado?

Nota: No incrusto este SWF para ofuscar (hay otros motivos). Solo me interesan las ramificaciones de descompilación de la incrustación.

+0

Estoy bastante seguro de que un archivo SWF es un archivo zip. SI cambia la extensión en su SWF con el SWF incorporado para comprimir; y descomprimirlo, ¿qué encuentras? Esperaría que todos los activos incrustados estén allí; como elementos dentro del archivo zip SWF. – JeffryHouser

+5

No, a * SWC * es un archivo zip. Un SWF es su propio formato binario. – paleozogt

+1

reconocido. Supuse que eran similares. ;) – JeffryHouser

Respuesta

2

Los datos incrustados se almacenan en una etiqueta DefineBinaryData de un archivo SWF. La etiqueta SymbolClass vincula los datos a su definición. (SWF file format specification)

Si descomprimiera correctamente el cuerpo SWF (los SWF comprimidos comienzan con CWS y usan la compresión zlib después de los primeros 8 bytes), vería el encabezado CWS o FWS en los datos brutos.

Nada de esto habla de cómo los decompiladores manejan los datos.

0

Si no recuerdo mal, debería existir un vínculo a un activo cuando descompile el primer swf. Debería haber un gran archivo binario en algún lugar de los activos, ese es su segundo swf.

Voy a tener que probar esto cuando llegue a casa.

0

Encontré un artículo here que entra en un buen poco de detalle sobre un SWF incrustado. Parece que no pude encontrar el SWF incrustado en un editor hexadecimal porque el archivo SWF principal estaba comprimido. (El encabezado 'CWS' significa que está comprimido.)

Cuestiones relacionadas