elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  RTL_USER_PROCESS_PARAMETERS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: RTL_USER_PROCESS_PARAMETERS  (Leído 5,058 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
RTL_USER_PROCESS_PARAMETERS
« en: 22 Julio 2014, 07:02 am »

Hi!
Tengo la estructura RTL_USER_PROCESS_PARAMETERS, de la cual quiero sacar la linea de comandos,, eso lo tengo, esta en CommandLine  pero si quisiera sacar la cantidad de argumentos como podría hacerlo?

Código
  1. Structure RTL_USER_PROCESS_PARAMETERS at 002D1528
  2. Address   Hex dump     Decoded data             Comments
  3. 002D1528  AC090000     DD 000009AC              ; MaximumLength = 2476.
  4. 002D152C  AC090000     DD 000009AC              ; Length = 2476.
  5. 002D1530  01000000     DD 00000001              ; Flags = 1
  6. 002D1534  00000000     DD 00000000              ; DebugFlags = 0
  7. 002D1538  00000000     DD 00000000              ; ConsoleHandle = NULL
  8. 002D153C  00000000     DD 00000000              ; ConsoleFlags = 0
  9. 002D1540  00000000     DD 00000000              ; StdInputHandle = NULL
  10. 002D1544  00000000     DD 00000000              ; StdOutputHandle = NULL
  11. 002D1548  00000000     DD 00000000              ; StdErrorHandle = NULL
  12. 002D154C  3A00         DW 3A                    ; CurrentDir_Size = 58.
  13. 002D154E  0802         DW 208                   ; CurrentDir_Maxsize = 520.
  14. 002D1550  C8202D00     DD 002D20C8              ; CurrentDir = "C:\Users\Central\Desktop\MRS\"
  15. 002D1554  0C000000     DD 0000000C              ; CurrentDirectoryHandle = 0000000C
  16. 002D1558  FC03         DW 3FC                   ; DllPath_Size = 1020.
  17. 002D155A  FE03         DW 3FE                   ; DllPath_Maxlen = 1022.
  18. 002D155C  C8192D00     DD 002D19C8              ; DllPath = "C:\Users\Central\Desktop\MRS;;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files\PC Connectivity Solution\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\AT"
  19. 002D1560  4800         DW 48                    ; ImagePath_Size = 72.
  20. 002D1562  4A00         DW 4A                    ; ImagePath_Maxlen = 74.
  21. 002D1564  C61D2D00     DD 002D1DC6              ; ImagePath = "C:\Users\Central\Desktop\MRS\MRS.exe"
  22. 002D1568  5600         DW 56                    ; CommandLine_Size = 86.
  23. 002D156A  5800         DW 58                    ; CommandLine_Maxlen = 88.
  24. 002D156C  101E2D00     DD 002D1E10              ; CommandLine = ""C:\Users\Central\Desktop\MRS\MRS.exe" HOLA"
  25. 002D1570  10082D00     DD 002D0810              ; Environment = 002D0810
  26. 002D1574  00000000     DD 00000000              ; StartPosLeft = 0
  27. 002D1578  00000000     DD 00000000              ; StartPosTop = 0
  28. 002D157C  00000000     DD 00000000              ; Width = 0
  29. 002D1580  00000000     DD 00000000              ; Height = 0
  30. 002D1584  00000000     DD 00000000              ; CharWidth = 0
  31. 002D1588  00000000     DD 00000000              ; CharHeight = 0
  32. 002D158C  00000000     DD 00000000              ; ConsoleTextAttributes = 0
  33. 002D1590  81000000     DD 00000081              ; WindowFlags = 81
  34. 002D1594  0A000000     DD 0000000A              ; ShowFlags = 0A
  35. 002D1598  4800         DW 48                    ; Title_Size = 72.
  36. 002D159A  4A00         DW 4A                    ; Title_Maxlen = 74.
  37. 002D159C  681E2D00     DD 002D1E68              ; Title = "C:\Users\Central\Desktop\MRS\MRS.exe"
  38. 002D15A0  1E00         DW 1E                    ; DesktopName_Size = 30.
  39. 002D15A2  2000         DW 20                    ; DesktopName_Maxlen = 32.
  40. 002D15A4  B21E2D00     DD 002D1EB2              ; DesktopName = "WinSta0\Default"
  41. 002D15A8  0000         DW 0                     ; ShellInfo_Size = 0
  42. 002D15AA  0200         DW 2                     ; ShellInfo_Maxlen = 2
  43. 002D15AC  D21E2D00     DD 002D1ED2              ; ShellInfo = ""
  44. 002D15B0  0000         DW 0                     ; RuntimeData_Size = 0
  45. 002D15B2  0000         DW 0                     ; RuntimeData_Maxlen = 0
  46. 002D15B4  00000000     DD 00000000              ; RuntimeData = NULL
  47.  

Como podrán ver, hay un argumento: "HOLA", la cadena es Unicode, así que no me sirve buscar '\0', aunque también esta CommandLine_Size y  CommandLine_Maxlen, yo preciso saber si se recibió al menos un argumento..

Gracias! Saludos!  ;D

PD: Ya que estamos, si alguien resuelve como sacar solo el argumento que tire el dato, aclaro por las dudas.. en el dump muestra
Citar
"C0:0\0U0s0e0r0s0\0C0e0n0t0r0a0l0\0D0e0s0k0t0o0p0\0M0R0S0\0M0R0S0.0e0x0e0"0H0O0L0A"
, por eso pido consejo..


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #1 en: 22 Julio 2014, 09:20 am »

Podes usar CommandLineToArgvW.

Si es Unicode el fin de la cadena es un doble 0  ;D


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #2 en: 22 Julio 2014, 20:06 pm »

Bien! Eso funciono.. solo que me seria mucho mejor sin apis.. (no aclare de entrada, mal yo)

Saludos!  ;D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #3 en: 22 Julio 2014, 20:26 pm »

Bueno, tenes el codigo en assembly  ::) Lo unico que hace es trabajar con una ristra de bytes mas conocidos como cadenas  ;D

PD. Ahi tenes un UNICODE_STRING, asi que usa siempre el campo de tamaño correspondiente, no tiene que ser una cadena terminada en 0 a la fuerza.
« Última modificación: 22 Julio 2014, 20:28 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #4 en: 22 Julio 2014, 21:24 pm »

Citar
Bueno, tenes el codigo en assembly  ::) Lo unico que hace es trabajar con una ristra de bytes mas conocidos como cadenas  ;D

PD. Ahi tenes un UNICODE_STRING, asi que usa siempre el campo de tamaño correspondiente, no tiene que ser una cadena terminada en 0 a la fuerza.

O sea... a manoplas  :xD
Pero.. el campo CommandLine_Size = 86. No corresponde con la información, a menos que cuente todos los 0's entre letra y letra, ahí es mas parecido si.. :huh:

Saludos! Gracias!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #5 en: 22 Julio 2014, 21:35 pm »

¿Y que queres? O API o a mano, otra no queda  ;D Capaz alguien ya lo hizo, busca por ahi, alguna RTL ...

El campo coincide exactamente, es el tamaño en BYTEs y en Unicode cada caracter ocupa dos BYTEs, son 43 caracteres y 86 bytes (no incluye 0 terminador).
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #6 en: 22 Julio 2014, 22:25 pm »

Citar
¿Y que queres? O API o a mano, otra no queda  ;D Capaz alguien ya lo hizo, busca por ahi, alguna RTL ...
Ok.. ok :xD Pense que a lo mejor podía usar alguno de esos campos y llegar a la "cadena" argumento.. Solo el "HOLA"

Citar
El campo coincide exactamente, es el tamaño en BYTEs y en Unicode cada caracter ocupa dos BYTEs, son 43 caracteres y 86 bytes (no incluye 0 terminador).
Ha,,, por eso los 0's  :P

Gracias!  ;)
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #7 en: 22 Julio 2014, 22:53 pm »

Ok.. ok :xD Pense que a lo mejor podía usar alguno de esos campos y llegar a la "cadena" argumento.. Solo el "HOLA"

Tal vez podrias comparar con ImagePath ... igual podrian haber mas parametros ... asi que mejor usa la API o implementala  :silbar:
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #8 en: 22 Julio 2014, 23:14 pm »

Citar
Tal vez podrias comparar con ImagePath ... igual podrian haber mas parametros ... asi que mejor usa la API o implementala  :silbar:

Justo,, justo entre para preguntar eso.. estaba viendo que con ImagePath, ImagePath_Size, CommandLine y CommandLine_Size se puede resolver todo.. unas restas y listo.. pero.. es confiable el metodo? Mas allá que el dia de mañana cambie el PEB.. Me refiero a si es 100% seguro en todas las pc's?

Yo espero recibir un argumento o ninguno..  :rolleyes:

Saludos!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: RTL_USER_PROCESS_PARAMETERS
« Respuesta #9 en: 22 Julio 2014, 23:59 pm »

Creo que por las vias normales el ejecutable siempre es el primer parametro (argv[0]) pero es posible llamar a CreateProcess y que no sea el caso ... igual podes comparar y si la linea de comandos no contiene a la imagen asumir que desde el primer caracter es argv[1] ...
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines