send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[MASM] AmpliarSeccion

  • 0 Respuestas
  • 1752 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Junio 17, 2013, 08:54:30 am »
Enconte este code posteado en GedZac, pero como ya no hay actividad. Lo reposteo aqui. No funciona con exes de 64bits
Código: ASM
  1. AmpliarSeccion proc PFilePE:dword,PSizeFile,minSize:dword
  2. LOCAL NumSections
  3. LOCAL NumSectionsRestante
  4. LOCAL PArrySections
  5. LOCAL FileAlignment
  6. LOCAL PFileCopia
  7. LOCAL SeccionEjecu
  8. LOCAL NewSize
  9.  
  10.  
  11. mov ebx,PFilePE
  12. cmp word ptr[ebx],5A4DH
  13. jne NoExe
  14. mov edx,[ebx+3Ch]
  15. lea edx,[edx+ebx]
  16. cmp dword ptr[edx],00004550H;Compruevo El PE signature
  17. jne NoExe
  18. mov ecx,[edx+3Ch]
  19. mov FileAlignment,ecx
  20.  
  21. Sizing: ;Calculando el tamaño que se ampliara
  22. push edx
  23.  
  24. xor edx,edx
  25. mov eax,minSize
  26. div ecx
  27. test edx,edx
  28. jz resto
  29. inc eax
  30. resto:
  31.  
  32. mul ecx
  33. mov minSize,eax
  34.  
  35. pop edx
  36. movzx eax,word ptr[edx+6]
  37. mov NumSections,eax
  38. mov ecx,eax
  39.  
  40. ;Pido memoria para almacenar los datos de cada seccion
  41. shl eax,4;Murtiplico por 16
  42. push eax
  43. push 0
  44. call new
  45. mov PArrySections,eax
  46.  
  47. lea edx,[edx+0f8h];Tabla de Secciones
  48. mov ebx,eax;PArrySections
  49.  
  50. bucle:
  51. dec ecx
  52.  
  53. mov [ebx],edx;PName
  54. mov eax,[edx+14h];PointerToRawData
  55. mov [ebx+4],eax
  56. mov eax,[edx+10h];SizeOfRawData
  57. mov [ebx+8],eax
  58. mov eax,[edx+24h];Characteristics
  59. mov [ebx+0Ch],eax
  60.  
  61. lea edx,[edx+28h]
  62. add ebx,10h
  63. test ecx,ecx
  64. jnz bucle
  65.  
  66.  
  67. push 10h;SizeEstruc
  68. push 4;CampoOrdenar
  69. push NumSections;Size
  70. push PArrySections;PArrySections
  71. Call ordenar_struc
  72.  
  73.  
  74. mov ecx,NumSections
  75. shl ecx,4
  76. mov ebx,PArrySections
  77.  
  78. NoEjecutable:
  79. test ecx,ecx
  80. jz NoExe
  81. sub ecx,10h
  82. test dword ptr[ecx+ebx+0Ch],20000000h;Busca la seccion que tiene la marca de ejecutable
  83. jne NoEjecutable
  84. mov SeccionEjecu,ebx
  85.  
  86. mov eax,[NumSections]
  87. shl eax,4
  88. sub eax,ecx
  89. mov NumSectionsRestante,ecx
  90.  
  91.  
  92. mov eax, PSizeFile
  93. mov eax,dword ptr[eax]
  94. add eax,minSize
  95.  
  96. mov NewSize,eax
  97. push eax
  98. push 0
  99. call new
  100. mov PFileCopia,eax
  101.  
  102. mov ebx,SeccionEjecu
  103. mov edx,[ebx+4];Base de la seccion
  104. add edx,[ebx+8];Tamaño de la seccion en el archivo
  105.  
  106. push edx
  107. push PFilePE
  108. push eax
  109. call CopyMem ;Copio la parte del archivo que no cambiara su posicion
  110.  
  111.  
  112. mov eax,edx
  113. mov ecx,PSizeFile
  114. mov ecx,[ecx]
  115. sub ecx,edx;calculo lo que queda por copiar
  116.  
  117.  
  118. add eax,minSize
  119. add eax,PFileCopia
  120. add edx,PFilePE
  121.  
  122. push ecx
  123. push edx
  124. push eax
  125. call CopyMem
  126.  
  127.  
  128. mov ecx,NumSectionsRestante
  129. mov eax,PFilePE
  130. mov edx,SeccionEjecu
  131. ;//Puntero a una entrada de la tabla de secciones
  132. mov ebx,[edx]
  133. sub ebx, eax
  134. add ebx,PFileCopia
  135.  
  136. mov esi,minSize
  137. add [ebx+10h],esi
  138. add edx,10h
  139.  
  140. Reubicando:
  141. ;Ajusto los punteros de PointerToRawData a la nueva posicion de las secciones
  142. sub ecx,10h
  143. mov ebx,[edx+ecx]
  144. sub ebx, eax
  145. add ebx,PFileCopia
  146. mov esi,minSize
  147. add [ebx+14h],esi
  148.  
  149. test ecx,ecx
  150. jnz Reubicando
  151.  
  152.  
  153.  
  154. mov ebx,PSizeFile
  155. mov eax,NewSize
  156. mov [ebx],eax
  157. mov eax,PFileCopia
  158.  
  159.  
  160. ret
  161. NoExe:
  162. xor eax,eax
  163. ret
  164.  
  165. AmpliarSeccion endp
  166.  
« Última modificación: Febrero 08, 2014, 05:29:11 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



[MASM] Pequeña PoC de shell remota

Iniciado por binary_death

Respuestas: 0
Vistas: 2137
Último mensaje Septiembre 01, 2013, 02:03:45 pm
por binary_death
[MASM] Hook al teclado

Iniciado por binary_death

Respuestas: 0
Vistas: 2106
Último mensaje Septiembre 01, 2013, 01:59:57 pm
por binary_death
[MASM] GetModuleFileName Example (Beginner)

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2017
Último mensaje Junio 09, 2010, 12:31:17 pm
por ANTRAX
[MASM] Shellcode RunPE

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2929
Último mensaje Junio 05, 2012, 04:44:43 pm
por ANTRAX
[MASM] File Downloader

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2230
Último mensaje Junio 05, 2012, 04:41:40 pm
por ANTRAX