Para descargar en formato .pdf y doc gracias a apuromafo:
http://www.mediafire.com/?g7eclg6czc37vev
PosWin v8
1) Herramientas
Las herramientas que debemos usar para poder lograr el objetivo de este tutorial son las siguientes:
Ollydbg modificado/parchado conocido como PARCHEADO5 o Ollydbg normal con el pluguins Break on Execution 1.1b (este lo pueden conseguir desde esta página:http://tuts4you.com/download.php?view.3123)
2) Conociendo al target o objetivo:
Según mi metodología creo que antes de tocar algún debugger u otra herramienta se debe conocer el programa en sí, saber como trabaja desde una visión generalizada
una vez instalado nos dirigimos a la ruta de su instalación:
Citar
C:\PosWin\V8\Bin
y abrimos el ejecutable "Acceso.exe"
al abrirlo nos muestra lo siguiente:
Nos fijamos que tenemos dos opciones, una es introducir el serial para poder contar con el programa sin ninguna limitación o probar la versión demo
si en este instante abrimos el administrador de procesos obviamente notaremos que se está ejecutando Acceso.exe
ahora le damos click a la DEMOSTRACIÓN y se nos abrirá un submenú
si elegimos cualquiera en mi caso Hostelería (que es el primero y me ahorro de mover el mouse )
Nos carga el programa y si nos dirigimos a acerca de nos mostrará que es la versión demo cerramos todo
3) Manos a la obra:
-Abrimos Ollydbg y seleccionamos Acceso.exe nos damos cuenta al analizar los llamados a las dll que estas son de visualbasic por lo que por eso se debe utilizar el PARCHEADO5 o el pluguins ya que estos se encargan de que cuando nos dirijamos a MEMORY (botón de Ollydbg con la letra M) si colocamos un "Memory on Access" este solo se detendrá cuando haya un "Memory on execution", no cuando haya un "on acces" o un "on write" (con el pluguins antes se debe activar desde el menú de pluguins)
lo iniciamos, al estar cargado completamente:
Tipeamos un serial falso y nos vamos a M y colocamos un Memory on Access (execution) en la sección code
luego de detenerse y tracear un buen momento, vemos que se hace un llamado a otro proceso llamado "PosWin.exe" ubicado en la misma ruta que el ejecutable Acceso
este hace el llamado a través de la API CreateProcess por lo que intentar debuggear a este ejecutable no servirá
-Si intentamos ahora abrir a PosWin.exe desde Olly notaremos que nos muestra una Alerta diciendo que se debe abrir desde Acceso por lo que este método tampoco funcionará
Solución:
-Debemos configurar a OllyDbg con la opción:
Just in time debugging, que se encarga de que cada vez que un programa no pueda soluccionar algún error este es atachado por Olly
¿y para que sirve esto?
Sencillo para poder generar un error en PosWin.exe para que cuando sea llamado por Access.exe Ollydbg tome el control
para configurarlo hacemos lo siguiente:
*Si presionan "Attach without confirmation"
su Sistema Operativo NO les preguntará si desean debuggearlo con ollydbg, este lo hará de manera automática
luego de configurar nuestro ollydbg generaremos nuestro forzado error
Abrimos PosWin.exe con Olly
y modificamos el primer OP que es PUSH 476E48 por un INT3 y esto nos quedará así:
guardamos los cambios de PosWin:
*Lo guardamos con el mismo nombre
Luego de esto cerramos todo y abrimos Acceso.exe e introducimos un serial falso, luego elegimos algún servicio del submenú y nos aparecerá un error:
le damos a duperar si es que no pusieron "Attach without confirmation"
al abrirlo debemos reparar el error para su buen funcionamiento:
luego de esto le damos F9 y nos vuelve a mostrar el cartel:
ahora buscamos referencias de texto, nos dirigimos al modulo de PosWin:
y luego:
ahora esperamos un buen tiempo ya que el programa tiene mucha referencias de textos y luego de esperar nos aparece lo siguiente:
y si buscamos detalladamente encontraremos algo muy interesante:
Por lo que si ahora nos dirigimos ahí con click derecho en ->follow to dissambler
Notaremos más arriba algunos saltos interesantes, anotemos el más lejano y sospechoso, en este caso:
01155167
Cerramos todo e iniciamos Acceso normalmente y seleccionamos la opción DEMO ya que deducimos que en la parte de comprobación de licencia pasa de todas formas por demo ya que esta tiene dos opciones entre las más importantes DEMO:PRN NO o está REGISTRADO
-nos mostrará el error por lo que tendremos que repararlo nuevamente, luego de esto nos dirigiremos a 01155167 y colocaremos los Breakpoint a los saltos cercanos incluyendo 01155167
luego presionamos F9, tendremos que pasar por varias excepciones hasta que nos aparezca la siguiente ventana:
Le damos aceptar y se detiene en el salto 01155167:
Si presionamos follow (click derecho-> follow) nos daremos cuenta que si saltara se dirigirá a REGISTRADO
por lo que debemos reemplazarlo por un jmp para que siempre salte:
luego si traceamos de nuevo notaremos otra comprobación por lo que esta deberemos eliminarla con NOPS:
y si guardamos los cambios al iniciar nos dirigimos a acerca de nos quedará más o menos así:
4) Ajustes:
!!Cada vez que queramos Iniciar el programa, por obligación debemos iniciar Acceso pero cada vez nos aparecerá la opción de usar demo o introducir el serial para solucionar este problema estético, visual haremos lo siguiente:
-Abrimos Acceso.exe, luego abrimos ollydbg y le damos a attach
selececcionamos obviamente a Acceso
-Esperamos un poco que carguen los módulos y luego de esperar apretamos F7
-nos dirigimos a M y le damos "Memory on Access" a la sección code
y presionamos el boton usar demo y se nos detendrá en un opcode antes de un jump, este jump se encarga de lanzar el programa
-anotamos el jump
-Ahora reiniciamos Access con Ollydbg (Cntrl+F2)
y nos dirigimos a la dirección de ese jump y colocamos bp en el y en todos los jmp cercanos y luego le damos RUN parará en donde muestra la imagen:
por lo que el primer JMP en que se detuvo fue:
00403D5B
luego si presionamos nuevamente F9 se detiene en:
00403DB6
y si presionamos F9 otra vez se detiene en el jump encargado de lanzar el programa, por lo que deberemos reiniciar Acceso otra vez y poner un BP en el anterior JMP que lanza el programa, con la finalidad de tracearlo hasta su último return y modificarlo por un jump a 00403D34:
guardamos los cambios y al iniciar Acceso nos aparecerá:
en el cual podremos elegir el servicio que necesitemos
pero al elegir uno de ellos este vuelve constantemente a preguntar que servicio queremos elegir por lo que hicimos un bucle por causa de nuestra modificación del RETN 4 por lo que deberemos hacer un jmp condicional tal como lo muestra la imagen:
este salto se dirige a hacer lo siguiente:
-realiza una comparación entre ECX y 12F3CC (12F3CC es el primer valor que toma ECX cuando pasa por RETN 4 y es en ese momento en donde se debe colocar el salto) si este no es 0 retoma el programa normalmente y si es 0 saltará directamente a los servicios
*De todas formas sigue presentando un problema y es que luego de seleccionar el servicio nos muestra normalmente el siguiente cartel:
pero deberemos darle click 3 veces
Citar
Aunque luego de que se ejecuta el servicio a usar este crea un Acceso directo en algunos casos en donde se obtiene acceso sin tener que pasa por Acceso.exe
5) Datos Anexos:
La ubicación en donde se encuentra el serial cuando se quiere registrar de manera legal está en el acceso directo, este es:
Citar
C:\PosWin\V8\Bin\PosWin.exe /S:43969298-5698989 /T:89 /P:01
En donde /S: es el serial que se ha digitado en Acceso, por lo que PosWin corrobora si este se ejecutó o no desde Acceso por los parámetros que lo acompañan a través de la API
Citar
GetCommandLineA
por lo que si se crea un acceso directo como mencioné anteriormente este no necesita pasar por Acceso
También dentro del análisis habían muchas APIS que se podrían detallar la forma en que trabajan pero fue un bosquejo rápido
6) Agradecimientos:
apuromafo,MCKSys Argentina,_Enko
Que me han dado muy buenas orientaciones,se han tomado el tiempo de explicar detalladamente mis preguntas y me han alentado en este largo camino
EDIT:
Adjunto Parche
Instrucciones:
-hacer doble click en poswin.v8.1-patch
-presionar patch si no encuentra los archivos se deben elegir de manera manual
-luego ir al directorio en donde se instaló y abrir Acceso.exe
y a Disfrutar
http://www.mediafire.com/?wmpc9be44kywhh9
*el link lo he colocado para que aquellos que no lo lograron puedan sin problemas y por comenté en otros post por si hay gente de esfuerzo que está emprendiendo