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 - OrtaY

#1
 ;-) Me uno a la moción! Todo lo que sea por mejorar el foro sea bienvenido.


#2
Gracias por vuestras aportaciones, os comento mi problema:

Os cuento mis avances...

existen varios archivos de imagen en WinCE

unos tienen extensión nb0, y son ejecutados por el sistema, una especie de ejecutables camuflados o empacados

otros tienen extension bin y son mas de lo mismo, con la diferencia de que no son ejecutados directamente, sino cargados como una imagen, algo asi como las imagenes iso de un CD en una unidad virtual.


Normalmente un archivo .bin es un contenedor de archivos, los cuales pueden ser extraidos usando las herramientas adecuadas, igual que lo hariamos de un .rar con winrar. Hasta aqui todo correcto, el problema viene cuando no puedo extraer los archivos de mi fichero .bin (el que he adjuntado el enlace de descarga en el primer post)

Encontre unas utilidades que os recomiendo para analizar este tipo de ficheros, llamadas NKBINTOOLS y esto es lo que hacen:

viewbin.exe - muestra el contenido del NK.BIN
cvrtbin.exe - convierte el NK.BIN desde y a otros formatos como NK.nb0
binmod.exe - es capaz de reemplazar archivos dentro del NK.BIN
dumprom.exe - extrae todos los archivos del NK.nb0

El problema es que antes de extraer los ficheros del .bin con dumprom, es necesario convertir este fichero a uno .nb0, y a su vez para esto es necesario saber la direccion de inicio en memoria y la longitud del fichero, y cuando intento averiguar esto con viewbin.exe me lanza el siguiente error:

ViewBin... GP311_OS.bin
Missing initial signature (BOOOFF). Not a BIN file

Entonces es cuando se me ha encendido la lamparita.

He abierto el fichero GP311_OS.bin (mi fichero problema) con un editor hexagesimal, y me encuentro que el fichero en lugar de tener una signatura inicial BOOOFF tiene otra NOOOFF, pero curiosamente a continuacion vienen listados una serie de fichero tambien de extension .bin (tinynk.bin, nk.bin, drivers.bin y chain.bin) y un poco mas adelante me encuentrio ohhhh sorpresa, una signatura BOOOFF, y enconces fue cuando se me ocurrió que quizá mi arvhivo .bin fuese a su vez una imagen que contiene ficheros .bin, que a su vez contienen otros archivos, si, un poco enrevesado, pero peores cosas hemos visto, no?

Se me da por buscar más signaturas NOOOFF dentro del archivo y me encuentro, que casualidad, 4 signaturas en total, el mismo número de archivos listados .bin, asi que como veo que la información no parece codificada, se me ocurre empezar por lo mas simple, es decir, abrir el archivo GP311_OS.bin, eliminar su parte inicial hasta llegar a la primera cabecera NOOOFF e ir cortando el archivo en cuatro partes, denominadas  tinynk.bin, nk.bin, drivers.bin y chain.bin, cada parte consta de los bytes desde una cabecera NOOOFF hasta la siguiente.

La prueba de fuego era emplear las NKINTOOLS con estos ficheros y la verdad es que me ha llevado una enorme y agradable sorpresa cuando viewbin.exe me ha dado la información de mis nuevos archivos .bin sin lanzarme errores, luego cvrtbin.exe me ha convertido los archivos .bin a .nb0, y finalmente dumprom.exe me ha extraido todo el contenido completo de estos archivos!!!

Lo cierto es que este proyecto lo tenía parado desde hace dos años que lo intenté y lo di por imposible y ahora al retomarlo y conseguir extraer toda la info de la ROM, me he encontrado muy satisfecho, aunque aun me queda lograr el fin de todo esto, que es:

primero, modificar los ficheros necesarios, y hacer que estos a su vez modifiquen el registro de WinCE al ser cargados por el sistema.

segundo, volver a empacar los ficheros en imagenes .nb0, convertirlos nuevamente a .bin y finalmente aprender a ensamblarlos nuevamente en una imagen .bin concatenada de nombre GP311_OS.BIN, e incluso poder a añadir nuevos ficheros a esta imagen, como archivos de configuración y nuevas aplicaciones del sistema

tercero, modificar el bootloader (GP311_BL.NB0) para que no me lance error al comprobar el checksum  antes de cargar el nuevo fichero GP311_OS.BIN.

El mayor problema creo que reside en este ultimo punto, ya que no conozco debbuger que permitan analizar ficheros de WinCE.

Bueno, y hasta aqui mis avances, que me temo que por cuestiones de agenda tendre que dejar apartados temporalmente, a ver si cuando tenga un ratillo continuo con esto y quien sabe, si llego a algo mas, hacer un tutorial al respecto, ya que la informacion al respecto es muy escasa.

Si quereis conocer mas de mi anterior proyecto en WinCE escrito a mediados de 2009, y de como sacarle partido a un GPS de 60 euros y convertirlo en un "bicharraco", os dejo un enlace a continuación, aunque esto si es más propio de la sección de GPS, :)

http://www.forocoches.com/foro/showthread.php?t=1318592


Saludos, Ortay















#3
Hola a todos, alguien que tenga experiencia en la creación y modificación de imagenes ROM de Windows CE?

Os comento, tengo una pna que usa winCE y quisiera modificar algunos aspectos del sistema operativo, basicamente algunos valores del registro para que actualice el huso horario, pero resulta que este dispositivo tiene el sistema operativo alojado en una memoria interna que no permite la escritura en modo usuario.

El problema es que todos los cambios que hago en el registro o los archivos copiados, modificados o eliminados, solo lo están en memoria, de modo que tras apagar y encender el dispositivo todo sigue como estaba antes.

La única forma de modificar datos en el sistema, es hacerlo mediante la actualización del firmware, siguiendo unos pasos concretos y empleando unos archivos que contienen la nueva imagen del sistema operativo.

Esta ROM consta de un archivo lanzadera o bootloader de extensión .nb0 y otro que es la propia imagen del sistema, con extensión .bin

Ninguno de los dos son archivos con cabecera .PE, por lo que el único análisis al que he podido someterlos es a un HexEditor, y la verdad es que no sé como extraer los archivos de la imagen, para modificarlos y volverlos a ensamblar en la imagen.

He probado RAW_NB0_XIP_TOOL y no consigo extraer nada.

Alguien que tenga experiencia en ingenieria inversa en Win CE  que me pueda echar una mano o me indicar por donde seguir, se lo agradecería enormemente.

Si necesitan los archivos para echarles un vistazo, ahí van:

http://www.megaupload.com/?d=4MVU5ZJ7

Gracias por leerlo y ojalá puedas ayudarme :)

NOTA. Este hilo lo pongo aquí y no en dispositivos portatiles, ya que el asunto base es hacer ingenieria inversa al sistema operativo WinCE, y porque en los foros de dispositivos portatiles no hay nada al respecto. Pero que si debe ser trasladado a otro subforo, lo entiendo.
#4
Problema al re-empacar reempacar volver a empacar UPX RESUELTO


Bueno, por fin he conseguido resolver este problema que me traía de cabeza y al final era una tontería!!!!!!


Gracias a los que han participado en este hilo aportando sus conocimientos e ideas.

Todo era una cuestión de flags, lo explico a continuación, por si a alguien se le presenta el mismo problema que a mí, que necesita volver a comprimir con upx un archivo desempacado manualmente.

El empacador UPX antes de iniciar la compresión, mira que no esté previamente empacado, comprobando que las primeras secciones no se llamen UPX0 y UPX1.

Pero la realidad es que a pesar de que cambiemos el nombre de estas secciones, restauremos el BaseOfCode y el BaseOfData, aunque ahora podremos volver a empacar el archivo con UPX, éste resultará un archivo inservible, y podemos darnos cuenta de esto al ver el tamaño ridículo del nuevo archivo, es obvio que hay información que no se ha empacado!

Esto ocurre porque el UPX al crear las nuevas secciones UPX0 y UPX1, le asigna valores de flags erróneos, de modo que si desempacamos manualmente y no corregimos estos errores, será imposible el re-empacado.

Aunque se podrían hacer más cambios para adecuar las flags al contenidos de las secciones, con cambiar un único valor nuestro ejecutable permitirá volver a ser empacado, así pues, cambiaremos la flag de la sección UPX0 que indica que la sección contiene datos no inicializados por otra que indique que contiene código ejecutable y datos inicializados, es decir, cambiamos la cadena E0000080 por E0000060

Con este simple byte cambiado ya podremos volver a empacar nuestro ejecutable con UPX!!!

Espero que os sea de utilidad, un saludo, OrtaY



#5
Cita de: apuromafo en  3 Noviembre 2011, 02:15 AM
pensemos que tenemos el upx, comienza algo asi

1) pushad
2) descompresion de apis
3)popad
4) salto al oep
5) en el oep!!!!!


ahora bien, desempacado, pero esta aun 1-4, debes nulificar ese sector, que en si no sera usado, luego al tomar el upx y empacarlo denuevo al oep, deberia ir denuevo al mismo entrypoint anterior, al encontrar que ya tiene Pushad, posiblemente desalinea mal o bien detecta que las apis estan ok, por lo cual no verifica las secciones ni overlay, secciones icono ni nada

por ende Como hacerlo mas rapido?
1) desempacar rapido con Pe Xplorer de heaventools
2) nulificar la sección donde antes estaba
3) volver a empacar, luego de REPARADA LA IAT
empacar y cardar la IAT denuevo.

saludos Apuromafo


He usado el Pe Explorer pero no ha podido desempacar el ejecutable original, me imagino porque ademas de estar empacado, esta protegido con armadillo v6, concretamente me lanza esto:

06.11.2011 16:37:22 : Open File: C:\A\original.exe
06.11.2011 16:37:22 : File size: 3072000 bytes.
06.11.2011 16:37:22 : Using the Plug-in subsystem...
06.11.2011 16:37:22 : Upack Unpacker Plug-in: Executing...
06.11.2011 16:37:22 : Upack Unpacker Plug-in: <Upack> The file is not Upacked.
06.11.2011 16:37:22 : Upack Unpacker Plug-in: not accomplished.
06.11.2011 16:37:22 : UPX Unpacker Plug-in: Executing...
06.11.2011 16:37:22 : UPX Unpacker Plug-in: <UPX> The file is not UPXed.
06.11.2011 16:37:22 : UPX Unpacker Plug-in: not accomplished.
06.11.2011 16:37:22 : The Plug-in subsystem finished.
06.11.2011 16:37:22 : MS-DOS Header Size: 0040h
06.11.2011 16:37:22 : MS-DOS Header: OK
06.11.2011 16:37:22 : Next Header OFFSET: 0100h
06.11.2011 16:37:22 : PE Signature: OK
06.11.2011 16:37:22 : Calculating Checksum: SUCCESS (Header's Checksum: 002F023Ch / Real Checksum: 002F023Ch)
06.11.2011 16:37:22 : EOF Position: 002EE000h  (3072000)
06.11.2011 16:37:23 : Error! (Step: Examining Exports)
06.11.2011 16:37:23 : Precompiling Resources...
06.11.2011 16:37:23 : Errors detected! Opening file in SAFE MODE...
06.11.2011 16:37:23 : Warning! Import section follows the Resource section.
06.11.2011 16:37:23 : Done.


Por tanto lo he desempacado manualmente (dumpeado y reparacion IAT, quedando un ejecutable que funciona perfectamente) luego he rellenado con ceros toda la region del pushad, he cambiado el nombre de las secciones UPX0 y UPX1 por .code y .data, he actualizado el BaseCode, y ya ni el RDG me detecta el UPX, pero cuando lo intento volver a empacar con UPX, me tira un archivo ridiculamente pequeño que por supuesto no es funcional.

El original empacado pesa 3mb, el desempacado 10mb y el re-empacado solo pesa 119kb!

He probado con otros crackmes empacados con UPX y armadillo y pasa lo mismo.

Por tanto, sigo sin conseguir que el desempacado manual pueda volver a ser empacado con UPX, existe alguna forma de modificar las secciones o algun truco para que el empacado UPX sea viable?

Gracias por los papers que me has recomendado, pero no esta en ellos la solucion a mi problema, pero me ha gustado tu tuto del peid customizado :)

Si alguien se le ocurre algo que me ayude, se lo agradeceria enormemente.

Un saludo, OrtaY
#6
Cita de: .:UND3R:. en  2 Noviembre 2011, 17:33 PM
Si desempacamos de manera manual por lo general no obtendremos el archivo original (secciones, PE header, tamaño) desempacado con el mismo software, ya que quieres volverlo a empacar por tan solo el peso, podrías empacarlo con otro packer como Aspack, esa es una opción que se me ocurre, sin más que decirte espero que sea de ayuda o idea mi comentario

Saludos

Gracias  Und3r, pero prefiero intentarlo de forma manual, de todos modos te comento que probe aspack2.4 y lanza "unkown error" antes de finalizar el proceso, quiza por falta de memoria del equipo.
#7
Gracias Apuromafo, me pondré a ello, y en cuanto tenga resultados positivos, los publico, por cierto, conoces algún tutorial al respecto, sobre reparar manualmente archivos desempacados tambien manualmente, estuve revisando todos los tutos de ricardo pero no encontre nada que se adapte a mi caso.

Saludos, OrtaY
#8
CitarDisculpa mi intromisión pero para que quieres reempacarlo en UPX?

Saludos

En un principio era para bajarle al archivo de mas de 10mb a menos de 3, pero también me interesa aprender a desempacar UPX de forma manual pero dejando un archivo realmente desempacado, no una ristra de secciones unidas, que incluso el RDG sigue detectando el UPX en el archivo desempacado.

Y esa es justamente mi pregunta, es posible desempacar un archivo protegido y comprimido por armadillo v6 standard protection y UPX, pero obteniendo un ejecutable realmente desempacado, con sus secciones originales?

Gracias :)
#9
Gracias Enko por contestar,

te comento que no puedo comparar las secciones del desempacado manual y el automatico porque el archivo en cuestion no he podido desempacarlo automaticamente, ya que es un armadillo v.6.

El lenguaje en que esta programado es Microsoft Visual C++ segun el RDG

He puesto este crackme como ejemplo porque al no tener armadillo si he podido desempacarlo manualmente y de forma automatica, y ahi me he dado cuenta que efectivamente faltaban sesiones o estaban unidas, tambien cabe destacar que el reempacado del manual pesa 53kb mientras que el reempacado del automatico pesa 168kb.

Como puedo evitar que se pierdan o unan esas sesiones al volverlo a comprimir con upx? En realidad no me importa que las sesiones sean distintas, yo lo que quiero es que el ejecutable siga funcionando despues de volverlo a empacar.

Algun tutorial o programa que me ayude con esto. He buscado por google y por esta pagina pero no he encontrado solucinarlo.



#10
Para explicar de forma mas grafica el problema, he utilizado como ejecutable de ejemplo el crackme del tutorial:

874-Desempaquetando un UPX para RE-Newbies por Shaddy

En la imagen pueden verse las secciones de los distintos ejecutables:

Archivo original
Desempacado automatico
Desempacado manual
Re-empacado del desempacado automatico
Re-empacado del desempacado manual (este es el que no funciona)