En mi caso opino que la mejor forma es declararlas cuando las necesites, solo en el bloque que vayan a ser usadas. Y me baso en un par de principios:
1- De esta forma la variable sera usada solo en el bloque de código actual y la memoria asociada sera disposable una vez salgas de dicho bloque
2- Mejor estructuracion de codigo, proteccion de variables y reutilizacion de nombres
3- Mucho mejor para el que escribe y para el que lee tu código
4- Si se puede...por que no?
1- De esta forma la variable sera usada solo en el bloque de código actual y la memoria asociada sera disposable una vez salgas de dicho bloque
2- Mejor estructuracion de codigo, proteccion de variables y reutilizacion de nombres
3- Mucho mejor para el que escribe y para el que lee tu código
4- Si se puede...por que no?
:
) es bueno aclarar (aunque esta claro que es solo demostrativo el code) que el método que ha expuesto Elektro es un método que trabaja a nivel de usuario (Ring3) y bien sencillo de sobrepasar, sobre todo para los malware writers que se buscan la vida de las formas mas complicadas e innovadoras para ejecutar sus creaciones, ademas que muchos usan también API's mas cerca del kernel directamente ej NtCreateProcess/ZwCreateProcess, etc (la linea descendiente de llamadas es mas profunda) y la mas indicada no seria CreateProcess sino ZwCreateSection, pero bueno... Por otra parte tambien es de aclarar que se debería hacer el hook no solo en "explorer.exe" sino a todos los procesos activos y los nuevos que se creen en adelante para tener controlados todos los posibles escenarios donde se pudiera ejecutar el "malware". 