jueves, 17 de enero de 2008

¿ cracking wing ?

it's just a question!

''' ENERO 18 ''', madrugada como casi siempre


Despues de leerme el manual del wing y aprender un poco a usar el IDE, me dió rabia ver que cada vez que lo abria aparecia un mensaje diciendome cuantos días me faltaban para que el win se cerrara, pues claro, baje una version trial del sitio:
http://wingware.com/downloads

segun mis amigos de wing esta es una aplicacion completamente funcional, pero trial por 10 dias, pasados los 10 dias uno puede pedir un poquito mas de tiempo y pasados otros 10 dias otro poquito mas.
En total puede trabajar con la herramienta 30 dias antes de que caduque la licencia.

La licencia se puede activar de muchas formas:

  • manual (metiendo el codigo)
  • por internet (automagicamente)
  • con el numero de licencia y otro codigo desde un sitio web
Eso significa que esas son las posibles formas de "atacar" la licencia ...

Cuando se le vence a uno la licencia pasa esto:
Bueno, despues de ese tiempo uno puede entrar, pero siempre aparece el mismo mensaje (el desesperador), ese desespero es el que lo lleva a uno a pagar las licencias.

me puse a leer sobre la licencia de win (wingware) y en ningun lado dice que es opensource o software libre, lo que dicen es que si lo pagas te pueden dar las fuentes y que el uso del software es NO COMERCIAL.

En fin, este programa es bastante bueno, pero yo estaba era buscando la forma de "crackear", "reversar" esa aplicacion.

abri el IDE y con el mismo intente debugguear el mismo codigo de wing. Esta escrito en python, pero cuando llega a la parte interesante (la de la licencia), encuentro que se cargan unos *.pyo, como quien dice codigos objetos que no puedo leer directamente (e indirectamente tampoco), esta tecnica la he visto en muchas aplicaciones de codigo interpretado, donde se programan scripts y luego se le pasa algun software que genere codigo objeto y que no se pueda leer ni desensamblar.
Lo he visto en scripts de PHP, BASH, KSH, TCL y ahora en PYTHON, no es algo nuevo es la forma que tienen muchos para ocultar el codigo de lo que hacen.

Pero a la vez que aparecen los que esconden, aparecen los que muestran, entonces una posibilidad era intentar desensamblar los archivos *.pyo y tratar de encontrar los *.py originales, para leerlos, entender las rutinas y lograr sacar algun key-gen para la aplicacion. Pero yo no se nada de eso y lo unico que necesitaba era que la ventana de la licencia no abriera cada vez que iniciaba el
programa, entonces ...

0. si alguna vez has reversado algo, has hecho cracking, debes probar lo primero que se te ocurre, que es?
que es?, que es?
cambiar la fecha y mirar que pasa, al parecer el wing se basa en la fecha del sistema que la saca por el modulo "os", entonces podemos cambiar la fecha de nuestro pc para que nunca llegue el tiempo donde caduca la licencia.
PERO, de todos modos la ventana seguira apareciendo diciendonos:
le faltan tantos días para morir ...


1. En debian puedo hacer un :
#apt-get install decompyle
pero solo reversa codigo de python 2.3 y 2.4 y wing esta en 2.5

2. puedo encontrar que wing tiene su propio analizador (piensa en el como su propio python ejecutable) que se encarga de ejecutar los .pyo, asi que si logro cargar los .pyo con este programa, podria intentar debugear el software ya que esta como binario de linux.
pero ...
tengo mucha pereza, la idea es solo quitar la ventana de licencia.

{{{
debian:~# cd /usr/lib/wingide3.0/bin/
debian:/usr/lib/wingide3.0/bin# ls
1.5 2.1 2.3 2.5 _patchsupport.py wingapi.py wingdb.py
2.0 2.2 2.4 gtk-bin PyCore wingapi.pyo wing.py
debian:/usr/lib/wingide3.0/bin# ls -la PyCore/python
-rwxr-xr-x 1 root root 1111760 2008-01-12 09:12 PyCore/python
debian:/usr/lib/wingide3.0/bin# file PyCore/python
PyCore/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
debian:/usr/lib/wingide3.0/bin# ./PyCore/python -ESO wing.py
}}}

o puedo intentar con gdb (es lo mas logico, pero lo mas largo)

{{{
debian:/usr/lib/wingide3.0/bin# gdb ./PyCore/python
GNU gdb 6.7.1-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) break main
Breakpoint 1 at 0x8056356
(gdb) r -ESO wing.py
Starting program: /usr/lib/wingide3.0/bin/PyCore/python -ESO wing.py
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[New Thread 0xa7dad6b0 (LWP 11911)]
[Switching to Thread 0xa7dad6b0 (LWP 11911)]

Breakpoint 1, 0x08056356 in main ()
(gdb)
}}}
y empezar desde ahi a desensamblar cada cosa que lea el python desde l .pyo

3. puedo deducir cosas del archivo que si se puede leer, wing.py, e intentar cambiar valores en las variables.

{{{
debian:/usr/lib/wingide3.0/bin# ls -lah wing.py
-rwxr-xr-x 1 root root 17K 2008-01-12 04:06 wing.py
debian:/usr/lib/wingide3.0/bin# file wing.py
wing.py: a python script text executable
debian:/usr/lib/wingide3.0/bin#
}}}


4. puedo llevar los .pyo a este sitio:
http://www.depython.net/
he intentar que me desensamblen los archivos, pero el problema es que es gratis solo para archivos de hasta 5K, asi que grave, el unico archivo que se puede meter allá es el main.pyo (el principal).
Bueno yo lo hice, solo como pruebas academicas obviamente.
El resultado es un archivo .py en texto plano que me permite entender como funciona el wing y como carga la interfaz y el mecanismo de la licencia ...
pero para poder llegar a algo contundente necesitaria otro archivo mas llamado singleton (investigue para saber mas) y ese si no se puede meter porque pesa mas de 5K.

5. puedo codearme mi propio desensamblador, pero tengo mucho sueño y solo quiero quitar la ventana.

6. puedo pagarle a la gente de:
http://www.crazy-compilers.com/decompyle/service.html
que prometen devolverme todo el codigo, pero yo solo quiero quitar la ventana de la licencia al inicio.

7. puedo hackear alguno de esos sitios y robarles los scripts que tienen para desensamblar, pero eso es muy feo y es ilegal.

8. puedo hacer muchas cosas, pero lo mas sencillo es mirar lo que instala el wing, y nos damos cuenta que la informacion de la instalacion (los settings) estan en el HOME del usuario que usa el wing, por lo tanto puedo revizar haber con que me encuentro.

{{{
nando@debian:~$ ls -la .wingide3/
total 177
drwx------ 6 nando nando 824 2008-02-10 00:33 .
drwxr-xr-x 65 nando nando 4256 2008-02-10 00:33 ..
-rw-r--r-- 1 nando nando 24 2008-01-17 17:57 accepted_eula_3.0.3
drwxr-xr-x 3 nando nando 160 2008-02-10 00:33 cache
-rw-r--r-- 1 nando nando 6865 2008-02-10 00:33 default.wpr
-rw-r--r-- 1 nando nando 88823 2008-02-10 00:56 error-log
-rw-r--r-- 1 nando nando 126 2008-01-17 17:57 gtkrc
-rw------- 1 nando nando 22 2008-02-10 00:33 instance
-rw-r--r-- 1 nando nando 15 2008-02-10 00:33 last-python
-rw-r--r-- 1 nando nando 11 2008-02-10 00:26 last-update-check
-r-------- 1 nando nando 601 2008-01-18 00:24 license.act
-r-------- 1 nando nando 584 2008-01-29 00:25 license.act1
-r-------- 1 nando nando 549 2008-01-17 17:58 license.pending
-r-------- 1 nando nando 545 2008-01-29 00:25 license.pending1
-r-------- 1 nando nando 545 2008-02-10 00:27 license.pending2
drwxr-xr-x 3 nando nando 72 2008-01-17 18:22 pi-cache
-rw-r--r-- 1 nando nando 94 2008-02-10 00:33 preferences
-rw-r--r-- 1 nando nando 320 2008-02-10 00:33 recent-cmd
-rw-r--r-- 1 nando nando 22 2008-02-10 00:33 recent-debug
-rw-r--r-- 1 nando nando 83 2008-02-10 00:33 recent-files
-rw-r--r-- 1 nando nando 39 2008-02-10 00:34 recent-projects
-rw-r--r-- 1 nando nando 56 2008-02-10 00:33 recent-visits
-rw-r--r-- 1 nando nando 33 2008-02-10 00:33 registers
drwxr-xr-x 2 nando nando 48 2008-01-17 17:57 scripts
drwxr-xr-x 2 nando nando 48 2008-01-17 17:57 templates
-rw-r--r-- 1 nando nando 272 2008-01-17 18:22 unseen-wing-tips
-rw------- 1 nando nando 22 2008-01-17 17:57 wingdebugpw
nando@debian:~$
}}}

nota1:
casi siempre lo que tiene menos permisos es lo que llama mas la atencion.

nota2:
observe los
"license.pending", cada archivo le indica al wing cuantas veces ha hecho la renovacion de la licencia, que pasa si borramos uno?
jeje

{{{
nando@debian:~/.wingide3$ cat license.act

restrictions = 'Evaluation use only'
product = 'wingide'
license = 'TNX3L-M7JVE-4QLN9-7MRFG'
hostinfo = "4y_S&uC&[xyesOE\x0dAj5]FSBs'}]BVpJ|2LbA\x0cDs%cK[,!]_Htb(uY\\\nK"\
"Ma\"Q=4yAz]W)>MJ{l(a9aAPGBCbG[DP[\x0czM$Ent/NMzaz\\>7;[\txUGU
"9qF'!QLz/${@{5FdNJv(b!Uxx[8\n3V'%6a-{PY\"Oh\"@sRZ7o':ba-sR\x0bZH"\
"o/}xY\x0clj%\nVFm4T5G1]~gh*
"L4:\"J\\=!D{JyK\n5T>\nx1>}g`,t0J}"
activation = 'AXX1R-PYC9J-WMWTK-KXV9R'
termdays = 11
customerdata = ''
version = '3.*'
date = '01/17/08'
os = 'linux'
usercount = 1
nando@debian:~/.wingide3$
}}}

lo que nos lleva a pensar que podemos modificar por ejemplo la fecha o los dias de activacion o lo que queramos, pero no funciona, no con todo.

para terminar este largo cuento lo que hice fue cambiar la variable license=""
y listo, esa ventana ya no se volvio a abrir, ni a reclamar seriales, ni a pedir updates, ni a nada, no se lo que paso, no es opensource.

El software es bueno, si fuera desarrollador podria llegar a comprarlo.

1 comentario:

Anónimo dijo...

hice algo similar con VMware :P

Entradas populares