Tu plan es sustituir una app lanzadora por otra propia decompilando la original y realizando algunos cambios, en concreto inyectando una determinada dll defensiva antes de que te ataquen. El problema es el trabajo de interpretación de un código decompilado que suele tener partes incomprensibles y que la mayoría de las veces genera un proyecto que no compilará. En mi opinión, hay que facilitarse la vida por caminos menos trabajosos, bien consiguiendo el fuente original, o bien con aproximaciones. Entiendo que esa lanzadera no ejecuta inmediatamente el proceso que lanza hasta que el usuario configure ciertos parámetros, momento en que el atacante aprovecha y por eso hay que diseñarlo bien.
Como quiera que el fuente original no lo puedes conseguir, por lo que hay que aproximarse. Ya te sugerí un hook a la API CreateProcess y mejor a CreateProcessInternal que es indoumentada y cuya declaración en C es como sigue:
bool __stdcall CreateProcessInternalW(HANDLE hToken,
LPCWSTR lpApplicationName,
LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation,
PHANDLE hNewToken);
// "kernel32.dll", "CreateProcessInternalW"
El proceso 'iw5mp.exe' será creado en última instancia por CreateProcessInternalW. Teniendo el control de esa API mediante un Hook a la propia lanzadera original, vas a tener inmediatamente su PId a través de la estructura PROCESS_INFORMATION determinada por un puntero lpProcessInformation. De esta forma no esperas a que un bucle analice los procesos en ejecución cada cierto tiempo, sino que no esperas. En cuanto tengas el PId inyectas tu dll y listo.
En este punto puedes dudar si eres el primero en detectar la ejecución de 'iw5mp.exe', puedes no ser el primero si previamente a tu Hook a CreateProcessInternalW se te han adelantado, cosa improbable pero que puedes solventar:
1.- Deshaciendo dicho hook antes de realizar el tuyo: API UnHooker deshaciendo un Hook a la API tipo trampolín
2.- Detectando dlls indeseables: CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, 0)
3.- Usando otra lanzadera que lance a la lanzadera original inyectando el Hook a CreateProcessInternalW.
El tercer punto puede ser más atractivo, pero deberás conseguir que el uso de la lanzadera original, aún levantando el proceso 'iw5mp.exe', no cumpla su cometido. Debes tener en cuenta que tus atacantes tendrán copia de esos archivos. Conseguido esto, el truco estaría en cambiar el nombre del proceso lanzadera para que sea tu lanzadera quien lo conozca y la única que pueda encontrarlo, incluso hardcodear en tu lanzadera toda la lanzadera original. No creo que con esta técnica se adelante nadie a inyectar un proceso que ni tiene archivo en disco y cuyo nombre desconocen. Puestos a rizar el rizo, pueden usarse técnicas que suplanten al loader de windows cargando en memoria el ejecutable y lanzándolo desde ahí (RunPE), aunque sinceramente no creo que esto último sea necesario ya que es una técnica usada para esconder procesos de los mismos antivirus.
Creo que con las pautas dadas puedes solucionar el problema sin necesidad de decompilar, cambiar y recompilar la lanzadera original evitando que te ataquen,
Saludos.