Pense que estabas codificandolo,
Primero el codigo en ensamblador es para generar una entera imagen PE, lo que necesitas es un tipo de shellcode, un codigo independiente,
sin cabeceras , y que pueda valerse sin la informacion de las cabeceras y directorios de una imagen PE. en tu codigo usas importaciones directas
del directorio lo que necesitas es obtener los puntero a la funciones escaneando la tabla de exportaciones del modulo, este articulo lo explica bien
http://blog.harmonysecurity.com/2009_06_01_archive.html
tambien vi algunos codigos aqui en el foro.
notepad con una nueva sección de tamano 0x300 y aligneado a 0x400 para que puedas verificar como funciona lo de la alineacion.
http://www.sendspace.com/file/g3ke1a
el campo AddressOfEntryPoint de una imagen PE, es el que indica donde se encuentra la primera instruccion del ejecutable, este es
una direccion virtual. yo he agregado unos NOPs luego un ret, lo que debes hacer es agregar tu codigo en tal punto.
Debido a que yo no se si esto es para aprender como funciona, para usarlo en malware ,etc. mas cosas pueden ser hechas, por ejemlo
si es para malware entonces debes de deriguir al original punto de entrada para que todo funcione bien, de esta manera primero se
ejecutara tu codigo luego se redireccionara al original punto y el programa se ejecutara normalmente.
Todo esto es explicado en el enlace al manual que deje, y es posible que quieras mirar el proposito de BaseOfCode de una imagen PE,
No lo se depende de lo que quieras.
Ademas, hay muchas maneras de hacer este tipo de cosas.
para malware agregar una sección de esta manera no es nada y muy sospechoso, yo prefiero alargar la sección de codigo,
no cambiar el punto de entrada, en lugar buscar por un conjunto de instrucciones que nos ayude a ocultar la infeccion, por
ejemplo un JMP directo o indirecto, CALL lo mismo que JMP, RET, o algun salto condicional que no sea corto y redireccionarlo a
nuestro codigo, luego restaurarlo.