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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
221  Programación / Ingeniería Inversa / API parecida a realloc en: 6 Octubre 2011, 01:48 am
me gustaría saber de que manera un programa cambia el size de un address virtual como ej 150000 teniendo un size 6000 lo cambia a 7000

me dijeron que con la API realloc, pero esta la usa el programa pero no para cambiar el size del address 150000,existe otra api o forma?


Gracias
222  Programación / Ingeniería Inversa / Duda con sección (VirtualFree) en: 1 Octubre 2011, 19:14 pm
Hola a todos, estoy intentando desempaquetar un programa, este tiene antidump,tengo la siguiente duda.

si voy a la Memoria del programa dumpeado veo lo siguiente:
Citar
Memory map
Address    Size       Owner      Section    Contains      Type   Access    Initial   Mapped as
00010000   00001000                                       Priv   RW        RW
00020000   00001000                                       Priv   RW        RW
0012C000   00001000                                       Priv   RW  Guar  RW
0012D000   00003000                         stack of mai  Priv   RW  Guar  RW
00130000   00003000                                       Map    R         R
00140000   00001000                                       Priv   RWE       RWE
00150000   00006000                                       Priv   RW        RW
00250000   00006000                                       Priv   RW        RW
00260000   00003000                                       Map    RW        RW
00270000   00016000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\unicode.nls
00290000   00041000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\locale.nls
002E0000   00041000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\sortkey.nls
00330000   00006000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\sorttbls.nls
00340000   00041000                                       Map    R         R
00390000   00001000                                       Priv   RW        RW
003A0000   00001000                                       Priv   RW        RW
003B0000   00004000                                       Priv   RW        RW

si veo el programa empaquetado veo lo siguiente:

Citar
Memory map
Address    Size       Owner      Section    Contains      Type   Access    Initial   Mapped as
00010000   00001000                                       Priv   RW        RW
00020000   00001000                                       Priv   RW        RW
0012C000   00001000                                       Priv   RW  Guar  RW
0012D000   00003000                         stack of mai  Priv   RW  Guar  RW
00130000   00003000                                       Map    R         R
00140000   00001000                                       Priv   RWE       RWE
00150000   0000A000                                       Priv   RW        RW
00250000   00006000                                       Priv   RW        RW
00260000   00003000                                       Map    RW        RW
00270000   00016000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\unicode.nls
00290000   00041000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\locale.nls
002E0000   00041000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\sortkey.nls
00330000   00006000                                       Map    R         R         \Device\HarddiskVolume1\WINDOWS\system32\sorttbls.nls
00340000   00041000                                       Map    R         R
00390000   00001000                                       Priv   RW        RW
003A0000   00001000                                       Priv   RW        RW
003B0000   00005000                                       Priv   RW        RW

el problema surge que el dumpeado intenta acceder al address: 00157E78 que lógicamente no está en el dumpeado, por lo que investigando debo liberar tal sección en la memoria con VirtualFree y luego con VirtualAlloc crearla nuevamente pero con el size correspondiente, luego de eso injertar lo que falta, el problema es que se cita lo siguiente:

Citar
en mi maquina la sección del
antidump empieza en 150000 y alli el sistema creo un heap y tiene valores
necesarios para correr el programa si solo borramos y copiamos lo del
antidump no correra


Citar
The VirtualFree function releases or decommits (or both) a region of pages within the virtual address space of the calling process.

BOOL VirtualFree(

    LPVOID lpAddress,   // address of region of committed pages 
    DWORD dwSize,   // size of region
    DWORD dwFreeType    // type of free operation
   );

Citar
The VirtualAlloc function reserves or commits a region of pages in the virtual address space of the calling process. Memory allocated by this function is automatically initialized to zero.

LPVOID VirtualAlloc(

    LPVOID lpAddress,   // address of region to reserve or commit 
    DWORD dwSize,   // size of region
    DWORD flAllocationType,   // type of allocation
    DWORD flProtect    // type of access protection
   );   

hago el siguiente injerto(aquí mi duda):

Citar
push 4000
push ???????
push 150000
call VirtualFree
nop
push 4
push 2000
push ??????
push 150000
call VirtualAlloc
nop
push 4
push 1000
push ??????
push 150000
call VirtualAlloc

(el injerto lo tomé del tutorial de ricardo narvaja)
el problema es el size no sé cuanto colocar, debido que no sé que es un heap y cuanto espacio debo colocar y por qué ese espacio, otra cosa es por que se hace dos llamados a VirtualAlloc con diferencia en el parámetro type of access protection

Si pudieran aclararme esas dudas de manera explicativa, se los agradecería demasiado,Saludos




223  Programación / Ingeniería Inversa / Buscar comandos sin FINDCMD? en: 28 Septiembre 2011, 19:06 pm
existe otra forma de encontrar comandos?

Saludos
224  Programación / Ingeniería Inversa / [Script]Script para calcular offset de un ejectuable en: 26 Septiembre 2011, 20:40 pm
Me surgió la duda de como obtener el OffsetRaw de manera manual, buscando en google todos recomendaban programas y siempre que se tocaba la palabra "fórmula o cálculo" venía con la palabra "no es necesaria por existen programas...", por eso se me ocurrió crear un script encargado de mostrar el offset raw, en la cabecera del script se puede apreciar detalladamente de forma explicativa y con ejemplos el cálculo para obtener offset raw

Los datos que entregan son:
offset RAW y la sección que corresponde el address buscado
para buscar se debe insertar el address en VA (Como lo muestra Ollydbg)

Código
  1. /*
  2.    -=================================================================-
  3.  
  4.        Script realizado por :UND3R                                      
  5.        Script para : Encontrar Offset RAW                                                                                            
  6.        Fecha : 26/09/2011                                          
  7.  
  8.                    -=[ Comentario del Script ]=-
  9.     Fórmula:
  10.     RVA: Valor relativo en memoria (Relative Value Address)                                  
  11.     VA: Valor absoluto en memoria (Value Absolute)                                                              
  12.     RAW: Dirección en el disco
  13.  
  14.     -OllyDBG Nos muestra por defecto direciones de tipo VA
  15.     VA(Value Absolute)=ImageBase+RVA    
  16.  
  17.     Ejemplo: 40101D=400000(ImageBase)+101D(RVA)
  18.  
  19.     -Si queremos saber el raw de un address ubicado en la cabezera PE (PE header)
  20.     se debe restar address-ImageBase=RVA=RAW    
  21.  
  22.     Ejemplo: 400056(VA)-400000(ImageBase)=56h(RAW)    
  23.  
  24.     -Si queremos saber el raw de un address ubicado en una sección    
  25.     se debe hacer lo siguiente:
  26.  
  27.     Obtener el RVA del addres:
  28.     Address-ImageBase=RVA
  29.  
  30.     luego a RVA restarle los siguientes valores:    
  31.     RVA-(VirtualAddress-PointerToRawData)=RAW    
  32.  
  33.     *VirtualAddress y PointerToRawData varían en cada sección
  34.  
  35.  
  36.  
  37.    -=================================================================-
  38. */
  39. VAR NOM_SECCION
  40. VAR VALOR
  41. VAR HEADER
  42. VAR CONTADOR_SEC
  43. VAR VIRTUAL_ADDRESS
  44. VAR VIRTUAL_SIZE
  45. VAR N_SECCIONES
  46. VAR MODULE_BASE
  47. VAR PUNTERO_PE
  48. INC CONTADOR_SEC //Incrementa CONTADOR_SEC en 1
  49. PREGUNTAR:
  50. ASK "Introduzca el address a calcular el Offset RAW"
  51. MOV RESULTADO,$RESULT //Mueve el resultado a la variable RESULTADO
  52. MOV VALOR,RESULTADO //Mueve RESULTADO a la variable VALOR
  53. GMI eip,MODULEBASE //Obtiene la Base del módulo
  54. MOV MODULE_BASE,$RESULT //Mueve el resultado a MODULE_BASE
  55. MOV PUNTERO_PE,MODULE_BASE //Mueve la Base del módulo a la variable PUNTERO_PE
  56. ADD PUNTERO_PE,3C //Suma 3C con PUNTERO_PE
  57. MOV PUNTERO_PE,[PUNTERO_PE] //Mueve el contenido dentro de PUNTERO_PE a PUNTERO_PE
  58. ADD PUNTERO_PE,MODULE_BASE  //Suma PUNTERO_PE con MODULE_BASE
  59. MOV N_SECCIONES,PUNTERO_PE  //Mueve PUNTERO_PE a N_SECCIONES
  60. ADD N_SECCIONES,6 //Suma N_SECCIONES con 6 para obtener el número de secciones
  61. MOV N_SECCIONES,[N_SECCIONES],1 //Mueve el primer byte del contenido dentro de N_SECCIONES a N_SECCIONES
  62. ADD PUNTERO_PE,F8 //Suma PUNTERO_PE con F8
  63. MOV HEADER,PUNTERO_PE //Mueve PUNTERO_PE a la variable HEADER
  64. ADD HEADER,C //Suma C a la variable HEADER
  65. MOV HEADER,[HEADER] //Mueve lo que está dentro de HEADER a la variable HEADER
  66. ADD HEADER,MODULE_BASE
  67. CMP RESULTADO,MODULE_BASE //Compara si el valor introducido con el valor de la ImageBase
  68. JB  ERROR_ADDRESS //Si el valor introducido es menor salta a ERROR_ADDRESS
  69. CMP RESULTADO,HEADER //Compara el valor introducido con el inicio de la primera sección
  70. JB CALCULAR_1 //Si el valor introducido es menor hará el cálculo correspondiente de un address ubicado en la sección PE header
  71. BUCLE:          //Bucle encargado de buscar la sección que corresponde el valor introducido
  72. ADD PUNTERO_PE,8
  73. MOV VIRTUAL_SIZE,[PUNTERO_PE]
  74. ADD PUNTERO_PE,4
  75. MOV VIRTUAL_ADDRESS,[PUNTERO_PE]
  76. ADD VIRTUAL_SIZE,VIRTUAL_ADDRESS
  77. ADD VIRTUAL_SIZE,MODULE_BASE
  78. SUB VIRTUAL_SIZE,1
  79. CMP RESULTADO,VIRTUAL_SIZE
  80. JB CALCULAR_2
  81. CMP CONTADOR_SEC,N_SECCIONES
  82. JA ERROR_ADDRESS
  83. INC CONTADOR_SEC
  84. ADD PUNTERO_PE,1C
  85. JMP BUCLE
  86. CALCULAR_1:     //Fórmula de address ubicada en PE header
  87. SUB VALOR,MODULE_BASE
  88. MOV NOM_SECCION,"PE header"
  89. JMP SALIR
  90. CALCULAR_2:  //Fórmula de address ubicada en una sección
  91. ADD PUNTERO_PE,8
  92. MOV NOM_SECCION,PUNTERO_PE
  93. SUB NOM_SECCION,14
  94. MOV NOM_SECCION,[NOM_SECCION],8
  95. BUF NOM_SECCION
  96. STR NOM_SECCION
  97. LOG NOM_SECCION
  98. MOV PUNTERO_PE,[PUNTERO_PE]
  99. SUB VALOR,MODULE_BASE
  100. SUB VIRTUAL_ADDRESS,PUNTERO_PE
  101. SUB VALOR,VIRTUAL_ADDRESS
  102. JMP SALIR
  103. ERROR_ADDRESS:
  104. MSG "ERROR:Address introducida incorrecta"
  105. JMP PREGUNTAR
  106. SALIR:
  107. EVAL "VA:[{RESULTADO}]=Offset RAW:[{VALOR}h] sección:{NOM_SECCION}"
  108. MSG $RESULT
  109. ret
  110.  

Saludos a Tinkipinki que nunca me hizo un reto, tomaré este script como reto ya que de forma indirecta lo hizo.
225  Programación / Ingeniería Inversa / realizar resta DECIMAL con OllyScript en: 26 Septiembre 2011, 17:39 pm
Como puedo realizar una resta decimal con ollydbg, ya que el comando SUB lo hace de manera hexadecimal

Saludos
226  Programación / Ingeniería Inversa / duda script tracear con condición? en: 23 Septiembre 2011, 19:29 pm
Hola como podría tracear desde ollyscript con la condición 1 tildada es decir eip esta en el rango de 580000 y 7FFFFF

Gracias
227  Programación / Ingeniería Inversa / [Script]HBP bypass excepciones en: 23 Septiembre 2011, 07:14 am
Hola a todos, les dejo un simple script para aquellos que se inician en esto, consiste en un script para colocar HBP tanto como read access execute, la gran ventaja es que estos HBP son borrados si se producen excepciones con el fin de no ser detectados una vez retomada la excepción se vuelven a colocar:

Código
  1. var AUX
  2. VAR TIPO
  3. var KIUSER
  4. var ZWCONT
  5. var HBP
  6. gpa "KiUserExceptionDispatcher", "ntdll.dll"
  7. mov KIUSER, $RESULT
  8. bp KIUSER
  9. gpa "ZwContinue", "ntdll.dll"
  10. mov ZWCONT, $RESULT
  11. bp ZWCONT
  12. ADDRESS:
  13. ask "Dirección del HBP"
  14. cmp $RESULT, 0
  15. je ERROR
  16. mov HBP, $RESULT
  17. PREGUNTA:
  18. ASK "Tipo de HBP,r-w-x"
  19. MOV TIPO,$RESULT
  20. CMP TIPO, "r"
  21. JE INICIO
  22. CMP TIPO, "w"
  23. JE INICIO
  24. CMP TIPO, "x"
  25. JE INICIO
  26. JMP ERROR2
  27. INICIO:
  28. EVAL "{TIPO}"
  29. bphws HBP, $RESULT
  30. TRABAJO:
  31. eob COMPROBAR
  32. run
  33. COMPROBAR:
  34. cmp eip,KIUSER
  35. je QUITAR
  36. cmp eip,ZWCONT
  37. je BREAKPOINT
  38. cmp eip,AUX
  39. je RESTAURAR
  40. jmp SALIR
  41.  
  42. QUITAR:
  43. bphwc HBP
  44. jmp TRABAJO
  45.  
  46. BREAKPOINT:
  47. mov AUX,esp
  48. add AUX,4
  49. mov AUX,[AUX]
  50. add AUX,0b8
  51. mov AUX,[AUX]
  52. bp AUX
  53. jmp TRABAJO
  54. RESTAURAR:
  55. bc AUX
  56. jmp INICIO
  57.  
  58. ERROR:
  59. msg "Dirección incorrecta"
  60. jmp ADDRESS
  61. SALIR:
  62. msgyn "HBP encontrado,intentar nuevamente?"
  63. cmp $RESULT,1
  64. je INICIO
  65. ret
  66. ERROR2:
  67. MSG "Tipo de HBP incorrecto"
  68. JMP PREGUNTA

Es muy básico por lo que si a alguien se le ocurre alguna idea la integramos de inmediato, Saludos
228  Programación / Ingeniería Inversa / quien me puede subir ildams?? en: 23 Septiembre 2011, 03:15 am
Muchas gracias, por su ayuda
229  Programación / Ingeniería Inversa / Net reflector? en: 23 Septiembre 2011, 03:13 am
Quién tiene la 7.5?, con serial mejor si me pueden mandar un privado

Saludos y gracias
230  Seguridad Informática / Seguridad / Alguna vez firefox les ha detectado algún virus en su análisis? en: 20 Septiembre 2011, 20:53 pm
pues eso, cada vez que descargo aplicaciones o programas firefox nunca me ha detectado algo en su análisis y a ustedes?
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines