el arte de la ingeniería inversa -...
TRANSCRIPT
![Page 1: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/1.jpg)
El Arte de la Ingenierıa Inversa
Ricardo J. Rodrıguez
#eCh!2004 - .:[ CrackSLatinoS ]:.www.ech2004.net
23 de Octubre de 2010
HackMeeting 2010
Zaragoza, Spain
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 1 / 44
![Page 2: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/2.jpg)
Outline
Outline
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 2 / 44
![Page 3: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/3.jpg)
Introduccion a la Ingenierıa Inversa
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 3 / 44
![Page 4: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/4.jpg)
Introduccion a la Ingenierıa Inversa Que es la Ingenierıa Inversa
Introduccion a la Ingenierıa Inversa (I)
Ingenierıa inversa (reverse engineering)
Descubrir como funciona (algo) a partir de un analisis exhaustivo
Mejora de productos/sistemas viejos
Diferentes dominios de aplicacion
Hardware (legacy hardware)Software (e.g. Samba)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 4 / 44
![Page 5: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/5.jpg)
Introduccion a la Ingenierıa Inversa Que es la Ingenierıa Inversa
Introduccion a la Ingenierıa Inversa (I)
Ingenierıa inversa (reverse engineering)
Descubrir como funciona (algo) a partir de un analisis exhaustivo
Mejora de productos/sistemas viejos
Diferentes dominios de aplicacion
Hardware (legacy hardware)Software (e.g. Samba)
Ir hacia atras en el ciclo de desarrollo
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 4 / 44
![Page 6: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/6.jpg)
Introduccion a la Ingenierıa Inversa Motivacion
Introduccion a la Ingenierıa Inversa (II)
Motivacion
Interoperabilidad
Documentacion inexistente
Analisis de productos finales
Auditorıa de seguridad
Espionaje industrial o militar (e.g. Segunda GM)
Eliminacion de anticopias o limitaciones de uso
Creacion de duplicados sin licencia
Academicos
Curiosidad innata
Para aprender de los errores de otros
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 5 / 44
![Page 7: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/7.jpg)
Introduccion a la Ingenierıa Inversa La Ingenierıa Inversa de codigo
Introduccion a la Ingenierıa Inversa (III)
Reverse engineering code
Tambien conocida como cracking
Eliminar protecciones de codigo (copyrights)
NO siempre es malo: deteccion de bugs, potenciales exploits, . . . entus programas
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 6 / 44
![Page 8: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/8.jpg)
Introduccion a la Ingenierıa Inversa La Ingenierıa Inversa de codigo
Introduccion a la Ingenierıa Inversa (III)
Reverse engineering code
Tambien conocida como cracking
Eliminar protecciones de codigo (copyrights)
NO siempre es malo: deteccion de bugs, potenciales exploits, . . . entus programas
Crackers: algo mas que unas galletas. . .
NO CONFUNDIR con los criminal hackers
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 6 / 44
![Page 9: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/9.jpg)
Conocimientos previos
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 7 / 44
![Page 10: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/10.jpg)
Conocimientos previos
Conocimientos previos (I)
Ensamblador
Basico e imprescindiblehttp://www.intel.com/products/processor/manuals/
Funcionamiento interno SS.OO.
¿Que ocurre al pulsar un boton?
¿Y al aceptar un checkbox?La biblia de APIs de Windows: WinXXAPI (32 o 64 bits)
http://msdn.microsoft.com/en-us/library/Aa383723
http://ech2004.net/download.php?archivo=198&tipo=t
Estructura interna de un PE (Portable Executable)
Cada lenguaje de programacion produce una cabecera diferente. . .. . . pero siempre las mismas primeras instruccioneshttp://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
Debuggear programas
Breakpoints
Step into, step over, . . .
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 8 / 44
![Page 11: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/11.jpg)
Conocimientos previos
Conocimientos previos (II)
Anillos de privilegio R0 . . .R3
Mas privilegios (kernel) a menos privilegios (aplicaciones)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 9 / 44
![Page 12: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/12.jpg)
Conocimientos previos
Conocimientos previos (II)
Anillos de privilegio R0 . . .R3
Mas privilegios (kernel) a menos privilegios (aplicaciones)
“If a program runs, then it’s crackeable”R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 9 / 44
![Page 13: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/13.jpg)
Conocimientos previos
Conocimientos previos (III)
Tipos de aplicaciones
Freeware: software de libre distribucion
Shareware: software con licencia de distribucion
Demoware: algunas features del software inhabilitadasTrialware: software con limitacion temporal de uso
Adware: publicidad embebida
Spyware: malo malo. . .
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 10 / 44
![Page 14: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/14.jpg)
Cinturon de herramientas
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 11 / 44
![Page 15: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/15.jpg)
Cinturon de herramientas Desensambladores y editores hexadecimales
Cinturon de herramientas (I)
Desensambladores
W32Dasm(http://ech2004.net/download.php?archivo=52&tipo=h)
HDasm (http://hdasm.narod.ru/)
IDA Pro (http://www.hex-rays.com/idapro/)
Especıficos
p32Dasm (VBasic)Reflector (.NET)DJ Java Decompiler (Java)DeDe (Delphi)DeRefox (VisualFox). . .
Editor hexadecimal
HexWorkshop (http://www.bpsoft.com/)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 12 / 44
![Page 16: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/16.jpg)
Cinturon de herramientas Debuggers
Cinturon de herramientas (II)
Debuggers
Soft ICE
Trabaja(ba) en R0Hay parches para trabajar sobre WinXP
OllyDBG (http://www.ollydbg.de/)
Trabaja en R3Muchas variantes con muchos plugins
EDB (http://freshmeat.net/projects/edebugger)
TitanEngine(http://www.reversinglabs.com/products/TitanEngine.php)
. . .
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 13 / 44
![Page 17: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/17.jpg)
Cinturon de herramientas Identificadores, editores PE y de recursos
Cinturon de herramientas (III)
(www.ech2004.net, seccion ’Herramientas Imprescindibles’)
Identificadores y editores PE
PEiD
PEEditor
Sabueso
RDG Packer Detector
. . .
Visores de recursos
eXe Scope
XNResource Editor
Resorce Hacker
Restorator
. . .R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 14 / 44
![Page 18: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/18.jpg)
Cinturon de herramientas Dumpeadores de memoria y emuladores
Cinturon de herramientas (IV)
(www.ech2004.net, seccion ’Herramientas Imprescindibles’)
Dumpeadores de memoria
LordPE Deluxe
SirPE (para 32 y 64 bits)
Pupe
ProcDump
. . .
Emuladores
HASP
Sentinel
Rock4
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 15 / 44
![Page 19: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/19.jpg)
Cinturon de herramientas Monitores de APIs y reparadores de IAT
Cinturon de herramientas (V)
(www.ech2004.net, seccion ’Herramientas Imprescindibles’)
Monitores de APIs
KaKeeware Application Monitor
Event2Adress (E2A)
API Scan
WinAPIOverride32
. . .
Reparadores de IAT
Import REC (el abuelo Simpson :))
ReVirgin
Universal Import Fixer
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 16 / 44
![Page 20: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/20.jpg)
Cinturon de herramientas Documentacion
Cinturon de herramientas (VI)
Documentacion: manuales y tutoriales
La mas importante → hay que leer para aprender
Internet, una herramienta util y al alcance de cualquieraGrupos de cracking
Hispano-hablantes (WkT, CLS, eCh, . . . )Extranjeros (RZR, TNT!, ARTeam, RE, . . . )
Foros
elHacker (seccion ’Programacion→Ingenierıa Inversa’)ExeToolsWoodMan
Paginas personales (Karpoff, Shoulck, Saccopharynx, +NCR, AbsSha,. . . )Tuts4You (http://www.tuts4you.com/)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 17 / 44
![Page 21: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/21.jpg)
Cinturon de herramientas Documentacion
Cinturon de herramientas (VI)
Documentacion: manuales y tutoriales
La mas importante → hay que leer para aprender
Internet, una herramienta util y al alcance de cualquieraGrupos de cracking
Hispano-hablantes (WkT, CLS, eCh, . . . )Extranjeros (RZR, TNT!, ARTeam, RE, . . . )
Foros
elHacker (seccion ’Programacion→Ingenierıa Inversa’)ExeToolsWoodMan
Paginas personales (Karpoff, Shoulck, Saccopharynx, +NCR, AbsSha,. . . )Tuts4You (http://www.tuts4you.com/)
Practica, practica y (un poco mas de) practica
Cualquier (pobre) programa que caiga en nuestras manosCrackmes (http://www.crackmes.de/)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 17 / 44
![Page 22: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/22.jpg)
Tecnicas de analisis
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 18 / 44
![Page 23: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/23.jpg)
Tecnicas de analisis Codigo muerto
Analisis de codigo muerto: descripcion
Programas sin proteccion (o proteccion mınima)
Es raro que funcione
Herramientas necesarias
Identificador PEDesensambladorEditor HexadecimalCerebroIntuicionLapiz y papelSuerte :)
Casos tıpicos
Salto JE/JNE (JZ/JNZ) para registro correctoNumero de registro embebido en la aplicacion
Muy sencillo (queremos desafıos!)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 19 / 44
![Page 24: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/24.jpg)
Tecnicas de analisis Codigo muerto
Analisis de codigo muerto: ejemplos (I)NOPeo de salto de comprobacion
Una o varias rutinas de comprobacion de serial
NOPeo: sustituir codigo maquina por NOP (No OPeration)
JE/JNE (74/75) → NOP (90)JE/JNE (74/75) → JMP (EB)a
Variantes: JX/JNX (cualquiera) → NOP (90) o JMP (EB)
aSi el salto es largo (destino a mas de 32 bits desde el lugar de origen), varıa. . .
Pasos1 Identificar PE (¿esta protegido?)
2 Desensamblar
3 Buscar mensajes de chico malo
4 Analizar camino hasta el mensaje
5 NOPear salto/desviar camino
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 20 / 44
![Page 25: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/25.jpg)
Tecnicas de analisis Codigo muerto
Analisis de codigo muerto: ejemplos (II)A la caza del serial
Una o varias rutinas de comprobacion de serial
El codigo de registro (serial) es unico y. . .
. . . esta embebido en la aplicacion ¡!
Pasos1 Identificar PE (¿esta protegido?)
2 Desensamblar
3 Buscar mensajes de chico malo
4 Husmear la zona
5 Comprobar cadenas sospechosas :)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 21 / 44
![Page 26: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/26.jpg)
Tecnicas de analisis Codigo ’vivo’
Analisis de codigo ’vivo’: descripcion
Programas con (o sin) proteccion
Herramientas necesarias
Identificador PEDesensambladorDebuggerCualquiera del cinturon (dependera de la aplicacion a crackear)CerebroIntuicionLapiz y papelSuerte :)
Mas complicados (i.e., divertido)
Cada aplicacion es un reto nuevo y diferente
Casos tıpicos
Mmm. . . ¿cualquiera?
(luego veremos un ejemplo. . . )R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 22 / 44
![Page 27: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/27.jpg)
Algunos metodos anticracking
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 23 / 44
![Page 28: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/28.jpg)
Algunos metodos anticracking Algunas APIs antidebugging
Algunas APIs antidebugging
IsDebuggerPresent
NtGlobalFlag
ProcessHeapFlag
FindWindowA
SetUnhandledExceptionFilter/UnhandledExceptionFilter
CreateToolhelp32Snapshot
ZwQueryInformationProces
CloseHandle
CsrGetProcessId
Lectura recomendada: http://pferrie.tripod.com/
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 24 / 44
![Page 29: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/29.jpg)
Algunos metodos anticracking Metodos mas avanzados
Metodos mas avanzados (I)
Packers
Reduce tamano y/o encripta (scrambling) el codigo de los ejecutables
Modifica secciones del PE (y mas cosas. . . )
Numerosos packers en el mercado: UPX, ASPack, ASProtect, . . .
http://en.wikipedia.org/wiki/Executable_compression
Algunos faciles de crackear, otros no tanto :)
Pasos a realizar1 Hallar el OEP (Original Entry Point)2 Dumpear el proceso de memoria (estara desempacado!)3 Arreglar la IAT (Import Address Table)
VM Packers (mas complicados, pero no imposibles)
Misma idea que packers PERO una VM ejecuta el codigo
Ejemplos: Themida, EXECryptor, CodeVirtualizer
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 25 / 44
![Page 30: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/30.jpg)
Algunos metodos anticracking Metodos mas avanzados
Metodos mas avanzados (II)
Metodos complementarios de proteccion
Redireccionamiento de la IAT
Secciones virtuales (antidump)
Emulacion de API
Cambios en la estructura del ejecutable (PE header)
Ofuscamiento de codigo (codigo basura)
Bytes perdidos (stolen bytes)
Deteccion de debuggers, otras tools o breakpoints (BP y HBP)
Nanomites (usado por Armadillo)
Deteccion de modificaciones
CRC
MD5
GetFileTimeA, CreateFileA
Monitoreo de zona de memoriaR.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 26 / 44
![Page 31: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/31.jpg)
Tecnicas de cracking
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 27 / 44
![Page 32: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/32.jpg)
Tecnicas de cracking CD Check
Tecnicas de cracking (I): CD Check
Verificacion del CD presente en la unidad
Fichero concreto en el CD de la unidad (algunas veces)
Protecciones mas avanzadas: SafeDisc, StarForce
Uso de unidades virtuales: DaemonTools
APIs tıpicas
GetDriveTypeA
EAX = 5 si hay CD
GetVolumeInformationA
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 28 / 44
![Page 33: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/33.jpg)
Tecnicas de cracking Patching y loaders
Tecnicas de cracking (II): Patching y loaders
Patching
Objetivo: cambiar flujo natural de ejecucion del programaCambio de instrucciones maquina
Modificando (tras un CMP o TEST) o insertando saltosSustituyendo por NOPs
Metodos habituales: busqueda de cadenas o chequeo de APIs
Cambios estaticos (i.e., permanentes)
Loaders
Como el patching, pero “en caliente” → mas elegante
Dos tipos (basicos)
SimplesDebuggers (mas complejos): util para programas empacados
Cambios dinamicos (i.e., temporales)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 29 / 44
![Page 34: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/34.jpg)
Tecnicas de cracking Time-trials y Registro de Windows
Tecnicas de cracking (III): Time-trials y Registro
Time-trials
Proteccion por tiempo (uso limitado X dıas/minutos)
APIs tıpicas de chequeo
GetLocalTime
GetFileTime
GetSystemTime
Registro de Windows
Guardan datos en el Registro de Windows
APIs tıpicas
RegCloseKey
RegCreateKeyEx
RegOpenKeyEx
RegSetValueEx
RegQueryValueEx
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 30 / 44
![Page 35: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/35.jpg)
Tecnicas de cracking Captura del serial y Keygenning
Tecnicas de cracking (V): Captura del serial y Keygenning
Captura del serial
Objetivo: conseguir numero de registro del programa
Identico para todos los usuarios
Embebido en la aplicacion
Facil: busqueda de cadenas con patrones conocidos. . .
Keygenning
Objetivo: encontrar algoritmo de generacion de claves
Complejidad del algoritmo variable
Cada usuario tiene un numero de registro diferente
Ingenierıa inversa pura y dura
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 31 / 44
![Page 36: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/36.jpg)
Tecnicas de cracking Archivos de licencia
Tecnicas de cracking (VI): Archivos de licencia
Se registran mediante archivos de licencia
Chequeos rutinarios contra servidor de la empresa (a veces)
APIs tıpicas
Conexion: connect, WSAConnectRecepcion: recv, recvfrom, WSARecv, WSARecvFrom, WSARecvMsgEnvıo: send, sendto, WSASend, WSASendTo, WSASendMsg
Algunos usan criptografıa (i.e., licencia codificada)
MUY complicados de conseguir licencia correcta→ Dependera del algoritmo criptografico usado
Solucion: intentar parchear. . .
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 32 / 44
![Page 37: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/37.jpg)
Tecnicas de cracking Desempacado (unpacking)
Tecnicas de cracking (VII): Desempacado (unpacking)
Programas protegidos
Pueden ser muy complicados (anti-dumps, scrambling, . . . )
Pasos a realizar1 Hallar el OEP (Original Entry Point)
Stolen bytes
Cambios en la cabecera PE
2 Dumpear el proceso de memoria (estara desempacado!)
Secciones virtualesOfuscacion de codigo
3 Arreglar la IAT (Import Address Table)
Emulacion de APIsRedireccionamiento de APIs
Lista:http://en.wikipedia.org/wiki/Executable_compression
Existen unpackers automaticos: tools propias o scripts
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 33 / 44
![Page 38: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/38.jpg)
Ejemplo practico
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 34 / 44
![Page 39: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/39.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (I): estudio del crackME
CrackMe sencillito de http://www.crackmes.de
Objetivo: hacer un generador de claves
Pasos1 Analizar para ver si esta limpio
2 Insertar nombre y codigo para ver chicomalo
3 Cargar en debugger (e.g., OllyDBG)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 35 / 44
![Page 40: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/40.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (I): estudio del crackME
CrackMe sencillito de http://www.crackmes.de
Objetivo: hacer un generador de claves
Pasos1 Analizar para ver si esta limpio
2 Insertar nombre y codigo para ver chicomalo
3 Cargar en debugger (e.g., OllyDBG)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 35 / 44
![Page 41: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/41.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (1)
Pasos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 36 / 44
![Page 42: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/42.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (1)
Pasos1 Llamada a IsDebuggerPresent → ocultar el Olly
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 36 / 44
![Page 43: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/43.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (1)
Pasos1 Llamada a IsDebuggerPresent → ocultar el Olly
2 BP en GetDlgItemTextA e introducimos datos. . .
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 36 / 44
![Page 44: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/44.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (1)
Pasos1 Llamada a IsDebuggerPresent → ocultar el Olly
2 BP en GetDlgItemTextA e introducimos datos. . .
3 Alcanzamos codigo de la aplicacion (CTRL+ F9)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 36 / 44
![Page 45: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/45.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (2)
Condiciones del nombre
EAX: longitud del nombre
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 37 / 44
![Page 46: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/46.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (2)
Condiciones del nombre
EAX: longitud del nombre
EAX > 4 && EAX ≤ 0Ah
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 37 / 44
![Page 47: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/47.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (2)
Condiciones del nombre
EAX: longitud del nombre
EAX > 4 && EAX ≤ 0Ah
Si longitud de serial= 0 → MessageBoxA
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 37 / 44
![Page 48: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/48.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (3)
Busqueda de cadenas referenciadas
Cadenas de ’chico bueno’ y ’chico malo’
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 38 / 44
![Page 49: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/49.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (3)
Busqueda de cadenas referenciadas
Cadenas de ’chico bueno’ y ’chico malo’
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 38 / 44
![Page 50: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/50.jpg)
Ejemplo practico Estudio del crackME
Ejemplo practico (II): estudio del crackME (3)
Busqueda de cadenas referenciadas
Cadenas de ’chico bueno’ y ’chico malo’
lstrcmpA: comparacion de cadenas
Valor de EAX determina igualdad
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 38 / 44
![Page 51: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/51.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (1)
0x401153: Inicio algoritmo
BP para estudio ’en caliente’
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 39 / 44
![Page 52: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/52.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (1)
0x401153: Inicio algoritmo
BP para estudio ’en caliente’
0x40316A: buffer longitud
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 39 / 44
![Page 53: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/53.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (1)
0x401153: Inicio algoritmo
BP para estudio ’en caliente’
0x40316A: buffer longitud
EDI: buffer cadena
ESI: otro buffer :)
EAX=EBX=ECX=EDX=0
EDX=longitud
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 39 / 44
![Page 54: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/54.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (1)
0x401153: Inicio algoritmo
BP para estudio ’en caliente’
0x40316A: buffer longitud
EDI: buffer cadena
ESI: otro buffer :)
EAX=EBX=ECX=EDX=0
EDX=longitud
EBX=contador
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 39 / 44
![Page 55: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/55.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (2)
EDI = buffer del nombreEDX = longitud del nombreEBX = 1while EBX < EDX do
AL = caracter apuntado por EDI
if AL ≤ 0x5A and AL ≥ 0x41 then
AL+ = 0x2Cend
ECX+ = EAX
EDI + +
end
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 40 / 44
![Page 56: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/56.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (2)
EDI = buffer del nombreEDX = longitud del nombreEBX = 1while EBX < EDX do
AL = caracter apuntado por EDI
if AL ≤ 0x5A and AL ≥ 0x41 then
AL+ = 0x2Cend
ECX+ = EAX
EDI + +
end
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 40 / 44
![Page 57: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/57.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (2)
EDI = buffer del nombreEDX = longitud del nombreEBX = 1while EBX < EDX do
AL = caracter apuntado por EDI
if AL ≤ 0x5A and AL ≥ 0x41 then
AL+ = 0x2Cend
ECX+ = EAX
EDI + +
end
ECX+ = 0x29AECX∗ = 0x3039ECX− = 0x17ECX∗ = 0x9
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 40 / 44
![Page 58: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/58.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (3)
EBX = 0EAX = ECX
ECX = 0x0Arepeat
EDX = 0EDX = EAX mod ECX
EAX/ = ECX
DL+ = 0x30Guardar DL en el buffer ESI + EBX
EBX + +
until EAX = 0
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 41 / 44
![Page 59: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/59.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (3)
EBX = 0EAX = ECX
ECX = 0x0Arepeat
EDX = 0EDX = EAX mod ECX
EAX/ = ECX
DL+ = 0x30Guardar DL en el buffer ESI + EBX
EBX + +
until EAX = 0
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 41 / 44
![Page 60: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/60.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (3)
EBX = 0EAX = ECX
ECX = 0x0Arepeat
EDX = 0EDX = EAX mod ECX
EAX/ = ECX
DL+ = 0x30Guardar DL en el buffer ESI + EBX
EBX + +
until EAX = 0
EDI = buffer 0x04030C8Revertimos la cadena apuntada por ESI y guardamos en EDI
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 41 / 44
![Page 61: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/61.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (3)
EBX = 0EAX = ECX
ECX = 0x0Arepeat
EDX = 0EDX = EAX mod ECX
EAX/ = ECX
DL+ = 0x30Guardar DL en el buffer ESI + EBX
EBX + +
until EAX = 0
EDI = buffer 0x04030C8Revertimos la cadena apuntada por ESI y guardamos en EDI
Anadimos resto del nombre (desde el 4o caracter) al final de lanueva cadena
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 41 / 44
![Page 62: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/62.jpg)
Ejemplo practico Algoritmo de generacion
Ejemplo practico (III): algoritmo de generacion (3)
EBX = 0EAX = ECX
ECX = 0x0Arepeat
EDX = 0EDX = EAX mod ECX
EAX/ = ECX
DL+ = 0x30Guardar DL en el buffer ESI + EBX
EBX + +
until EAX = 0
EDI = buffer 0x04030C8Revertimos la cadena apuntada por ESI y guardamos en EDI
Anadimos resto del nombre (desde el 5o caracter) al final de lanueva cadenaY ya se compara la cadena construida con la introducida
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 41 / 44
![Page 63: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/63.jpg)
Conclusiones y agradecimientos
1 Introduccion a la Ingenierıa InversaQue es la Ingenierıa InversaMotivacionLa Ingenierıa Inversa de codigo
2 Conocimientos previos3 Cinturon de herramientas
Desensambladores y editores hexadecimalesDebuggersIdentificadores, editores PE y de recursosDumpeadores de memoria y emuladoresMonitores de APIs y reparadores de IATDocumentacion
4 Tecnicas de analisisCodigo muertoCodigo ’vivo’
5 Algunos metodos anticrackingAlgunas APIs antidebuggingMetodos mas avanzados
6 Tecnicas de cracking
CD CheckPatching y loaders
Time-trials y Registro de WindowsCaptura del serial y Keygenning
Archivos de licenciaDesempacado (unpacking)
7 Ejemplo practicoEstudio del crackMEAlgoritmo de generacion
8 Conclusiones y agradecimientos
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 42 / 44
![Page 64: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/64.jpg)
Conclusiones y agradecimientos
Conclusiones y agradecimientos
Conclusiones
Cualquier proteccion es crackeable
Mundo de constante evolucion → nuevas protecciones, nuevosmetodos
Leer y practicar mucho
Usar y programar mas software libre
Que no ’hacer’ mas software ’libre’ :)
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 43 / 44
![Page 65: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/65.jpg)
Conclusiones y agradecimientos
Conclusiones y agradecimientos
Conclusiones
Cualquier proteccion es crackeable
Mundo de constante evolucion → nuevas protecciones, nuevosmetodos
Leer y practicar mucho
Usar y programar mas software libre
Que no ’hacer’ mas software ’libre’ :)
Agradecimientos
CrackSLatinoS
Gente del HackMeeting
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 43 / 44
![Page 66: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/66.jpg)
Conclusiones y agradecimientos
Conclusiones y agradecimientos
Conclusiones
Cualquier proteccion es crackeable
Mundo de constante evolucion → nuevas protecciones, nuevosmetodos
Leer y practicar mucho
Usar y programar mas software libre
Que no ’hacer’ mas software ’libre’ :)
Agradecimientos
CrackSLatinoS
Gente del HackMeeting
A vosotros por aguantarme! :D
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 43 / 44
![Page 67: El Arte de la Ingeniería Inversa - unizar.eswebdiis.unizar.es/.../invitedTalks/slides_HackMeeting10.pdf · 2015-04-28 · Outline Outline 1 Introduccio´n a la Ingenier´ıa Inversa](https://reader031.vdocuments.net/reader031/viewer/2022013020/5e91b6e229f9d57b8f382b05/html5/thumbnails/67.jpg)
El Arte de la Ingenierıa Inversa
Ricardo J. Rodrıguez
#eCh!2004 - .:[ CrackSLatinoS ]:.www.ech2004.net
23 de Octubre de 2010
HackMeeting 2010
Zaragoza, Spain
R.J. Rodrıguez El Arte de la Ingenierıa Inversa HackMeeting 2010 44 / 44