How to compile an SWF to bypass any VerifyError for non-existing classes inside of that SWF
I have special use case that I would like to be able to reproduce and as an inspiration I took one specific SWF file which is part of the
ADEP Gravity Client Component Framework which is an adaptation of the OSGi runtime in Actionscript 3.0.
The file in question can be seen in this video https://youtu.be/g_Y4PmR_L1w?t=379.
I'm talking about the gravity_shared_flex-flex450.swf which is a special RSLs loader.
That file is loaded first by Gravity as a bundle in memory before any RSLs are handled. In that SWF there is a GravitySystemManager class that extends SystemManager. That custom SystemManager first loads all the RSLs and then adds the GravitySparkApplication on the display list.
The problem that I'am having while trying to reproduce the same mechanism is that inside that SWF there is a GravitySparkApplicationclass that extends the Application from Apache Flex. Although that the Application class is not compiled in that SWF it has no problem loading in memory and there is no VerifyError that says the spark.components.Application was not found.
My intuition tells me that there is a special mxmlc compiler option when used in an SWF compilation that tells the Flash Player to skip any kind of class verification.
My question is how did Adobe managed to compile an SWF which is referencing spark.components.Application as an external reference when that external reference comes into existence after the RSLs are loaded by gravity_shared_flex-flex450.swf which itself cannot be loaded before the RSLs?