REVERSE ENGINEERING SBLOCCO DI UN SOFTWARE PROPRIETARIO

06/08/2018

Un piccolo esempio di reverse engineering e sblocco del software. Tecnica un po' noob dato che non ho utilizzato alcun disassembler come IDA Pro o altri tool avanzati, ma pur sempre efficace.

Protezione software con licenza controllata da server remoto

Al fine di evitare copie non autorizzate, molti software implementano un meccanismo di protezione che richiede una specifica licenza installata sullo stesso PC dove girerà il programma. Il proprietario del software acquista la licenza d'uso e può così utilizzare il programma. Le copie del programma semplicemente non funzioneranno perchè sprovviste della relativa licenza. I meccanismi di protezione più sofisticati utilizzano un server remoto per controllare la validità della licenza ed è quindi fondamentale che questo server sia accessibile e sempre funzionante, ma non è sempre così.

Sono stato contattato da una persona che, pur avendo regolarmente acquistato la licenza, si è ritrovato con il software bloccato, proprio perchè il relativo server di licenza è stato messo offline.

In questi casi è perfettamente lecita la modifica del software per ripristinarne il funzionamento perchè la licenza d'uso è stata regolarmente acquistata ed è un diritto dell'utente continuare ad utilizzare il programma.

Il software in questione è FinalTable, programma per l'analisti statistiche delle partite a poker :

Provando ad avviare il programma si ottiene un errore di connessione con server remoto, la licenza non può essere verificata ed il programma rimane bloccato alla schermata inziale. Questo è quello che lamentava l'utente e mi ha quindi contattato per risolvere il problema.

Alcuni indizi

Nel manuale in pdf si specifica che la licenza viene verificata all'apertura del programma e, se valida, il bottone OK viene abilitato, permettendo l'accesso alla schermata principale. Probabilmente il codice di verifica della licenza, alla fine del processo, non fa altro che abilitare il bottone OK.

Ho notato inoltre che la finestra principale, il font caratteri e lo stesso bottone OK utilizzano lo stile di default in Windows. Probabilmente il programma è scritto in Visual Basic o che almeno utilizza le librerie native MFC. Se così fosse è possibile inviare comandi esterni agli elementi dell'interfaccia, ad esempio è possibile inviare il comando "enable" allo stesso bottone OK così come farebbe il programma stesso dopo la verifica della licenza.

Tentativi & proof of concept

Ho utilizzato il comodissimo tool WinHack (http://sandsprite.com/) per provare a giocare con la UI ed inviare alcuni comandi al bottone OK

Il tool permette di conoscere l'ID del bottone (ogni elemento grafico ha il suo ID) , in questo caso 131642.  

A questo punto è possibile inviare messaggi al bottone. Noi siamo interessati al messaggio WM_ENABLE 

Inviando il comando WM_ENABLE il bottone si abiliterà e potremo cliccarlo col mouse:

E potremo così accedere al programma vero e proprio bypassando completamente il controllo di licenza:

Implementazione del crack

Il più è fatto, abbiamo trovato un modo per aggirare il controllo di licenza ed entrare comunque nel programma. Adesso occorre scrivere un piccolo programma che automatizza gli step visti prima: cerca il bottone, recupera l'id, invia il comando WM_ENABLE al bottone e lo clicca (comando WM_CLICK).

Il lavoro perfetto per C++ e <windows.h>

#include <cstdlib>
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;

HWND buttonHandle = 0;

BOOL CALLBACK GetButtonHandle(HWND handle, LPARAM)
{
   char label[100];
   int size = GetWindowTextA(handle, label, sizeof(label));

   if (strcmp(label, "OK") == 0)
   {
      buttonHandle = handle;
      cout << handle << endl;

      EnableWindow( handle, TRUE );
      SendMessage(buttonHandle, BM_CLICK, 0, 0);
      exit(0);
      return false;
   }
   return true;
}

int main()
{
   HWND windowHandle = FindWindowA(NULL, "Final Table");

   if (windowHandle == NULL)
   {
      cout << "Final Table non trovato!" << endl;
   }

   else
   {
      cout << "Final Table trovato!" << endl;
      SetForegroundWindow(windowHandle);
      BOOL ret = EnumChildWindows(windowHandle, GetButtonHandle, 0);
   }
}

L'utilizzo è semplice: avviare FinalTable e attendere che venga mostrata la schermata principale con il bottone disabilitato (il controllo di licenza è ovviamente fallito). A questo punto basta lanciare il crack e si verrà portati automaticamente alla sezione principale come se la licenza fosse stata correttamente verificata.


Torna alla home

Commenti

6 commenti


giuseppe (giuseppe.sallustio45@gmail.com)
il 24 Giugno 2020 alle 15:09

e vero quello che dici tu pero io ho un programma sistemistico molto buono e ho la penna usb come chiave per lanciare il programma il problema e che questa chiave non funziona piu ed anche criptata non si vede il proprietario ha chiuso da diverso tempo e il programma che ho non riesco a farlo ripartire se non in modalita demo il programma si chiama deco snc o fabisoft supersix e il programma superenalotto uttimo per me mi dai una mano? grazie ciao

Rispondi


Oriano (orion13@libero.it)
il 7 Settembre 2020 alle 15:50

Salve ,sarei interessato anch'io al Supersix 5, ma la ditta del produttore non esiste piu.
C'è qualche possibilità di poterlo avere. Grazie.

Rispondi


TRAIAN (michele25ro@gmail.com)
il 4 Novembre 2020 alle 02:59

CIAO,NON MI PUOI AIUTARE A craccare QUESTO SOFTWARE DI ROULETTE? E IL MIO PERSONALE SOLO CHE SONO IN COLABORAZIONE CON UN ALTRO PROGRAMATORE ,CHE NON MI VUOLE LASCIARE ATTIVO PIU IL MIO SOFTWARE,RIPETO ..SOLO LUI PROGRAMATORE PUO ATTIVARE IL CODICE SU INTERNET DA SERVER ..SI PUO FARE QUALCOSA?..SE MI PUOI AIUTARE,GRAZIE.
LINK DOWNLOAD:
https://onedrive.live.com/?authkey=%21AOZSyXK5D%2DcUlIk&amp;cid=3A44F410255D7C9C&amp;id=3A44F410255D7C9C%21515&amp;parId=3A44F410255D7C9C%21513&amp;action=locate

Rispondi


VINCENZO (KENZO.CARO@yahoo.it)
il 3 Dicembre 2021 alle 05:16

BUONGIORNO IO SAREI INTERESSATO A BYPASSARE IL PROGRAMMA MILIONDAY
programmi millionday - Cgs-totosofthttp://www.cgs-totosoft.it
POTETE AIUTARMI?????? GRAZIE

Rispondi


AIUTO!!
il 5 Marzo alle 15:01

salve, ho un programma che permetteva di trasformare , codificare dvd in file per la Play station mobile (PSP) , caricare file sulla memory stick ecc ecc oltre che implemantare un media player sempre per PSP. occorreva creare account online nel sito del produttore del software inserendo una password fornita con cd di installazione (che ho tutto in originale).
Putroppo per funzionare bisogna che il sofware si colleghi al sito www.exploder.net per verificare la licenza e poi essere utilizzato. IL SITO NON ESITE PIU' e non riesco a utilizzare questo magnifico programma (PSP Xploder - BLAZE ).
Come posso bypassare il controllo e ricominciare a utilizzare il programma che ho già installato sul pc con la sua chiave ecc ecc ?

Rispondi


AIUTO!! (axl.modena (chiocciola) gmail.com
il 5 Marzo alle 15:02

@AIUTO!!

Rispondi


Il tuo nome o email (Se usi l'email potrai essere notificato delle risposte)
Il tuo messaggio