Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - .:UND3R:.

#1671
Ingeniería Inversa / duda con mov
6 Octubre 2011, 17:17 PM
hola tengo una duda, como puedo mover 66 C7 05 5B F0 45 00 EB 12  (9bytes con mov), solo conozco word y dword


Saludos
#1672
Hola tengo la siguiente duda

si en memoria virtual tengo 150000 con size 3000 si quisiera dejarlo el address 150000 con size 4000 que parámetros debería pushear para llamar a realloc?

Gracias
#1673
Noticias / Re: Fallece Steve Jobs
6 Octubre 2011, 03:18 AM
Que descanse en paz

condolencias para Steve jobs
#1674
Ingeniería Inversa / Re: API parecida a realloc
6 Octubre 2011, 02:40 AM
efectivamente está el heap, el problema es que no es VirtualAlloc ya que nunca libera tal address, tampoco realloc, ya que se detuvo pero nunca  haciendo referencia a 150000, probé con GlobalReAlloc y tampoco(nunca pasó por tal API), lo que quiero hacer es saltear un antidump que está en 150000 con size A000 pero en el entry point parte con 6000 es esa mi duda de que manera aumenta el size, ya que de las formas mencionadas no funcionaron.

para saltar tal intidump se podría utilizar realloc en el dumpeado y crear un injerto que copie en el size agregado el code faltante?

un método muy interesante que me comentaron y lei fue seguir el retorno de VirtualAlloc cuando este tiene como parámetro el address NULL modificar eax para que apunte a una sección creada por uno mismo, pero no me es efectiva en este caso ya que en ningún momento se utiliza VirtualAlloc en 150000

Saludos
#1675
Ingeniería Inversa / API parecida a realloc
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
#1676
Cita de: MCKSys Argentina en  5 Octubre 2011, 22:24 PM
Si te refieres a como funciona internamente, podrias usar Olly u IDA para analizar el codigo.

Sino, pues, apuromafo te ha dado el tip ideal...  :P

Andabas desaparecido, jeje
#1677
podrías subir los virus por favor


Saludos
#1678

es un Unpackme, es el siguiente:
http://www.megaupload.com/?d=0BJWO39K

tiene stolen bytes, Iat redireccionada y antidump



aquí está todo reparado menos el antidump:
http://www.megaupload.com/?d=XUXRRDQ8

(el antidump lo he podido reparar y funciona perfectamente, pero quiero repararlo de la forma mencionada en el post, si pudieras ayudarme)

lo único que debes hacer es detenerte en el OEP(falso) ubicado en 4271b5
puede usar el siguiente script para los hardware on execution:

http://foro.elhacker.net/ingenieria_inversa/scripthbp_bypass_excepciones-t339827.0.html

Saludos

estando detenido ahí en el original unpack, podrás ver la sección creada


EDIT: el dump no le cambié el EP hacia el injerto debe ser 004BA000
#1679
Sigo con problemas, he hecho lo siguiente:

Tengo el Unpackme original, detenido en el OEP y tiene la siguiente memoria virtual:

Memory map, item 6
Address=00150000
Size=0002A000 (172032.)
Owner=         00150000 (itself)
Section=
Type=Priv 00021004
Access=RW
Initial access=RW

Citarvolco con pupe la sección y la injerto como última sección en el programa:

Pe header
code
..
..
.
Section(490000)


ahora tomo el dumpeado y hago que parta desde aquí:
Citar004BA000    60              PUSHAD
004BA001    BE 00001500     MOV ESI,150000
004BA006    BF 00004900     MOV EDI,Copia_de.00490000
004BA00B    B9 FF9B0000     MOV ECX,9BFF
004BA010    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
004BA012    68 00400000     PUSH 4000
004BA017    68 00700200     PUSH 27000
004BA01C    68 00001500     PUSH 150000
004BA021    FF15 A4094600   CALL DWORD PTR DS:[<&kernel32.VirtualFree>]        ; kernel32.VirtualFree
004BA027    90              NOP
004BA028    6A 04           PUSH 4
004BA02A    68 00200000     PUSH 2000
004BA02F    68 00A00200     PUSH 2A000
004BA034    68 00001500     PUSH 150000
004BA039    FF15 A8094600   CALL DWORD PTR DS:[<&kernel32.VirtualAlloc>]       ; kernel32.VirtualAlloc
004BA03F    90              NOP
004BA040    6A 04           PUSH 4
004BA042    68 00100000     PUSH 1000
004BA047    68 00A00200     PUSH 2A000
004BA04C    68 00001500     PUSH 150000
004BA051    FF15 A8094600   CALL DWORD PTR DS:[<&kernel32.VirtualAlloc>]       ; kernel32.VirtualAlloc
004BA057    90              NOP
004BA058    BF 00001500     MOV EDI,150000
004BA05D    BE 00004900     MOV ESI,Copia_de.00490000
004BA062    B9 FFA70000     MOV ECX,0A7FF
004BA067    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
004BA069    61              POPAD
004BA06A    BB 00E0FD7F     MOV EBX,7FFDE000
004BA06F    BC BCFF1200     MOV ESP,12FFBC
004BA074    BD C0FF1200     MOV EBP,12FFC0
004BA079  - E9 32D1F6FF     JMP Copia_de.<ModuleEntryPoint>

esto lo que hace es copiar todo lo que está en el dumpeado en memoria 150000 lo sobre escribe en la sección section copiando el heap en tal sección, una vez hecho eso borra la sección 150000 y luego la crea nuevamente 150000 con size 2A000 luego de eso copia todo lo que está en la sección section a 150000

por lógica y en resumen guarda el heap en section y luego de guardarlo crea de nuevo en memoria a 150000 y copia todo lo que está en section a 150000 pero esto no me funciona, no entiendo el por qué si tan solo copia el heap que tiene estando en el OEP y lo vuelve a escribir agregando adicionalmente lo que falta, si alguien me pudiera decir si este procedimiento esta correcto se lo agradecería

Saludos
#1680
Todo mucho más aclarado, gracias apuromafo  ::)