{"id":121,"date":"2005-05-04T22:11:35","date_gmt":"2005-05-04T20:11:35","guid":{"rendered":""},"modified":"2005-05-04T22:11:35","modified_gmt":"2005-05-04T20:11:35","slug":"rompiendo-barreras-con-fines-educativos","status":"publish","type":"post","link":"https:\/\/nauj27.com\/blog\/?p=121","title":{"rendered":"Rompiendo barreras con fines educativos"},"content":{"rendered":"<p>El otro dia encontr\u00e9 un programa bastante curioso. Siempre me han hablado de que los programas que hay para crear im\u00e1genes panor\u00e1micas son un poco chungos. Dicen que hay que hacer las fotos calculando bien las distancias, sin moverse, colocarlas e indicar d\u00f3nde deben enlazar.<\/p>\n<p><a href=\"http:\/\/nauj27.com\/upload-misc\/autostitch05.jpg\" title=\"<img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch05m.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"250\" height=\"179\" class=\"foto\" \/>\u00ab><img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch05m.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"250\" height=\"179\" class=\"foto\" \/><\/a> <\/p>\n<p><a href=\"http:\/\/www.cs.ubc.ca\/~mbrown\/autostitch\/autostitch.html\" title=\"Autostitch\">Autostitch<\/a> es diferente. Haces fotos a voleo, sin orden ni concierto, y se las entregas. Y lo hace. Mira el ejemplo de la misma <a href=\"http:\/\/www.cs.ubc.ca\/~mbrown\/autostitch\/autostitch.html\" title=\"web\">web<\/a> y no lo crees haz la prueba. No pondr\u00e9 aqu\u00ed la prueba que yo hice porque no quer\u00eda que fuese el motivo central de este comentario.<\/p>\n<p>El motivo central viene a ra\u00edz del programa, y de su condici\u00f3n de <i>demo<\/i> que caduca en el tiempo. Un compa\u00f1ero de trabajo lo vio y lo comento con su hermano que por lo visto es aficcionado a la fotograf\u00eda. Su hermano, seg\u00fan nos ha contado, se desanim\u00f3 un poco cuando vio la palabra DEMO, porque el programa deja de funcionar cuando pasa determinada fecha. Supongo que el motivo es que el autor quiere venderlo o algo cuando lo tenga terminado si ve que el producto promete. No lo s\u00e9, la verdad.<\/p>\n<p><img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch04.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"437\" height=\"135\" class=\"foto\" \/> <\/p>\n<p>Ahora es cuando entra en juego el t\u00edtulo del comentario: <b>Fines educativos<\/b>.<br \/>\n\u00bfQu\u00e9 pasar\u00eda si con fines educativos intentasemos evitar esta limitaci\u00f3n? De la <a href=\"http:\/\/www.cs.ubc.ca\/~mbrown\/autostitch\/autostitch.html#licensing\" title=\"licencia\">licencia<\/a> no dice mucho. Y la verdad es que no me he puesto en contacto con el autor, de modo que no s\u00e9 si es ilegal lo que estoy haciendo, con fines educativos y sin \u00e1nimo de lucro, que parece que ahora est\u00e1 de moda decir eso.<\/p>\n<p>La verdad es que no tiene mucho m\u00e9rito porque ni est\u00e1 comprimido el ejecutable, ni est\u00e1 encriptado, ni tan siquiera usa c\u00f3digo de ning\u00fan modo con intenci\u00f3n de proteger el sistema de protecci\u00f3n. S\u00ed, muchas veces es mucho m\u00e1s efectivo proteger el sistema de protecci\u00f3n que el sistema en s\u00ed mismo.<\/p>\n<p>Abrimos el <a href=\"http:\/\/home.t-online.de\/home\/Ollydbg\/\" title=\"OllyDbg\">OllyDbg<\/a> y cargamos el ejecutable. Ahora toca pensar un poquito. \u00bfPor d\u00f3nde empezamos? Bien, lo normal ser\u00e1 que nos salga un mensaje diciendo que ha expirado. Podemos intuirlo o podemos s\u00edmplemente cambiar la fecha del sistema y ver el <a href=\"http:\/\/nauj27.com\/images\/uploads\/autostitch04.jpg\" title=\"mensaje\">mensaje<\/a> que realmente aparece :-)<\/p>\n<p>Ahora buscamos las cadenas de texto a las que se hace referencia con ayuda del OllyDbg. Vemos que lo encontramos r\u00e1pidamente, como se puede apreciar en la siguiente imagen (clic para ampliar):<\/p>\n<p><a href=\"http:\/\/nauj27.com\/upload-misc\/autostitch01.jpg\" title=\"<img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch01m.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"250\" height=\"169\" class=\"foto\" \/>\u00ab><img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch01m.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"250\" height=\"169\" class=\"foto\" \/><\/a> <\/p>\n<p>En la captura se puede ver la parte del c\u00f3digo que carga <b>\u00abDemo expired&#8230;\u00bb<\/b>. Si subimos un poquito podemos apreciar que se hace una llamada a GetSystemTime de KERNEL32, posteriormente una carga manual de una fecha de caducidad (ininteligible para m\u00ed pero veremos que nos da igual), y despu\u00e9s de la comparaci\u00f3n un salto condicional.<\/p>\n<p>Ech\u00e1ndole un m\u00ednimo de sentido com\u00fan, podemos suponer que si la fecha del sistema es mayor que la que se carga a mano, el resultado del salto condicional:<\/p>\n<p class=\"cita\">JBE SHORT autostit.004040AD<\/p>\n<p>ser\u00e1 tal que el c\u00f3digo siga por ah\u00ed y el salto no se realice. Entonces se carga la cadena de texto de <b>Demo expired&#8230;<\/b>, se muestra la ventana y finaliza el programa. B\u00e1sicamente esa es la idea. <\/p>\n<p>\u00bfQu\u00e9 nos interesa entonces? Pues saltar, como el caballito jeje. Bastar\u00e1 con cambiar el <b>JBE<\/b> por un salto incondicional. Independientemente de la fecha del sistema, de la fecha puesta a mano y del resultado de la comparaci\u00f3n de ambas, siempre seguir\u00e1 la ejecuci\u00f3n del programa adelante y nunca expirar\u00e1 nuestra copia. Pues manos a la obra. Cambiamos el salto por un <b>JMP SHORT<\/b> y dejamos activada la opci\u00f3n de rellenar con <b>NOOPs<\/b>, aunque no es necesaria porque ocupar\u00e1n los mismos bytes&#8230; Cambiando esto vemos que el c\u00f3digo  de la instrucci\u00f3n cambia desde <b>76 16<\/b> a <b>EB 16<\/b>.<\/p>\n<p>Solo nos resta ir a nuestro editor hexadecimal favorito, abrir el ejecutable, acceder a la direcci\u00f3n de memoria donde est\u00e1 el byte a cambiar, y cambiarlo. Una vez cambiado se guarda y listo. Ya tenemos nuestra copia del programa que no caduca en el tiempo.<\/p>\n<p><a href=\"http:\/\/nauj27.com\/upload-misc\/autostitch03.jpg\" title=\"<img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch03m.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"250\" height=\"304\" class=\"foto\" \/>\u00ab><img loading=\"lazy\" src=\"http:\/\/nauj27.com\/images\/uploads\/autostitch03m.jpg\" border=\"0\" alt=\"image\" name=\"image\" width=\"250\" height=\"304\" class=\"foto\" \/><\/a> <\/p>\n<p>Tan solo fue con fines educativos y por supuesto sin ning\u00fan \u00e1nimo de lucro de ning\u00fan tipo. El uso que hagas de la informaci\u00f3n es responsabilidad tuya, \u00fanicamente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El otro dia encontr\u00e9 un programa bastante curioso. Siempre me han hablado de que los programas que hay para crear im\u00e1genes panor\u00e1micas son un poco chungos. Dicen que hay que hacer las fotos calculando bien las distancias, sin moverse, colocarlas e indicar d\u00f3nde deben enlazar. En la captura se puede ver la parte del c\u00f3digo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/121"}],"collection":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=121"}],"version-history":[{"count":0,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/121\/revisions"}],"wp:attachment":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}