PatoAventura: Dacito en la batalla contra las referencias mal referenciadas! del Win 7

Hola de nuevo, esta es una cortita, la pongo en caliente, pq sino luego se va a la cola y ya no sale…:

bueno, tengo que aceptar que quizá este post tenga algo de bilis, espero que sea en su mínima expresión.

Antecedentes

esta pato aventura empezó, por que tuve que lanzar un proceso de análisis –automatizado- de una app el cual iba a demorar un par de horas, así que me  puse a ver como me entretenía, como había platicado con Eber via twt sobre cuales apps eran mas inseguras las de win32 o las de .net – eso es otro tema… – se me ocurrió probar el hacer el análisis de un archivo obfuscado con un desensamblador tradicional y en un editor hexadecimal.. Vs un archivo la versión original de ese archivo, en este caso era una app win que había echo días atrás, y para esto utilice el OllyDbg 1.1 y tbm el notepad++ con el plugin de fuente hexadecimal..  – si, ya se existe el WinDbg, pero no puedo dejarlos a un lado –..

Y que paso???

Me puse a analizar el código en ensamblador que mostraba, entonces… se me ocurrió ver que cadenas ASCII y las UNICODE – use el plugin “Ultra String Reference” del OllyDbg .. este pluging ademas de mostrarme las referencias del archivo, tbm me mostro las referencias string, de los archivos referenciados y dependientes … y en eso pude ver esto….

fuentewin7

cuando vi esto…. recordé unas experiencias previas con win 2k3..

si ven en la parte izquierda, esto viene de “ntdll.dll” una libreria de win7, y esta referenciando a una  ruta “ e:win7rcminikerneltheranpoolntdllwaiter.c” – oh win 7 lo hicieron en C xD!”- pero que es esto?  simple, parte del codigo de la dll esta referenciando, al archivo fuente, el cual lógicamente no tengo, y además, que esta en otra partición – la cual no necesariamente podría existir en mi pc-, y esto pa que o que? en algunos casos cuando ocurre algun error, o en determinada situación Windows intenta buscar el archivo fuente – para lanzar su depurador – pero “oh sorpresa” el archivo no existe….  como ya deben de saber, el buscar archivos es algo costoso – en procesamiento –  y mas aun si no existen, pq pueden lanzar excepciones y ps una excepción provocada por otra excepción pues es doblemente costosa… o me equivoco?.

se que mas de uno ya estara pensando en responder al post con un “es beta”, y justo por eso muestro esto :

fuentewin2k3

es la misma dll “ntdll.dll”, con la diferencia que es del Windows 2003 R2..versión final … escogí la imagen al hazar,  y la dll tbm, ya que no son las únicas con este “detalle”, si se fijan en este caso los archivos con “.CPP” ósea que al windows 2003 r2 lo programaron en… ? xD!, pero bueno, no nos salgamos del punto….

Cual es el punto?

el punto es que los programadores de Microsoft, dejan referencias a rutas absolutas de  archivos “fuente” dentro de sus dlls, las cuales luego son llamadas por X o y motivos…  y estas al no estar presente lanzan a su vez otra excepción, que conseguimos con esto? simple… que nuestros win respondan de modo mas lento, ya que todas las excepciones no controladas son muy costosas – asi como las novias que son “pedilonas xD” –

creo que cualquier administrador de server decente -y especifico decente, pq el echo de meter el disco y darle next a todo no los hace un administrador de server..-  y cualquier otra persona que sea muy fan de ver el visor de eventos, a visto alguna vez en su vida, un error marcado casi sin motivo al parecer alguno en el visor de eventos, donde el mensaje dice “no se encuentra el archivo d:ntbasentdll……”  y uno nomas dice “juat!??” , esto muy común en Windows 2003  – ojo, win 2003 me parece un muy buen sistema operativo, pero de todas maneras no se escapa de esto –.

Personalmente aun no entiendo el por que los programadores de Microsoft hacen esto, para una app que usaran personas que no tienen el fuente a la mano…, ya que habrían otras formas de ubicar la fuente del error, sin tener que hacer llamadas a esos archivos.. la verdad no les entiendo, ya que evitando esto, podrían hacer que windows sea un poco mas estable…, la verdad cada vez los entiendo menos….

se que hubiera cerrado con broche de oro, mostrar una imagen del filemon donde sale la llamada a ese archivo o el visor de eventos, donde se hace una llamada a esos archivos, pero no e podido sacar aun una serie de pasos repetibles sobre como hacer k aparezcan estas llamadas y ando con mucha chamba … – las cuales ya me han pasado varias veces – ,  y aunque este tipo de “situaciones”  no se ejecuten todos los días, pueden hacer que un día X cuando estemos con alguna aplicación critica, truene algún proceso y este a otro y esta bolita de nieve se vuelva una avalancha y sea algo mas fuerte  – ya me paso… –, si mas adelante me sale uno, lo agregare a este post….- un screen shot –

que podemos hacer nosotros en estos casos ? … lamentablemente nada… y solo rezar por que no nos pase… y  tbm rezar pq ms deje de hacer esto en las apps de producción …

por situaciones como esta, es que recomiendo siempre que al listado de pruebas por hacer, se haga una revisión al archivo desensamblado, para ver que posibles detalles se podrían encontrar por allí…, lamentablemente no muchos lo hacen.. 🙁

 postdata: las imagenes que puse alli son al hazhar… si quieren verlo por sus propios ojos, las cientos – si es que no miles – de llamadas… pueden buscarlo uds mismos .. 😉 ….

Salu2

Ddaz

sobre el por que creo que SI es una moda esto de SCRUM, la Aguilidad, etc – respuesta al post de Jersson-

 

tenia esta respuesta pendiente….  al post de jersson, con respecto a la pregunta que hice en el twitter

personalmente creo que SI es una moda, esto de "ser agil", o  usar "SCURM"….
y antes que salten encima con sus uñas, aclaro, que intentar mejorar no me parece malo, ni tampoco que se use scrum – bien aplicado- …

algo que ley muy seguido en el twt es "sentido común".. y curiosamente eso mismo es lo que me parece el "manifiesto agil", es algo tan obvio, que el echo que gente se haya tenido que juntar para poder darse cuenta de eso, demuestra lo mal que estaba la industria del software.

Lamentablemente la industria del software es de las menos serias entre todas las profesiones, aunque, eso si, muchos hacen el esfuerzo para corregir eso.., lo malo es que no hay un verdadero norte…, todas son especulaciones, sobre como se podría mejorar, y le digo especulaciones, por que no todas las soluciones funcionan para todos..- en un momento completo la idea-.

se quiera o no aceptar en la industria del software, todo se basa en fondo de "que autor eres fan",  si eres fan de don box, de  Watts Humphrey, de alguno de los los scott, de Kent Beck, etc.., muchos autores para muchos temas, ya sea cmmi, xp, scrum, etc…., a diferencia con las carreras mas formales, donde uno puede leer  a un autor X y por mas bueno que sea, no fanatizarse con uno u otro aspecto, al menos en mi carrera original, podia leer muchos libros de diferentes autores, sobre procesos, reacciones y demas, pero ninguno le ganaba a los datos, que eran irrefutables, en soft eso no se puede hacer… por algo muy simple… el factor humano.

lo que cuenta la historia…, -lógicamente todos buscando la solución a los problemas..-. en el desarrollo de software.. quieran o no, se crearon modas… ,  entre los mas resaltantes estuvo la OOP, luego recuerdo que en Perú llego la moda del RUP,  – pude ver a muchos mvps, y demas  en ese tiempo k a todo lo veían con ojos de RUP, esto hizo que muchos sigan a rup-  luego llegando a México pude ver la moda del CMMI, en tecnologias microsoft, hubo la moda del dataset, luego tbm vino la moda linq,- y junto con pegado LinQ2SQL, el WinME de .Net-, cuando se hizo obvio que linq2sql no era "muy bueno" – oh sorpresa- luego muchos se fueron corriendo a EF…- , y hace poco  – por mas que estuvo mucho tiempo en beta-  ASPNET MVC…,  una de las modas que mas me causo risa, y que aun sigue, es la de Sharepoint,  el cual salió hace mucho… la gente lo veia y nadie le hacia caso, – en ese tiempo yo use implemente y recomendaba SharePoint-, y luego algún famoso – no se aun quien fue- mostros a SharePoint…. y OH WOW… luego otro grupo tras de SharePoint… en este medio, no importa que la tecnología exista de tiempo atrás.. solo importa si algún famoso lo muestra y dice que es cool…   para que corra un gran grupo tras de esa tecnología/ metodología, etc…

y ojo, no digo que esas tecnologías / metodologías  sean malas…- bueno a excepción de linq2sql, que si opino que es el peor error de ms de los ultimos años-, sino que la gente no se basa en investigaciones, en estudio, en evaluaciones, sino se basa en lo que otros opinen al respecto…,  y eso mismo lo e visto aqui en geeks.ms.. por eso es que le llamo moda.

un ejemplo claro, en Perú y España a pegado mucho esta moda, en España me parece claro y lógico, por que muchas de las personas mas resaltantes optan por esta tecnología, – y estoy seguro que en base a investigación y evaluación-, y eso llevo a que otros se sumen – no muy estudiosos- , en peru dependen mucho de lo que digan los autores de eeuu con respecto a .net – y eso lo e visto en muchas personas, y "celebridades" -, en cambio, aqui a México llego hace un par de años Watts Humphrey , era logico que venga, ya que el ITESM tiene convenio con Carnegie Mellon University,  vino y explico sobre PSP y TSP, la gente quedo impactada, y acto seguido, todos querian llevar PSP Y TSP, esto pego tanto, que actualmente en la maestría de ing de software,  tocan básicamente PSP Y TSP, en las universidades se esta enseñando, y empujan a los alumnos a certificarse en PSP, y les dicen que "con eso arreglaran sus lios", sin fijarse en las capacidades de las personas…. , me pregunto, que hubiera pasado si Watts hubiera ido a peru en vez de a mexico?… xD!!?

Intentar seguir técnicas "Agiles" es malo? definitivamente no, pero una cosa es eso, y otra gritar a los 4 vientos "Soy agil,  y  vamos  te ayudo a que seas agil"…  , asi como rodrigo dice, que aparecen muchos "Gurus"… asi estan apareciendo muchos  en lo que respecta a agil… ya que ahora "ser agil es ser cool" …

y si, rodrigo tiene mucha razon al decir que el fondo de la "agilidad", es avanzar con respecto a los procesos que ya estaban establecidos, – como cmmi-… pero ahora viene mi pregunta, cuantos que estan intentando seguir las cosas "agiles" lo son por que han estudiado, analizado, investigado y comparado con respecto a las otras metodologías / tecnicas?  y cuantos solo por que vieron a un "compa" en el cual creen que sabe mas y "si el usa cosas agiles es por que es bueno, asi que yo tbm voy a usarlo"..

vamos, querer negar esto, seria como querer hacer agua con tan solo juntar unos átomos de hidrogeno y oxigeno a temperatura ambiente… o para que lo entiendan mejor, querer  tapar el sol con un dedo….

pero algo importante – y que muchos aceptan- es que no todos pueden usar todas las metodologias, por ejemplo, a rodrigo le funciona usar SCRUM en su empresa, por que el tiene en su equipo a gente que son muy buenos en su area, y muy inteligentes, pero cuantos pueden darse ese lujo? hablando por el twt con unos amigos, hace poco ellos mismos decian que la realidad es que en el mundo real aun predominan las empresas donde todos hacen de todo, no se contrata personal idoneo y muchas veces hay que verselas con programadores o analistas mediocres…., para poder usar SCRUM o XP -como ejemplo- necesito gente que sea inteligente  y proactiva, que no sean personas que les de flojera usar sus neuronas…; pero que pasa si mi equipo no es de los mejores? pues en muchos casos es mejor retroceder un poco a  cosas como CMMI o TSP que son mas pesados, mas documentacion, etc etc, pero que podrian darme un mejor resultado, con respecto al tipo de personal que cuento,….., si seguro pensaran que subestimo a la inteligencia de los desarrolladores, pero suene feo o no, es la verdad…, es como en los kentucky, mac donals, etc… sus cocineros no son buenos, pero si siguen el manual al pie de la letra, el resultado puede ser mejor de lo esperado….

si, se que en el soft existe el factor humano, que desequilibra cualquier ecuacion, por eso es que en soft no habra – al menos en los proximos 15 años-  una forma real y tangible de hacer soft con una seguridad de hacer soft con cierto % de calidad, con cualquier tipo de personal….

que es lo que dice la definición de moda? según RAE?  “Uso, modo o costumbre que está en boga durante algún tiempo, o en determinado país”, esto es lo que se ve, en casi todo lo que respecta a tecnologías/ metodologías, etc…  

lógicamente hay quienes si llegan a la conclusión de usar determinada tecnología/metodología/ tecnica, basándose en experiencias previas, evaluaciones e investigaciones, esas personas si tienen mi respecto… pero la mayoría no es asi, solo siguen por que “algun guru local  lo hace” .. suene feo o no es la realidad…

estoy seguro que esto de lo agil, scrum y aqui en mex el psp y tsp, seguirán vigente hasta que aparezca algo que los reemplace….  cuando algún gurú local o internacional use otra cosa que sea “mas cool” …

tengo muchas cosas mas en mente, pero bueno al menos por ahora le parare, y repito, la definición de “agilidad” no me parece mala.

les dejo una pregunta? .. SCRUM  hace cuanto se creo? hace cuanto estuvo esto de la “agilidad” en el mercado… y desde cuando se hizo “famoso” y “cool”  y se volvió masivo?  empaten las fechas…. y me avisan..

ahora si, disparen con todo lo que tengan xD!!

Salu2

Dacito Bauer!