Use some more autos in the Handshake method.
Disable the debug heap.
Made the constructor and the bool conversion operator explicit.
Made the operator()s const.
Changed all typedefs to using declarations.
Updated Nop to static constant, updated it uses. Do not take address of static const but use a local buffer.
Do not take address of constant INT3.
Changed INIT to static const.
Replaced C-style casts with C++ style.
Micro-optimization that is guaranteed to not make anything much faster.
Use unsigned types to get rid of two warnings.
Converted num_overridden to size_t.
Removed unneeded function call.
Moved the -1 to the vector initialization, where it is clear that decrementing cannot cause the unsigned value to underflow.
Added some casts to eliminate warnings.
Read section and import blocks in one go.
Micro-optimization: reuse std::strings for all iterations.
Turn up the warning level to 4.
CloseHandle is not necessary. Destructor cleans it up.
PortableExecutable refactoring

- Added a constructor, inlined OpenHandle() and parts of ReadFile()
- ReadFile() made private and parameter-less, reuses Handle
- Removed OpenHandle()
- Added Exists()