indice de 'intro con olly

Upload: wilson-leonardo-caro-caro

Post on 02-Nov-2015

155 views

Category:

Documents


7 download

DESCRIPTION

curso crack

TRANSCRIPT

  • El presente es un ndice de los temas tratados por Ricardo Narvaja en su curso introduccin al cracking con OllyDbg desde cero al convertirse este en una gua obligada de consulta tanto para el cracker principiante como para quienes ya tienen conocimientos de este arte he tratado de hacerlo lo ms detallado posible para poder hallar rpidamente el tema que estemos buscando. He adjuntado tambin material publicado directamente en la lista de CLS que tiene que ver con algn tema tratado en el curso y que consider importante a pesar de no formar parte oficialmente de los tutes de Ricardo, por ejemplo:

    Esto indica que el tema contiene un comentario dentro del mismo .pdf. Los he insertado como comentario para evitar el hecho de adjuntar archivos. Esperando sea til, aqu va esta contribucin, si consideras que algo debe ser corregido o agregado puedes contactarme al siguiente mail: [email protected] indicndome el tema exacto a ser considerado y en que parte del tute se halla.

    Capitulo I

    Areas del OllyDbg Desemsamblado Registros Dump Stack o pila

    Otras ventanas del OllyDbg

    View Log View Executables View Memory View Threads View Windows View Handles View CPU View Patches

    Capitulo XLIV

    Desempacado de ACProtect1.09g.f con todas las funciones habilitadas (3 parte) Arreglando los stolen bytes y el OEP Reparando los antidump

    Cmo injertar si la seccin a crear ya est ocupada? (Anexo parte 44)

  • View Call Stack View BreakPoints View References View Run Trace

    Configuracin del OllyDbg como JIT (Just in Time Debugger) Como agregar plugins al OllyDbg Atajos del teclado

    F2 F7 F8 F9 F12

    Capitulo II

    Sistemas numricos

    Binario Decimal Hexadecimal

    Numeros positivos y negativos en hexadecimal Caracteres ASCII Qu es el stack o pila?

    Capitulo III

    Qu son los registros y para qu sirven? Divisin de los registros (EAX AH | AL)

    Cmo cambiar los valores de los registros? Qu son los flags o banderas?

    El flag O o flag Overflow (desbordamiento) El flag A o flag Auxiliar El flag P o flag de Paridad El flag Z o flag Zero (cero) El flag S o Sign flag (flag de signo) El flag C o Carry flag (flag de acarreo) El flag T, D e I

    Capitulo IV

    Instrucciones ASM NOP PUSH POP

  • PUSHAD POPAD PUSHA POPA MOV MOVSX MOVZX LEA XCHG

    Capitulo V

    Instrucciones matemticas

    INC DEC ADD ADC SUB SBB MUL IMUL DIV XADD NEG

    Instrucciones lgicas

    AND OR XOR NOT

    Capitulo VI

    Comparaciones y saltos condicionales

    CMP TEST

    Saltos

    JMP JE O JZ JNE O JNZ JS JNS JP O JPE JNP O JNPE JO JNO JB JNB JBE

  • JNBE JL JA JG JAE JGE

    Capitulo VII

    Instrucciones assembler

    CALL RET

    Capitulo VIII

    Instrucciones para loops o ciclos (bucles)*

    LOOP LOOPZ LOOPE LOOPNZ LOOPNE

    Instrucciones para el manejo de cadenas de bytes

    MOVS REP REPE REPZ LODS STOS CMPS

    Modos de direccionamiento

    Directo Indirecto

    *En este captulo hay explicacin de como formar un loop.

    Capitulo IX

    Definiciones Entry Point DLL Funciones de exportacin APIs

    Como sacar el listado de APIs que usa un programa? [ Name (label) in current module CTRL+N ] Como usa un programa las APIs?

    Capitulo X BreakPoints

    BreakPoint comn o BPX BreakPoints en memoria o Memory BreakPoint

  • Capitulo XI

    Hardware BreakPoints o HBP

    BreakPoints condicionales o conditional breakpoint

    BreakPoints condicionales con logueo o conditional log breakpoints

    Capitulo XII

    Como aprovechar los mensajes en Windows? Message BreakPoints o BMSG

    Capitulo XIII

    Pescando y revirtiendo seriales

    Harcoded API GetDlgItemTextA

    Capitulo XIV

    Solucin del crackme propuesto en el capitulo anterior

    API lstrcmpA API GetWindowTextA

    Otro hardcoded

    API memset API lstrlen

    Capitulo XV

    Solucin del crackme propuesto en el capitulo anterior (Splish) Solucin del serial de un crackme empaquetado (Sambo)

    Uso de los mensajes de Windows

    Capitulo XVI Crackmes con serial variable

    Crackme de CrueHead Crackme Splish parte de name/serial

    Instruccin CDQ Instruccin IDIV ESI

    Capitulo XVII

    Solucin del crackme propuesto en el capitulo anterior (Mexcrk1) Juego Canasta v5.0*

  • *En este programa el botn OK para ingresar el serial est desactivado.

    Capitulo XVIII

    Uso de los mensajes de Windows para pescar seriales (WM_KEYUP) Crackme de Stzwei (crackme_4stz)

    Capitulo XIX

    Deteccin del debugger

    API IsDebuggerPresent Localizacin del byte correspondiente Parchando el crackme para no ser detectados Cambiando el flag para no ser detectados Ocultar el debugger con un plugin (HideDebugger 1.23f)

    Capitulo XX

    Deteccin del OllyDbg por medio del nombre del proceso

    API OpenProcess API EnumProcessesModules API GetModuleBaseName

    Uso de la API GetProcAddress

    Capitulo XXI Ms mtodos antidebugging

    API CreateToolhelp32Snapshot API Process32First API Process32Next API TerminateProcess API FindWindow API EnumWindows

    Capitulo XXII

    Antidebugging Excepciones no manejadadas por OllyDbg (Unhandled Exceptions) API SetUnhandledExceptionFilter API ZwQueryInformationProcess API UnhandledExceptionFilter

    Capitulo XXIII

    Fin del estudio de mtodos antidebugging Ubicacin de los bytes:

    NTGloblalFlag HeapFlags

  • API OutDebugString

    Capitulo XXIV Solucin al crackme del capitulo anterior (antisocial)

    Usando plugins y sin plugins

    Capitulo XXV

    Manejo de excepciones Concepto de excepcin

    Diferentes tipos de excepciones

    Acceso a memoria no vlida Divisin entre cero (0) Instruccin no valida intento de ejecucin de instruccin privilegiada

    Qu ocurre cuando se genera una excepcin? Qu es el SEH? Como se instala un manejador de excepciones? Cmo cambiar el permiso de las secciones desde olly?

    Capitulo XXVI Uso del olly parcheado 5 (olly parcheado para buscar OEPs) Cracking en Visual Basic (VB)

    Significado de las partes del nombre de una API de VB Ejemplos de APIs de:

    Conversin de datos Mover datos Comparaciones Matemticas Miscelneas

    Capitulo XXVII

    Cmo est compuesto un .exe hecho en VB?

    El mtodo del 4C

    Capitulo XXVIII

    La guerra total Otra foma de eliminar nags en VB

    Injertando en la .dll de VB

  • Capitulo XXIX

    P-Code (Pseudo-Code) Reconocimiento, estudio y cracking (la API MethCallEngine) Algunos OPCODES

    Capitulo XXX

    Fin del estudio de programas en P-CODE

    Ms OPCODES Solucin del crackme dejado en el captulo anterior

    Capitulo XXXI

    Nociones iniciales de desempaquetado (desempacado)

    Para que se empaca un programa? Esquema del funcionamiento de un programa empacado Concepto de OEP Qu es un loader y como funciona? (una explicacin breve)

    Capitulo XXXII

    Mtodo de trabajo con archivos empacados Mtodos para llegar al OEP

    Mirar o buscar opcodes en el listado muerto del programa empacado antes de ejecutar

    Usar el buscador de OEPs que tiene el olly Usar el olly parchado 5 (olly parcheado para buscar OEPs) Mtodo del pushad OEPs en programas hechos con VB (native o P-Code) Mtodo de las excepciones Usar alguna API muy usada por el empacador Mtodo de la primera API ejecutada por el programa

    Capitulo XXXIII

    Qu es la IAT? Cmo la llena el sistema? Qu es la IT? Uso de LordPE (para dumpear)

    Capitulo XXXIV

    Desempacado manual de UPX y reparacin de la IAT

    Cmo reparar la IAT? Uso de PE Tools (para dumpear)

  • Capitulo XXXV

    Desempacado de AsPack 2.12 Uso de OIllyDump (para dumpear) Uso de Import REConstructor (para reparar la IAT)

    Capitulo XXXVI

    Desempacado de Crunch 5.0.0 o Bit-Arts Desempacado de tElock 0.98b1

    Introduccin a las entradas de la IAT redireccionadas

    Capitulo XXXVII Mtodos para reparar entradas de la IAT redireccionadas

    Mtodo manual Uso del traceador condicional de olly

    Uso de los plugins del Import REConstructor Uso de los traceadores genricos del propio Import REContructor Uso del JMP CALL mgico (salto mgico)

    Capitulo XXXVIII

    Desempacado de yoda's Protector 1.3

    Capitulo XXXIX

    Uso del olly parcheado 4 Desempacado de PELock1.06.d (1 parte) Logueo propio de las excepciones Estudio de los stolen bytes

    Cmo reconocer si existen stolen bytes? Arreglo de cdigo con stolen bytes mediante binary copy y binary paste

    Stolen code

    Capitulo XL

    Scripts para tElock y UPX

    Capitulo XLI

    Desempacado de PELock1.06.d (2 parte) Mtodos antidump

    Agregando una seccin que crea el packer en tiempo de ejecucin

  • Capitulo XLII

    Desempacado de ACProtect1.09g.f con todas las funciones habilitadas (1 parte)

    Usando un script que restaure los hardware breakpoints borrados por el empacador para llegar al OEP

    Capitulo XLIII

    Desempacado de ACProtect1.09g.f con todas las funciones habilitadas (2 parte) Usando un script que repare la IAT

    Capitulo XLIV

    Desempacado de ACProtect1.09g.f con todas las funciones habilitadas (3 parte)

    Arreglando los stolen bytes y el OEP Reparando los antidump

    Cmo injertar si la seccin a crear ya est ocupada? (Anexo parte 44)

    Capitulo XLV

    Desempacado de ReCrypt0.80* Otro mtodo usando Estricnina y Pokemon Anti Atach (Anexo escrito por Arapumk)** *Este crackme no corre tan fcilmente en olly y Ricardo muestra algunos mtodos que pueden servir en otros casos previo a mostrar la forma de lograr que corra en olly. **Otra forma de atacar el mismo empacador. Arapumk muestra un mtodo alternativo con la excelencia a la que nos tiene acostumbrados.

    Capitulo XLVI

    Un programa protegido con protecciones personalizadas, patrick.exe (1 parte) Comprobacin de que programa lo abri (API Process323Next) Comprobacin de si los mdulos corresponden a Explorer.exe (API

    Module32First) Comprobacin de si es el Explorer.exe mediante la ruta (API

    GetWindowsDirectory) Obtener la ruta del crackme (API GetModuleFileName) Verificacin de cuantos procesos estn corriendo en el crackme (API

    CreateMutex) Creacin de un segundo proceso (API CreateProcess)

    Capitulo XLVII

    Un programa protegido con protecciones personalizadas, patrick.exe (2 parte)

    Ms protecciones y formas de pasarlas

    APOKLIPTIKONoteBueno me preguntaron como se hacia para injertar si la seccin quedebes crear ya esta ocupada como en este caso, en mi maquina laseccin del antidump empieza en 150000 y all el sistema creo un heaptiene valores necesarios para correr el programa si solo borramos ycopiamos lo del antidump no correr0046B017 60 PUSHAD0046B018 90 NOP0046B019 68 00400000 PUSH 40000046B01E 68 00800200 PUSH 280000046B023 68 00001500 PUSH 1500000046B028 FF15 A4094600 CALL NEAR DWORD PTRDS:[4609A4] ; kernel32.VirtualFree0046B02E 90 NOP0046B02F 6A 04 PUSH 40046B031 68 00200000 PUSH 20000046B036 68 00C00300 PUSH 3C0000046B03B 68 00001500 PUSH 1500000046B040 FF15 A8094600 CALL NEAR DWORD PTRDS:[4609A8] ; kernel32.VirtualAlloc0046B046 90 NOP0046B047 6A 04 PUSH 40046B049 68 00100000 PUSH 10000046B04E 68 00C00300 PUSH 3C0000046B053 68 00001500 PUSH 1500000046B058 FF15 A8094600 CALL NEAR DWORD PTRDS:[4609A8] ; kernel32.VirtualAlloc0046B05E 61 POPAD0046B05F 90 NOPCon esto se borra la seccin 150000 y luego sse le puede copiar la deldumpeado, hay que tener especial cuidado con los valores del heap quenecesita el programa para correr, eso que cuando arranco y estsparado en el entry point del dumped ya estn all, pues hay queasegurarse que al copiar toda la seccin sigan all y que no hayacambios, de ser as correr, creo que no vale la pena hacer un tute deesto solo hay que agregar una api adelante que borre la seccin yluego si allocar y copiar lo necesario, cuidando que no borrar datosde los que estan cuando solo arranco el exe y duche seccin era unheap que usa el sistema.Se entiende?Ricardo Narvaja

  • Corriendo el patrick.exe en olly sin tantas problemas Usando un mtodo propio para loguear las APIS que usa el programa

    Capitulo XLVIII

    Desempacado de PeSpin1.3.04.f (1 parte) Reparacin de los stolen bytes

    Capitulo XLIX

    Desempacado de PeSpin1.3.04.f (2 parte) Reparacin de la IAT Reparacin de los antidump

    Capitulo L Desempacado de ReCrypt 0.80

    API OutputDebugString

    Capitulo LI

    Desempacado de ASProtect.2.3.04.26.a (1 parte)* Uso de los plugins OllyBone y el Weasle Qu es OllyBone y qu hace?

    Problemas y otras dudas de la parte 51 (vase el comentario) *Aqu se trabaja con drivers de sistema (.sys)

    Capitulo LII Desempacado de ASProtect.2.3.04.26.a (2 parte)

    Solucin al redireccionamiento mediante un script de Hiei

    Capitulo LIII Desempacado de TPPpack (versin desconocida)*

    Hallar el OEP y reparar el stolen code mediante un script de Ularteck *Ricardo dentro de su tute publica la explicacin a manera de tute que escribi el mismo Ularteck y se ayuda del tute de Marciano concurso 97 nivel 4 para la explicacin de reparar la IAT.

    Capitulo LIV Desempacado de ExeCryptor2.2.50.a con compresin mxima de recursos/cdigo /datos, sin protecciones habilitadas (1 parte)

    Uso del TLS callback (formas de hallarlo con diferentes herramientas)

    APOKLIPTIKONoteRalbaBueno les cuento que a pesar de haber hecho todo lo que dice el Maestro en la parte 51 al pie de la letra, no hepodido llegar siquiera al OEP, cuando pongo el Break on execute por segunda vez me tira un par deerrores indistintamente siendo el mas benevolo un cartelito de error 45, el otro le pone los pelos de punta a uncalvo, da la impresion de que el microprocesador va a saltar de la motherboard de un momento aotro jejeje , eso sin contar que desde el explorador de windows tampoco puedo ejecutar el ASProtect. con unsimple doble clic.Eso me pasa a mi solo o a alguien mas tambien ?????Ahhh y lo he copiado adistintos lugares del disco duro para cambiar el paht pero nada .Ricardo NarvajaY es muy sensible con el rdtsc, si no corre fuera de olly menos correra dentro del ollyOtupAtpaxaCierto, es cabrn a ms no poder (y eso que segn Ricardo es la versin menos poderosa).Llevo casi toda la tarde con l y el tema es que seguramente es ms fcil hacer el script que hacer que llegue alOEP para hacer pruebas.De cada 20 veces que intentas llegar al OEP consigo llegar 1 y as no hay manera. Me cago en sus muelas.Adems es que no slo falla con Olly, sino como bien dices Ralba es que falla con doble-click desde Windows.Frustacin mxima. Despus llegarn alguno/s que yo me s y como si tal cosa; esperaremos con paciencialeer a los que saben de esto :-)Ricardo NarvajaSi no arranca desde fuera del olly hay que copiarlo y pegarlo en otra carpeta, y asi arranca, probaste el nuevoadvanced modificado que envie con el metodo 1 del driver rdtsc modificado? o el fakerdtsc a mi una vez no mearrancaba ni a palos reinicie y todo normal nuevamente.DAMIANOtup, porque no probas atachandolo ,si la cosa es q el script funcione desde el oep. Ojo que toco de oido, yo nolo mire todavia.SaludosdapafOtupAtpaxaCierto dapaf, no es ninguna mala idea en absoluto....No se si funcionar, pero la verdad es que no se me habaocurrido. Supongo que si lo attacheas una vez arrancado (si se deja) ser posible seguirle la pista a alguna delas llamadas antidump. Seguro que es mejor que nada.Gracias dapaf.OtupAtpaxaHola Ricardo: lo de cambiarlo de carpeta lo he probado y es completamente heurstico. 2 veces arranca y 8veces no... Los archivos que mandaste esta tarde an no los probr. Maana a ver si tengo mejor da...Muchas gracias.Ricardo NarvajaYo diria que asi se complica mas solo por el hecho que la misma rutina antidump, sobrescribe la api desde la dll,una zona de memoria creada por el packer y cambia el call, una vez ejecutado, para que apunte a esa zona dememoria, o sea que una vez ejecutado costara mas identificar que api es ya que no accede ni apunta mas aella, lo veo dificil por ese ladoRalbaPerdon Maestro pero no entiendo que es rdtsc ???Un saludo de RalbaRicardo NarvajaLa instruccion RDTSC permite obtener el numero de ciclos transcurridos desde el arranque de la maquina.o sea que se puede usar como GetTickCount para deteminar el tiempo que paso, entre dos llamadas a lainstruccion, que es lo que hace este asprotect, y no 2 si no unas cuantas veces.o sea que es una instruccion que al no ser una api, no se puede interceptar tan facilmente en el cracking,porque tracear a mano para cada vez que pasa por un rdtsc cambiar el resultado, es bastante molesto, perobueno cuando no habia estos drivers anti rdtsc habia que hacerlo, o bien tracear a mano, o bien, buscar en todoel codigo los rdtsc y ponerle bp en cada uno, o si no hacer un trace into, con la condicion que pare cuandoejecute un rdtsc, y entodos los casos modificar eax y edx despues de ejecutarla para que el tiempo no paseentre dos llamadas o sea breve.esos drivers que trae el olly advanced donde dice anti rdtsc u el fakerdtsc son drivers que desde ring 0 modificanlas propiedades de la instruccion para que no funcione en RING3 cambiando un flag lo cual nos e puede hacerdesde un programa comun de ring3.por eso este no corre si no te funciona el driver del advanced o el fakerdtsc en ollydbg y calculo que fuera si eltiempo esta calculado muy justo, tampoco funcionara a veces, cuando los programadores empiezan a tomarestas medidas deseperadas es porque se les viene la noche y hacen que un programa sea mas problematico.OtupAtpaxaHola Ricardo: parece que con el paquetito ltimo del AdvancedOlly funciona algo mejor. El "fakerdtsc.rar" no separa que sirve ya que contiene un archivo "fakerdtsc.sys" que crea en tiempo de ejecucin Olly.Por ltimo, y antes de enarbolar la bandera blanca, quera saber si el script puede solicitar cual es la instruccinanti-dump, porque en mi mquina a veces es la "015E0000", a veces la "015C0000" ...y adems tambincambian las instrucciones que hacen toda la movida de las API's. He localizado donde utiliza el nombre de lasAPI's, pero es que cambian en cada ejecucin...Ay Alexei, Alexei, que te hemos hechoPor cierto, si estoy desvirtuando el concurso con mis preguntas, por favor, dmelo. Gracias.PD: Todo esto me lleva de vuelta al ao 90 cuando vea las piezas del Tetris bajar (durmiendo y despierto)

    APOKLIPTIKONoteRicardo Narvajael que ya lo bajo en el mismo link puse una actualizacion que tiene la configuracion del advanced para que corra pues que es bstante dificil de hacer correr en olly y esa parte no la aclare mucho en el tute, porque probado combinaciones de plugins uno al final lo hace correr, yo use el hidebugger 1.24 con toas las tildes marcadas y el advanced configurado como esta alli en las imagenes,si no les corre pues tendran que buscar su propia configuracion como hice yo quitando y poniendo tildes jeje.

  • Capitulo LV

    Desempacado de ExeCryptor2.2.50.a con compresin mxima de recursos/cdigo /datos, sin protecciones habilitadas (2 parte)

    Haciendo el script para reparar la IAT Dumpeado