Guía para la aplicación de ingeniería inversa de software.

Guía diseñada con fines educativos de cómo analizar un programa por medio de la depuración y para ser utilizada como método de aprendizaje sobre cómo aplicar la ingeniería inversa a un pequeño programa hecho en C++ con la herramienta x64dbg, analizando su funcionamiento interno por medio de la práct...

Full description

Autores:
Alba Fortich, Miguel Eduardo
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2022
Institución:
Universidad Cooperativa de Colombia
Repositorio:
Repositorio UCC
Idioma:
OAI Identifier:
oai:repository.ucc.edu.co:20.500.12494/47396
Acceso en línea:
https://hdl.handle.net/20.500.12494/47396
Palabra clave:
Ingeniería
Ingeniería inversa
Vulnerabilidad
X64dbg
Depurador
Programación
Programa maligno
Engineering
Reverse engineering
Vulnerability
X64dbg
Debugger
Programming
Malware
Rights
openAccess
License
Atribución
id COOPER2_1c823df01adff475d3e11fbec5040f60
oai_identifier_str oai:repository.ucc.edu.co:20.500.12494/47396
network_acronym_str COOPER2
network_name_str Repositorio UCC
repository_id_str
dc.title.spa.fl_str_mv Guía para la aplicación de ingeniería inversa de software.
title Guía para la aplicación de ingeniería inversa de software.
spellingShingle Guía para la aplicación de ingeniería inversa de software.
Ingeniería
Ingeniería inversa
Vulnerabilidad
X64dbg
Depurador
Programación
Programa maligno
Engineering
Reverse engineering
Vulnerability
X64dbg
Debugger
Programming
Malware
title_short Guía para la aplicación de ingeniería inversa de software.
title_full Guía para la aplicación de ingeniería inversa de software.
title_fullStr Guía para la aplicación de ingeniería inversa de software.
title_full_unstemmed Guía para la aplicación de ingeniería inversa de software.
title_sort Guía para la aplicación de ingeniería inversa de software.
dc.creator.fl_str_mv Alba Fortich, Miguel Eduardo
dc.contributor.advisor.none.fl_str_mv Rivera Sánchez, Gustavo Armando
dc.contributor.author.none.fl_str_mv Alba Fortich, Miguel Eduardo
dc.subject.spa.fl_str_mv Ingeniería
Ingeniería inversa
Vulnerabilidad
X64dbg
Depurador
Programación
Programa maligno
topic Ingeniería
Ingeniería inversa
Vulnerabilidad
X64dbg
Depurador
Programación
Programa maligno
Engineering
Reverse engineering
Vulnerability
X64dbg
Debugger
Programming
Malware
dc.subject.other.spa.fl_str_mv Engineering
Reverse engineering
Vulnerability
X64dbg
Debugger
Programming
Malware
description Guía diseñada con fines educativos de cómo analizar un programa por medio de la depuración y para ser utilizada como método de aprendizaje sobre cómo aplicar la ingeniería inversa a un pequeño programa hecho en C++ con la herramienta x64dbg, analizando su funcionamiento interno por medio de la práctica de la depuración y comparando el código maquina producto de la compilación del código fuente de un ejemplo propuesto.
publishDate 2022
dc.date.accessioned.none.fl_str_mv 2022-12-07T12:59:42Z
dc.date.available.none.fl_str_mv 2022-12-07T12:59:42Z
dc.date.issued.none.fl_str_mv 2022-11
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/20.500.12494/47396
dc.identifier.bibliographicCitation.spa.fl_str_mv Alba Fortich, M. E. (2022). Guía para la aplicación de ingeniería inversa de software [Proyecto de pregrado, Universidad Cooperativa de Colombia]. Repositorio Institucional Universidad Cooperativa de Colombia. https://repository.ucc.edu.co/handle/20.500.12494/47396
url https://hdl.handle.net/20.500.12494/47396
identifier_str_mv Alba Fortich, M. E. (2022). Guía para la aplicación de ingeniería inversa de software [Proyecto de pregrado, Universidad Cooperativa de Colombia]. Repositorio Institucional Universidad Cooperativa de Colombia. https://repository.ucc.edu.co/handle/20.500.12494/47396
dc.relation.references.spa.fl_str_mv Campus Internacional Ciberseguridad. ¿Qué es el reversing de malware? [en línea]. 20 de mayo de 2021. Disponible en: https://www.campusciberseguridad.com/blog/item/140-que-es-el-reversing
El Hacker. Foro de El Hacker [en línea]. Disponible en: https://foro.elhacker.net/ingenieria_inversa-b26.0/
Heller, M. The Ghidra Book interview with co-author Kara Nance [en línea]. Octubre de 2020. Disponible en: https://searchsecurity.techtarget.com/feature/The-Ghidra-Book-interview-with-co-author-Kara-Nance
Narvaja, R. Página de Ricardo Navaja [en línea]. Disponible en: https://sites.google.com/site/ricardonarvaja/home
Prepodobniy, S. 9 Best Reverse Engineering Tools for 2021 [Updated] [en línea]. 24 de junio de 2021. Disponible en: https://www.apriorit.com/dev-blog/366-software-reverse-engineering-tools
acentocoop. (2 de Septiembre de 2020). Obtenido de acentocoop: https://acentocoop.es/blog/ingenieria-inversa/
Asana, T. (7 de 10 de 2021). asana. Obtenido de asana: https://asana.com/es/resources/what-is-a-flowchart
Baray, K. G. (2 de 2 de 2020). eleconomista. Obtenido de eleconomista: https://www.eleconomista.com.mx/tecnologia/que-es-un-bug-20200131-0079.html
byspel. (7 de 1 de 2022). byspel. Obtenido de byspel: https://byspel.com/que-es-codigo-fuente-en-programacion-diccionario/
el-brujo. (31 de 5 de 2021). blog.elhacker. Obtenido de blog.elhacker: https://blog.elhacker.net/2021/05/herramientas-ingenieria-inversa.html
FERNÁNDEZ, Y. (10 de 3 de 2021). xataka. Obtenido de xataka: https://www.xataka.com/basics/memoria-ram-que-sirve-como-mirar-cuanta-tiene-tu ordenador-movi
FERNÁNDEZ, Y. (20 de 4 de 2021). xataka. Obtenido de xataka: https://www.xataka.com/basics/que-significa-que-aplicacion-programa-sea-32-64-bits-cual-debes-instalar
Github. (2021). Obtenido de https://docs.github.com/es/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-repositories
GONZÁLEZ, G. (06 de 03 de 2019). genbeta. Obtenido de https://www.genbeta.com/herramientas/ghidra-poderosa-herramienta-ingenieria-inversa-nsa-ahora-open-source-esta-disponible-para-windows-linux-macos
ionos. (18 de Marzo de 2020). Obtenido de ionos: https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/ingenieria-inversa-de-software/
locurainformaticadigital. (6 de Marzo de 2019). Obtenido de locurainformaticadigital: https://www.locurainformaticadigital.com/2019/03/06/ghidra-9-0-herramienta-ingenieria-inversa-nsa/
Marín, R. (28 de enero de 2019). revistadigital. Obtenido de revistadigital: https://revistadigital.inesem.es/informatica-y-tics/ingenieria-inversa/
Mendoza, M. L. (16 de 07 de 2020). openwebinars. Obtenido de https://openwebinars.net/blog/que-es-un-lenguaje-de-programacion/
Mikejo5000, o. (19 de 8 de 2021). microsoft. Obtenido de microsoft: https://docs.microsoft.com/es-es/visualstudio/debugger/what-is-debugging?view=vs-2022#:~:text=Un%20depurador%20es%20una%20herramienta,hablamos%20cuando%20decimos%20%22depuraci%C3%B3n%22.
narvaja, R. (3 de Enero de 2019). foro el hacker. Obtenido de foro el hacker: www.foro.com Ortiz, A. E. (22 de 7 de 2020). hostdime. Obtenido de hostdime: https://www.hostdime.com.pe/blog/que-es-una-vulnerabilidad-en-seguridad-informatica-ejemplos/#:~:text=En%20seguridad%20cibern%C3%A9tica%2C%20una%20vulnerabilidad,autorizadas%20en%20un%20sistema%20inform%C3%A1tico.
Romero, M. S. (30 de Marzo de 2019). computerhoy. Obtenido de computerhoy: https://computerhoy.com/reportajes/tecnologia/consiste-ingenieria-inversa-396691
dc.rights.license.none.fl_str_mv Atribución
dc.rights.accessrights.none.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv Atribución
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.spa.fl_str_mv 46 p.
dc.publisher.spa.fl_str_mv Universidad Cooperativa de Colombia, Facultad de Ingeniería, Ingeniería de Sistemas, Bogotá
dc.publisher.program.spa.fl_str_mv Ingeniería de Sistemas
dc.publisher.place.spa.fl_str_mv Bogotá
institution Universidad Cooperativa de Colombia
bitstream.url.fl_str_mv https://repository.ucc.edu.co/bitstreams/0eab4fe9-75c6-471e-8149-f2812590155f/download
https://repository.ucc.edu.co/bitstreams/88b913be-2f7e-4c60-92b0-bbd63efb3989/download
https://repository.ucc.edu.co/bitstreams/75433656-beec-4521-801c-097b2e9b13da/download
https://repository.ucc.edu.co/bitstreams/8f615d76-a34b-4b8a-847b-c5f5c97c31e3/download
https://repository.ucc.edu.co/bitstreams/9a882ed2-d662-4cc0-8dcf-798e898b3b6f/download
https://repository.ucc.edu.co/bitstreams/81d0b48c-85f1-4ce1-aac8-ad2554b7fd52/download
https://repository.ucc.edu.co/bitstreams/b9ae25ab-9550-4677-bd7a-8794e90ea6ec/download
https://repository.ucc.edu.co/bitstreams/2ad09d4c-3806-4e2e-93c1-e076a0f7ee78/download
https://repository.ucc.edu.co/bitstreams/b37108d6-eed7-482a-a495-c4cac91b2e94/download
https://repository.ucc.edu.co/bitstreams/7737ef39-1d30-408c-b1a7-af2f92127048/download
bitstream.checksum.fl_str_mv 8a4605be74aa9ea9d79846c1fba20a33
f016f9390017d03177888c3eef2469b0
f0dd8a8f9703273dc0d7b0ede77252b5
862ce0d69ad335b79f429966f71870cf
0f44168126ba704f94539d00b3927984
5bd3ac6eaeaa7ab72846064e0aca4cd0
4971102bc898a1e7beb7101049460f3f
d3fde25511ce0b38bbb6ed8c6c88e503
8784d6fcd7f0a8a4a99ae7f9f08dc390
8d88ac0cfcece29f2e2c3fa6175985fc
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Institucional Universidad Cooperativa de Colombia
repository.mail.fl_str_mv bdigital@metabiblioteca.com
_version_ 1814247134599315456
spelling Rivera Sánchez, Gustavo ArmandoAlba Fortich, Miguel Eduardo2022-12-07T12:59:42Z2022-12-07T12:59:42Z2022-11https://hdl.handle.net/20.500.12494/47396Alba Fortich, M. E. (2022). Guía para la aplicación de ingeniería inversa de software [Proyecto de pregrado, Universidad Cooperativa de Colombia]. Repositorio Institucional Universidad Cooperativa de Colombia. https://repository.ucc.edu.co/handle/20.500.12494/47396Guía diseñada con fines educativos de cómo analizar un programa por medio de la depuración y para ser utilizada como método de aprendizaje sobre cómo aplicar la ingeniería inversa a un pequeño programa hecho en C++ con la herramienta x64dbg, analizando su funcionamiento interno por medio de la práctica de la depuración y comparando el código maquina producto de la compilación del código fuente de un ejemplo propuesto.Guide designed for educational purposes on how to analyze a program through debugging and to be used as a learning method on how to reverse engineer a small program made in C++ with the x64dbg tool, analyzing its inner workings through the practice of debugging and comparing the machine code product of the compilation of the source code of a proposed example.1. Objetivos. -- 1.1. Objetivo general. -- 1.2. Objetivos específicos. -- 2. Planteamiento del problema. -- 3. Justificación Práctica. -- 4. Alcance y limitaciones. -- 5. Cronograma. -- 6. Marco teórico. -- 7. Inicio de la guía. -- 7.1. Software necesario. -- 7.2. Ejecución. -- 7.3. Selección del archivo a analizar. -- 7.3.1. Código y descripción del programa usado. -- 7.3.2. Selección del programa. -- 7.3.3. El programa seleccionado y el manejo de la memoria. -- 7.3.4. Analizando analize_me.exe. -- 7.3.5. Pruebas de usabilidad. -- 8. Recomendaciones. -- 9. Conclusiones. -- 10. Fuentes. -- 11. Referencias.miguel.albaf@campusucc.edu.co46 p.Universidad Cooperativa de Colombia, Facultad de Ingeniería, Ingeniería de Sistemas, BogotáIngeniería de SistemasBogotáIngenieríaIngeniería inversaVulnerabilidadX64dbgDepuradorProgramaciónPrograma malignoEngineeringReverse engineeringVulnerabilityX64dbgDebuggerProgrammingMalwareGuía para la aplicación de ingeniería inversa de software.Trabajo de grado - Pregradohttp://purl.org/coar/resource_type/c_7a1finfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionAtribucióninfo:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Campus Internacional Ciberseguridad. ¿Qué es el reversing de malware? [en línea]. 20 de mayo de 2021. Disponible en: https://www.campusciberseguridad.com/blog/item/140-que-es-el-reversingEl Hacker. Foro de El Hacker [en línea]. Disponible en: https://foro.elhacker.net/ingenieria_inversa-b26.0/Heller, M. The Ghidra Book interview with co-author Kara Nance [en línea]. Octubre de 2020. Disponible en: https://searchsecurity.techtarget.com/feature/The-Ghidra-Book-interview-with-co-author-Kara-NanceNarvaja, R. Página de Ricardo Navaja [en línea]. Disponible en: https://sites.google.com/site/ricardonarvaja/homePrepodobniy, S. 9 Best Reverse Engineering Tools for 2021 [Updated] [en línea]. 24 de junio de 2021. Disponible en: https://www.apriorit.com/dev-blog/366-software-reverse-engineering-toolsacentocoop. (2 de Septiembre de 2020). Obtenido de acentocoop: https://acentocoop.es/blog/ingenieria-inversa/Asana, T. (7 de 10 de 2021). asana. Obtenido de asana: https://asana.com/es/resources/what-is-a-flowchartBaray, K. G. (2 de 2 de 2020). eleconomista. Obtenido de eleconomista: https://www.eleconomista.com.mx/tecnologia/que-es-un-bug-20200131-0079.htmlbyspel. (7 de 1 de 2022). byspel. Obtenido de byspel: https://byspel.com/que-es-codigo-fuente-en-programacion-diccionario/el-brujo. (31 de 5 de 2021). blog.elhacker. Obtenido de blog.elhacker: https://blog.elhacker.net/2021/05/herramientas-ingenieria-inversa.htmlFERNÁNDEZ, Y. (10 de 3 de 2021). xataka. Obtenido de xataka: https://www.xataka.com/basics/memoria-ram-que-sirve-como-mirar-cuanta-tiene-tu ordenador-moviFERNÁNDEZ, Y. (20 de 4 de 2021). xataka. Obtenido de xataka: https://www.xataka.com/basics/que-significa-que-aplicacion-programa-sea-32-64-bits-cual-debes-instalarGithub. (2021). Obtenido de https://docs.github.com/es/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-repositoriesGONZÁLEZ, G. (06 de 03 de 2019). genbeta. Obtenido de https://www.genbeta.com/herramientas/ghidra-poderosa-herramienta-ingenieria-inversa-nsa-ahora-open-source-esta-disponible-para-windows-linux-macosionos. (18 de Marzo de 2020). Obtenido de ionos: https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/ingenieria-inversa-de-software/locurainformaticadigital. (6 de Marzo de 2019). Obtenido de locurainformaticadigital: https://www.locurainformaticadigital.com/2019/03/06/ghidra-9-0-herramienta-ingenieria-inversa-nsa/Marín, R. (28 de enero de 2019). revistadigital. Obtenido de revistadigital: https://revistadigital.inesem.es/informatica-y-tics/ingenieria-inversa/Mendoza, M. L. (16 de 07 de 2020). openwebinars. Obtenido de https://openwebinars.net/blog/que-es-un-lenguaje-de-programacion/Mikejo5000, o. (19 de 8 de 2021). microsoft. Obtenido de microsoft: https://docs.microsoft.com/es-es/visualstudio/debugger/what-is-debugging?view=vs-2022#:~:text=Un%20depurador%20es%20una%20herramienta,hablamos%20cuando%20decimos%20%22depuraci%C3%B3n%22.narvaja, R. (3 de Enero de 2019). foro el hacker. Obtenido de foro el hacker: www.foro.com Ortiz, A. E. (22 de 7 de 2020). hostdime. Obtenido de hostdime: https://www.hostdime.com.pe/blog/que-es-una-vulnerabilidad-en-seguridad-informatica-ejemplos/#:~:text=En%20seguridad%20cibern%C3%A9tica%2C%20una%20vulnerabilidad,autorizadas%20en%20un%20sistema%20inform%C3%A1tico.Romero, M. S. (30 de Marzo de 2019). computerhoy. Obtenido de computerhoy: https://computerhoy.com/reportajes/tecnologia/consiste-ingenieria-inversa-396691PublicationLICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://repository.ucc.edu.co/bitstreams/0eab4fe9-75c6-471e-8149-f2812590155f/download8a4605be74aa9ea9d79846c1fba20a33MD54ORIGINAL2022_guia_aplicacion_ingenieria.pdf2022_guia_aplicacion_ingenieria.pdfTrabajo de gradoapplication/pdf2671447https://repository.ucc.edu.co/bitstreams/88b913be-2f7e-4c60-92b0-bbd63efb3989/downloadf016f9390017d03177888c3eef2469b0MD512022_guia_aplicacion_ingenieria-licencia.pdf2022_guia_aplicacion_ingenieria-licencia.pdfLicencia de usoapplication/pdf189765https://repository.ucc.edu.co/bitstreams/75433656-beec-4521-801c-097b2e9b13da/downloadf0dd8a8f9703273dc0d7b0ede77252b5MD532022_guia_aplicacion_ingenieria-aval.pdf2022_guia_aplicacion_ingenieria-aval.pdfAval asesorapplication/pdf168900https://repository.ucc.edu.co/bitstreams/8f615d76-a34b-4b8a-847b-c5f5c97c31e3/download862ce0d69ad335b79f429966f71870cfMD52THUMBNAIL2022_guia_aplicacion_ingenieria.pdf.jpg2022_guia_aplicacion_ingenieria.pdf.jpgGenerated Thumbnailimage/jpeg2555https://repository.ucc.edu.co/bitstreams/9a882ed2-d662-4cc0-8dcf-798e898b3b6f/download0f44168126ba704f94539d00b3927984MD552022_guia_aplicacion_ingenieria-licencia.pdf.jpg2022_guia_aplicacion_ingenieria-licencia.pdf.jpgGenerated Thumbnailimage/jpeg5099https://repository.ucc.edu.co/bitstreams/81d0b48c-85f1-4ce1-aac8-ad2554b7fd52/download5bd3ac6eaeaa7ab72846064e0aca4cd0MD562022_guia_aplicacion_ingenieria-aval.pdf.jpg2022_guia_aplicacion_ingenieria-aval.pdf.jpgGenerated Thumbnailimage/jpeg4926https://repository.ucc.edu.co/bitstreams/b9ae25ab-9550-4677-bd7a-8794e90ea6ec/download4971102bc898a1e7beb7101049460f3fMD57TEXT2022_guia_aplicacion_ingenieria.pdf.txt2022_guia_aplicacion_ingenieria.pdf.txtExtracted texttext/plain47074https://repository.ucc.edu.co/bitstreams/2ad09d4c-3806-4e2e-93c1-e076a0f7ee78/downloadd3fde25511ce0b38bbb6ed8c6c88e503MD582022_guia_aplicacion_ingenieria-licencia.pdf.txt2022_guia_aplicacion_ingenieria-licencia.pdf.txtExtracted texttext/plain5831https://repository.ucc.edu.co/bitstreams/b37108d6-eed7-482a-a495-c4cac91b2e94/download8784d6fcd7f0a8a4a99ae7f9f08dc390MD592022_guia_aplicacion_ingenieria-aval.pdf.txt2022_guia_aplicacion_ingenieria-aval.pdf.txtExtracted texttext/plain1393https://repository.ucc.edu.co/bitstreams/7737ef39-1d30-408c-b1a7-af2f92127048/download8d88ac0cfcece29f2e2c3fa6175985fcMD51020.500.12494/47396oai:repository.ucc.edu.co:20.500.12494/473962024-08-10 22:36:22.125open.accesshttps://repository.ucc.edu.coRepositorio Institucional Universidad Cooperativa de Colombiabdigital@metabiblioteca.comTk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=