Buenas a todos... mi primer post aquí, espero que este sea el foro adecuado... disculpas si no lo es.

El caso es que estoy estudiando un programa (posiblemente esté apuntando muy alto para mi bajo nivel) que compramos hace unos años ya. Está protegido con una HASP3 (muy antigüa ya) y estaba pensando para win16. Cuando llegó el w2000 el programador nos envió el programa recompilado para usar la API Hasp de 32 bits pero el soft seguía siendo de 16 bits, pero al menos podíamos usarlo en w2000 y ahora en XP.

He estado leyendo documentos sobre HASP y tutoriales y ninguno de ellos habla de una situación como esta. Todos hablan de soft 32b con APi32 o Soft 16 con Api16.

Bueno, cuando empecé con él, lo primero que me sorprendió es que aún con el sice descargado de memoria el soft no arrancaba dejando el wowexec/ntvdm en memoria y chupando el 100% del procesador... bueno.. pues a esconder el sice... cargué el IceExt y aunque ahora dejaba el ntvdm en memoria, al menos no se metía en algún bucle infinito...

Me puse a buscar las comprobaciones que hacía para pillar el sice, cual es mi sorpresa que no rompía con ningún bpx... no encontré la manera de entrar con el sice en él (el wldr del sice para soft de 16 bits no me funcionó), hasta que leí un post que para estos menesteres era mejor usar el WinDBG... así lo hice y por fin pude meterme en él... y tras ver un poco lo que hacía al inicio, me metí con el sice en él.

Tras unas cuantas llamadas a funciones Ki, llegaba a un sysenter. A partir de este punto, si intentaba entrar el sysenter, el pc reseteaba. Esto creo que es debido a que sysenter funciona en ring0 igual que el sice. Si pasaba por alto el sysenter y seguía traceando linea a linea, el código iba cambiando cada vez que ejecutaba una instrucción. He podido ver con el WinDBG que después de ejecutar el "SysEnter" hay 3 threads.

He leido también que se puede cambiar el sysenter (función nueva a partir del win2000 si no recuerdo mal) por la interrupción 2e, la cual funciona en ring3.

Bueno.. después del tocho, las preguntas, a ver si alguien puede echarme un cable.

- Si una vez pasado el sysenter el código ya no es traceable, he de suponer que se ha creado un thread que va desencriptando/descomprimiendo el código que se va ejecutando?

- De ser así, es obvio que debería estudiar qué hace el programa cuando llama a sysenter, por lo que debería cambiar a int2e?

Si consigo esto, ya sería un buen paso para ver cómo pilla que el sice está en el pc (primer objetivo).

ahhh... se me olvidaba, he de decir que el soft lo tenemos legal totalmente, y que hago esto por estudiarlo, ya que podría probar con algunos de los emuladores de hasp que hay por ahí.. pero así no se aprende nada, no?

Enga... saludos y gracias por adelantado.
potros