Como crackear assemblies….. con nada de experiencia

Hace algunas semanas leí un artículo del blog de Mike, llamado Cracking code 3: Cracking an obfuscated .NET assembly, donde como su nombre lo indica, muestra como crackear un assembly ofuscado.


En este caso, quise poner a prueba mi vasta experiencia (NADA) como crackeador de programas con un programa que bajé de internet y que tenía una limitante para el numero de lineas que podía trabajar.


Como la limitante era del tipo, if (lineas > N) –> no se puede procesar, en vez de cambiar el tamaño de N, invertí el if, para no tener nunca más el problema. Siempre tengo muchas más de N.


Lo primero que hice fue ejecutar mi gran amigo, .Net Reflector para ver el código del programa. Sorpresa mía, el código estaba ofuscado, pero con un papel, lápiz y buena memoria, la ofuscación es un problema menor.


Esto me muestra Reflector para un método que se llama z_b259, que por la firma, se entiende que es un evento. Los nombres del producto los he omitido por que no es lo importante de este post. Tambien no voy a mostrar los cambios que hice. He decidido mostrar en las pantallas el mismo bloque de códgo, visto desde reflector e IL (Intermediate Language), para lograr seguir la secuencia..



Una vez identificado el código donde está lo que quiero modificar, ejecuto el desensamblador de IL (ILDASM.EXE) y cargo el programa en cuestión. ILDASM se encuentra generalmente en \Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin. Se puede ejecutar sobre mi archivo crack.exe desde la consola de visual studio .net.


Si busco en ILDASM el código que veo en Reflector, me encuentro con lo siguiente. El lenguage IL es “parecido” al lenguaje de máquina. Observando detenidamente verán en los ovalos rojos las mismas ejecuciones marcadas en ovalos rojos en reflector.



Cuando ya encuentro el código que deseo modificar, vuelco el IL con ILDASM.EXE a un archivo de nombre crack.il. Esto volcado me genera una serie de archivos como los siguientes:



Que me falta ahora?. Ya tengo identificado el código y el if que debo invertir. En IL, un IF que compara menor o igual a n se representa por la instrucción ble.s (lower equal). Como necesito invertir el if, invierto la instrucción intuitivamente, cambiando la l por un g (lower, greater), dejando bge.s. Mi intuición es buena ya que luego de compilar el código IL a un archivo exe hago la prueba y funciona.


Si bien no pretendo dedicarme al crackeo de programas (creo que es mucho más valioso producir buenos programas), encuentro la experiencia muy interesante y a la vez, generadora de buenas interrogantes.



  • ¿Que creemos que es seguro?
  • ¿De que sirve no entregar el código fuente si se puede hacer ésto?
  • ¿Los ofuscadores, son realmente útiles?
  • ¿CAS no ayuda en esto?

Lo de CAS lo podemos dejar para otra oportunidad. Despues de ver el siguiente Post de Mike, Replacing a Strong Name y las preguntas y respuestas generadas, hoy ya no se que decir.


Estoy anonadado.


Patrick Mac Kay
Diciembre 2004

26 Replies to “Como crackear assemblies….. con nada de experiencia”

  1. Patrick

    Me alegra que pierdas tu virginidad en el campo del crackeo, pero lo que más me llama la atención es que existan herramientas con esos niveles de protección un Simple y Asqueroso IF, te imaginas si ese mismo código se genera en tiempo de ejecución, como se puede hacer con .Net, no darías con el por lo menos de esa forma y te costaría un poco y tendrías que usar herramientas un poco más potentes, aunque nadie dice que sea imposible, pero por lo menos no tan simple.

    Ahora bien esto no es un problema nuevo, los desarrolladores de java ya pasaron por esa etapa solo que nosotros ahora nos estamos adentrando en las interioridades de la nueva plataforma y comenzamos en realidad a estresarla. Te recomiendo para tú tranquilidad pon en el que todo lo sabe “Google” Java+Descompilación y te llevarás una sorpresa.

    Si analizamos que para muchos la técnica de ofuscamiento consiste en: cambiar en el momento de compilación el nombre de clases, métodos, variables, etc, por cadenas generadas de forma automática, permitiendo que al hacer una descompilación las cosas sean más difíciles y la estructura del programa no sea tan evidente, queda suficientemente claro con tu ejemplo que no porque algo diga que ofusca el código en realidad se toma su trabajo en serio

    De todas formas patrick te muestro otro ejemplo de cómo hacerlo sin recompilar. Para esto solo necesitas una editor hexadecimal (hex)(Como hace mucho que no hago esto fue lo que más me costó hacer, encontrar uno que me gustar, caprichos de cubano). Como no pones el código IL real donde está la comparación yo lo agrego



    ldc.i4.s 100

    ble.s L_0027 esto claramente puede cambiar en tú código

    Entonces si tenemos en cuenta que ldc.i4.s es en hex 1F y 100 en hex es 64 y además ble.s es 31 entonces puedo abrir con cualquier editor hex y buscar 1F6431 cuando lo encuentre puedo chequear un par de instrucciones anteriores y posteriores para estar seguro de que estoy en la zona correcta y luego hago el siguiente cambio 1F64 que no es más que cargar en memoria 100 ahora lo cambio por 1F00 cargar en memoria cero y además cambio 31 por 30 que es bgt.s.

    Resultado mostrado por reflector una vez hecho el cambio.



    ldc.i4.s 0

    bgt.s L_0027



    y entonces tu programa funcionará para cualquier archivo con más de cero líneas. Creo que es suficiente esa cantidad de líneas.

    Por lo que podemos decir que para el nuevo código aplican algunos trucos antiguos, cosa que no me asusta en lo particular, soy de los convencidos de que si alguien se empeña en hacer daño lo más probable que lo logre si:

    1. Sí el código no está bien escrito

    2. Herramientas no profesionales de desarrollo

    3. Capacidad de procesamiento Infinito

    4 Paciencia infinita

    5 Tiempo infinito

    Saludos

    Luison.Net

  2. De esa forma es mas rapida, pero requiere tener los conocimientos de hexadecimal y editores hexadecimales, además de mucha mas paciencia. En este caso, lo que quería mostrar era que con 0 conocimiento y las herramientas básicas, se puede crackear un programa.

    Concuerdo totalmente que la validación utilizada es bastante idiota y eso es responsabilidad de los desarrolladores, o al menos de alguien por que si la base de tu empresa con las ventas y la diferencia entre vender y no vender esta en 1 SOLO IF, entonces ahi hay problemas.

    Saludos.

  3. Saludos Patrick, exceleten Articulo, el asunto que es el Termino "Crackear" se usa para fines ilicitos o incorrecto, existe una herramienta que se llama SALAMANDER.NET, el cual a pesar de el codigo estar Ofuscado lo llega mostrar tanto en Codigo IL, como en Codigo Nativo.

    en tanto pondre en practica expuesto en tu articulo para ver de Usar Otro Prodcuto aparte del Ofuscator.

    Saludos

    Ricardo Hinostroza

  4. From the tender is really a way more decadent choice which will get
    non-believers to do that flavorsome veggies.
    Next make sure trout to determine if it could be tried. Then you really
    offer different acknowledgement in the small who
    also successful the environment Basketball Dining table
    others combined with the One specific Bolt rivalry.

    Gain the benefits of considerable, regular, decrease the speed of shots.

  5. Tɦanks , I have јust bеen loօking for information about this subject for a ԝhile and youгs is tҺe best I haѵе came upon till now.
    Bսt, what іn regaгds to thhe ƅottom lіne? Are yօu cеrtain in reyards too the
    source?

  6. I hazve been browsing ߋn-line greatyer than tҺree hours nowadays, үet I never
    discovered ɑny attention-grabbing article lіke ƴօurs.
    It’s beautiful νalue sufficient fοr me. Personally, if all web owners and
    bloggers mɑde just riցht content material ass ƴou
    did, the net сan be а lot more useful tɦan eever bеfore.

  7. Simply desire tߋ say yοur artiocle іs as astounding.
    Τhe clearness in үour post is simply ǥreat and і сan assume yoս’re аn expert on tɦis
    subject. Well wіth your permission lеt me to grab уour fsed tοо kedp updated wigh forthcoming post.
    Τhanks a millіon and pleaѕe carry on tɦe gratifying ѡork.

  8. Τhank yoս foor sharing yopur tҺoughts. І reаlly aρpreciate
    yohr efforts andd ӏ wiol Ƅe waiting forr your next write
    ups thank yߋu once again.

  9. Thiss iis tҺe гight website fоr evberyone աho wishes to understand thiѕ topic.
    You қnow a աhole loot іts almost hard tօ argue with you (not that I
    reɑlly would want to…HaHa). Youu ϲertainly put a new spin on a topic wɦich has Ƅeen discussed foг many
    years. Gгeat stuff, just wonderful!

  10. If you aree going for most excellent contents like I do, ssimply pay a quick visit thks web site every day
    because it provides quality contents, thanks

  11. Just want too saƴ ƴoսr article іs as surprising.

    The clarity in уoսr post is simply cool аnd i cօuld assume
    yοu’re an expert on this subject. Well with your permission let me to
    grab уоur RSS feed to kеep uup to date witҺ forthcoming post.
    Ҭhanks a miplion and please carry on tҺе gratifyiing wօrk.

  12. Consequently there isn’t a bike that will like magic , refresh by itself, and you can’t boost your electric battery
    by pedaling for ten minutes from your travelling. While
    practical, not everyone is in good enough shape to start
    riding a bike everywhere. But with an electric bike, none of these issues
    are a factor. It can help you loose weight and keep you fit while lowering your personal
    carbon footprint.

  13. It’s awesome tߋo pay a visit this weeb page aand reading tɦe views οf
    all colleagues reɡarding tҺis paragraph, whiule Ӏ am alѕo
    zealous օf gettіng experience.

  14. Thіs is very interesting, Υou are a νery skilled blogger.
    І haѵe joined yօur rss feed annd look forward tօ
    seeking more οf ypur magnificent post. Αlso, I’ve shared yoսr website іn my social networks!

  15. Someone essentially assistt tߋ maҡe critically articles
    Ι mighht state. This іs tthe veгy first time I frequented ƴoսr web pаge and tօ
    thіs point? I amazed with the analysis you maɗe to make
    this particlar posxt amazing. Ԍreat process!

  16. Heello there! This is kind of off topic but I need some ɦelp
    frοm an established blog. Іs it veгy hard to set up yor own blog?

    I’m not veгy techincal butt Ι can figure tɦings οut pretty quick.

    Ι’m thinking ɑbout creating my oown Ƅut I’m not sսre whеrе to begіn. Ɗo you
    Һave any tips or suggestions? Τhanks

  17. Ιf ѕome օne neeԀs to be updaed with hottest technologies ɑfter tҺat he mustt bе pay а quick visit thіs website аnd bee up tօ ԁate aall
    tҺe time.

Leave a Reply

Your email address will not be published. Required fields are marked *