Lo mire rapido y basicamente es algo asi:
1) Tiene un funcion para cragar las APIS.
2) Tiene otra funcion para descifrar informacion.
3) Una vez que carga las APIs, ejecuta "NET STOP" + 0x09 + 0x09
4) Usa CreateProcess para ejecutarse nuevamente, pero suspendido
5) Parchea el EXE ejecutado con WriteProcessMemory.
6) Resume la ejecucion con ResumeThread.
7) En medio hay un SetThreadContext que no mire mucho.
La idea seria reconstruir el EXE en disco, fijandose que parchea con WriteProcessMemory y despues pasarle IDA...
Eso es todo lo que pude ver por ahora...
Saludos!