A:link { TEXT-DECORATION: underline } A:visited { TEXT-DECORATION: underline } A:active { COLOR: red; TEXT-DECORATION: underline } A:hover { COLOR: #8080ff; TEXT-DECORATION: underline }

Crackare l' Hex Workshop 3.11

Data

by Spider

 

07/2001

UIC's Home Page

Published by Quequero


Crackare un prog è una sfida con noi stessi...

Qualche mio eventuale commento sul tutorial :)))

...Vinciamola!

....

 
E-mail: spider_xx87@hotmail.com

....

Difficoltà

(X)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Ok, in questo tute vedremo come è possibile crackare l'Hex Workshop v 3.11. Il procedimento che ho usato è un po' lunghetto, ma non c'è niente di complicato.

Incominciamo!


Crackare l'Hex Worksop v3.11
Written by Spider

Introduzione

Il programma lo conoscete sicuramente. E' un Hex Editor tra i più usati e "dovrebbe" scadere dopo 30 giorni. La registrazione si basa su un serial che viene calcolato in base ai campi "Name:" e "Company:", ma siccome la ricerca dei seriali non è il mio forte lo crackeremo diversamente.

Tools usati

Tools usati:
- SoftICE qualunque versione
- Hex Workshop v3.11 (Non lo useremo solo come vittima!)

L'Hex Workshop v3.11 non lo scaricate dai Tools perchè quello credo che sia già crackato (Que correggimi se sbaglio)

URL o FTP del programma

Purtroppo non ricordo proprio da dove ho scaricato il prog... Provate a cercarlo con un buon motore di ricerca tipo http://www.altavista.it

Essay

Bene, incominciamo!
Per prima cosa voglio farvi notare una cosa: aprite il prog (devono già essere conclusi i 30 giorni del trial; se non è ancora espirato provate a farlo espirare portando avanti la data) e vediamo come la finestra principale del programma è disabilitata. Premiamo "Unlock"e poi "Cancel". Adesso, anche se la finestra che ci dice di registrarci c'è ancora, quella principale è abilitata e lo sono anche tutte le sue funzioni, ad eccezione della toolbar! Questo significa che per patchare il prog useremo il prog stesso (Hihihi, e fu così che l'Hex Workshop si uccise da solo!
:-) ). Non piace anche a voi vincere con le armi degli avversari?
 
Ora però incominciamo con il crack vero e proprio. Prima vi consiglio di farvi una copia di backup, non si sa mai. Aprite il Symbol Loader e caricate hworks32.exe. Avviate e cominciate a steppare con F10. Non succede nulla fino all'offset :0044920A, dove troviamo l'istruzione Call 0048E640. Il SoftICE esce e riappare solo dopo la chiusura del prog. Mettiamo un bp sulla call e riavviamo il prog. Appena Il sice poppa, disabilitiamo il bp e premiamo F8 per entrare nella call. Vediamo quattro push, una call e un ret. Se c'è il ret significa che torniamo al punto di prima, e quindi la call esegue tutto il prog e noi dobbiamo entrarci dentro con F8. Steppiamo ancora con F10 e non succede nulla fino all'offset :0049A7EA, dove l'ennesima call esegue tutto il prog:
:0049A7EA    call [eax+50]     ;Questa call esegue tutto il prog
:0049A7ED    test eax,eax      ;<----Noi siamo appena usciti dalla call
:0049A7EF    jnz 0049A806
Premiamo F4 per vedere lo schermo e ci accorgiamo che il prog non ha ancora nascosto la finestra principale. Ripremiamo F4 per tornare in Sice. Ora, se il prog non ha ancora nascosto la finestra principale, può darsi che quel test e quel jnz decidano la sorte del programma. Per verificare, mettiamo un bp nella call, steppiamo fino al jnz e scriviamo al sice il comando "r fl z", cioè "reverse flag zero", in modo che il prog salti quando invece non avrebbe dovuto saltare. Premiamo F5 per vedere com'è andata. Hehehe! Il programma è partito! Per ora non chiudetelo. Entrate in SoftICE e eliminate il bp con bc*, avendo prima l'accortezza di segnarvi il suo indirizzo. Adesso faremo il primo passo: modificheremo il jnz in jmp. E come faremo a modificare Hex Workshop 3.11? Semplice, lo faremo con Hex Workshop 3.11! Apriamo il file hworks32.exe e prendiamo "Find..." dal menu "Edit". Andate a vedere nel programma quali erano gli opcode delle istruzioni vicine al jmp... Ok, vi risparmio questa fatica! Erano 85C075158B4E1C, di cui quello del jnz era esattamente 7515. Nella finestra di dialogo "Find" assicuratevi che "Type:" sia "Hex Values", e scrivete "85C075158B4E1C" nella casella "Value:". L'Hex Workshop lo troverà sicuramente all'offset 0009A7ED. Modificate il 75 in EB (che è l'opcode di jmp) e cliccate "Save as" dal menu file (Importante: non dovete premere Save, ma Save as perchè l'Hex Workshop è in esecuzione è quindi non possiamo sovrascrivergli il file) e salvatelo con un nuovo nome (Io ho usato "hworks32_2.exe").
Bene, adesso chiudete l'Hex Workshop ed eseguite quello modificato. Appare la solita finestra che ci dice che il trial è scaduto, la chiudiamo e... Funziona! L'Hex Workshop si è già fregato per metà, perchè adesso lo potremmo usare benissimo chiudendo la finestra iniziale... In pratica abbiamo trasformato la protezione da trial di 30 giorni a nag-screen.
Non so a voi ma a me i nag danno parecchio fastidio! Che ne dite di fare un ultimo sforzo per togliere anche il nag? Bene, riprendete il Loader, caricate L'Hex Workshop modificato e avviatelo. Riattivate l'ultimo breakpoint con bpx 0049A7EA. Premete F5 e SoftICE ripoppa sulla call di poco fa. Entriamo nell call con F8 e incominciamo a steppare con F10. Non succede nulla fino all'indirizzo :00415471, dove una call visualizza la finestra principale ma non il nag. Dopo qualche riga un'altra call, all'indirizzo :00415485, esegue il nag e torna alla chiusura di esso. Eliminiamo il precedente bp e ne settiamo uno sulla call, usciamo da Sice e da Hex Workshop e lo riavviamo. Il Sice poppa e noi entriamo nella call con F8. Steppiamo con F10 e all'indirizzo :00414ECF l'ennesima call esegue il nag e ritorna alla chiusura del nag stesso. Osserviamo il codice che abbiamo davanti:
:00414EBE    cmp byte ptr [004EFFE8],00
:00414EC5    jnz 00414EE5         ;<------ io non mi fiderei!
:00414EC7    push 00
:00414EC9    push dword ptr [edi+000000C0]
:00414EBF    call 0043F981                   ;visualizza il nag
:00414ED4    cmp byte ptr [004EFFE8],00

Come potete vedere all'indirizzo :00414EC5 troviamo un salto condizionato a 00414EE5, decisamente dopo la call che visualizza il nag. E' quindi chiaro che modificando il jnz in jmp il nag non viene eseguito e il prog funziona come se fosse registrato!
Eliminate il bp. Segnatevi gli opcode delle istruzioni vicine al jnz (4E0000751E6A00FF), cercateli con l'Hex Workshop nell'exe che avevamo modificato prima (hworks32_2.exe), modificate il 75 in EB e salvate in un nuovo file (hworks32_3.exe). Adesso abbiamo l'Hex Workshop 3.11 bello funzionante... Voi direte: "Ma non facevamo prima a scaricarcelo dalla sezione Tools?". Certo che facevate prima, ma che bello c'è a trovarsi i programmi già belli crackati? Non è più divertente così?

 ######    #######     #    ###      ########   ####
#      #   #      #    #    #  #     #          #   #
#          #      #    #    #   #    #          #   #
 ######    #######     #    #    #   #######    ####
       #   #           #    #    #   #          ##
#      #   #           #    #   #    #          # ##
 ######    #           #    ####     ########   #   #

Note finali

Saluto in primis Quequero. Poi saluto AndreaGeddon che mi sopporta rispondendo alle mie e-mail (grazie Andrè!!!), Yado che mi ha freezato tante volte il pc col krypton3 (grazie!), TheMR, Bubbo, e tutti gli studenti dell'uic.

Disclaimer

Vorrei ricordare che il software va comprato e  non rubato, dovete registrare l'Hex Workshop 3.11 dopo il periodo di valutazione, altrimenti potreste trovarvi faccia a faccia con il proprietario della Breakpoint Software, che difficilmente sarà lì a dirvi belle parole. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliarvi a registrare legalmente i vostri programmi, e non a farvi fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili e per creare protezioni così difficili da aggirare.

Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.


Suonano al citofono. Ma chi può essere?

Era il proprietario della Breakpoint Software. Non era venuto a dirmi belle parole. Io c'ho provato a spiegargli che questo documento è stato scritto per invogliarvi a registrare legalmente i vostri programmi, ma non mi ha voluto credere. Mah!! 'Sta gente d'oggi!


Ciauuuuuuz!


Home

<!-- DIV 728x90 IAM --> <div id="ad72890bottom" align="center"></div> <!-- START Digilander F --> <SCRIPT LANGUAGE="Javascript"> <!-- if ( typeof(bsl1_boot) != 'undefined' ) { setTimeout("bsl1_boot()",100); } var rs_DLR=1; var rs_DLRERR=0; //--> </SCRIPT> <SCRIPT LANGUAGE="Javascript" SRC="http://digilander.libero.it/_ad/digi_ad_13.js"> </SCRIPT> <!-- Begin Nielsen DCR SDK --> <script> if(window.location === window.parent.location){ // Static Queue Snippet ! function(t, n) { t[n] = t[n] || { nlsQ: function(e, o, c, r, s, i) { return s = t.document, r = s.createElement("script"), r.async = 1, r.src = ("http:" === t.location.protocol ? "http:" : "https:") + "//cdn-gl.imrworldwide.com/conf/" + e + ".js#name=" + o + "&ns=" + n, i = s.getElementsByTagName("script")[0], i.parentNode.insertBefore(r, i), t[n][o] = t[n][o] || { g: c || {}, ggPM: function(e, c, r, s, i) { (t[n][o].q = t[n][o].q || []).push([e, c, r, s, i]) } }, t[n][o]}}} (window, "NOLBUNDLE"); // SDK Initialization var nSdkInstance = NOLBUNDLE.nlsQ("P1504C48C-9D0B-4ADE-B7CD-04AF56A52362", "nlsnInstance"); // Content Metadata var nielsenMetadata = { type: 'static', assetid: ( location.hostname + location.pathname + location.search ).replace( /([^\w]|_)+/g, '-' ).replace( /^-+|-+$/g, '' ) || 'homepage', section: 'LiberoCommunity_BRW' }; // Event 'staticstart' Call nSdkInstance.ggPM("staticstart", nielsenMetadata); } </script> <!-- End Nielsen DCR SDK --> <!-- Libero COMSCORE start - Version 1.53 --> <script type="text/javascript"> if ( rs_DLRERR == 1 ) { var libero_comscore_error = 404; } </script> <script type="text/javascript"> document.write(unescape("%3Cscript src='" + (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js'%3E%3C/script%3E")); </script> <script type="text/javascript"> if (rs_DLR) { document.write(unescape("%3Cscript id='libero_tracking_js_site' src='http://digistatic.libero.it/js/comscore_8_3_04/comscore_digilander.libero.it.js'%3E%3C/script%3E")); document.write(unescape("%3Cscript id='libero_tracking_js_site' src='http://digistatic.libero.it/js/comscore_8_3_04/comscore_engine.js'%3E%3C/script%3E")); } </script> <noscript> <img src="http://b.scorecardresearch.com/p?c1=2&amp;c2=13259779&amp;cj=1&amp;name=libero.others&amp;ns_site=libero" /> </noscript> <!-- Libero COMSCORE end --> <!-- IOL Analytics --> <script src="//i.plug.it/iplug/js/lib/iol/analytics/data/digilander-libero-it/tracking_digilander-libero-it.min.js"></script> <script src="//i.plug.it/iplug/js/lib/iol/analytics/engine/IOL.Analytics.Tracking.min.js"></script> <script type="text/javascript"> var iat = new IOL.Analytics.Tracking.Engine(); iat.send(); </script> <noscript><img src="//italiaonline01.wt-eu02.net/215973748390194/wt.pl?p=315,libero.web.share.digiland.siti.digilander&amp;cg1=libero&amp;cg2=web&amp;cg3=share&amp;cg4=digiland&amp;cg5=siti&amp;cg6=digilander&amp;cg7=libero.web.share.digiland.siti.digilander" height="1" width="1" alt=""></noscript> <!-- /IOL Analytics --> <!-- BEGIN Global site tag (gtag.js) - Google Analytics 4 --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-9K5Y6YYGV4"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-9K5Y6YYGV4'); </script> <!-- END Global site tag (gtag.js) - Google Analytics 4 --> <div id="adinterstitial"></div> </body> </html>