flshm

flshm

 

Flash Player LocalConnection Shared Memory Native Code Library

I developed this project for a very specific purpose a client needed, and am pleased to be able to release it as open-source. This software library enables communication between Flash Player and native code running on the system. It can also be used for security research to monitor the contents of the LocalConnection shared memory. In particular, this tool demonstrates the shared memory is not secured across different user accounts on the same machine on all platforms.

Developing this library actually proved to be a bit of a challenge. While some research had already been conducted on this feature, leading to the conclusion this library could be developed, it was necessary to reverse engineer much of the undocumented protocol, which differed between each operating system as well as different some software versions.

One of the more-challenging aspects was reverse engineering the unique number used to create the shared memory key on Unix-like systems, which changed based on the user ID. After disassembling and debugging the executable, the relevant assembly was located and a compatible C implementation was written.

When paired with an AMF library, it is possible to fully emulate communication with Flash Player instances, inside and outside of the browser plugin.

 

Downloads

GitHub repository