Engineering Heap Overflow Exploits with JavaScript