Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

[Guida] [VIDEO] reversiamo un po, disinstallazione silente di Winzip8
(Questo messaggio è stato modificato l'ultima volta il: 02/04/2012, 16:49 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Ciao ragazzuoli,
l'altro giorno per motivi miei mi sono messo a vedere come disinstallare remotamente Winzip8 in modo silente (cioè senza nessun messaggio a video o richiesta di conferme all'utente.
Bene, winzip8 ha lo switch /uninstallx per questo, ma siccome noi siamo dei cittoni non ci accontentiamo, come avremmo fatto se non ci fosse stata la possibilità nativamente?

Allora mi sono messo a lavorarci un po' con OllyDbg (versione 1) , con WinApiOverride32 e con AttributeChanger e nel video qui sotto vedete quello che ne è uscito

Vi tralascio la parte dell'esecuzione da remoto, magari l'aggiungo nel post in un altro momento

Un appunto per i "precisini" (tanto lo so che arriveranno), un metodo piu veloce di questo è effettuare un "search all intermodular calls", cercare MessageBoxA, tasto destro "Set Breakpoint on every call to MessageBoxA", runnare l'eseguibile e quindi ci si trova subito alla messagebox giusta e da li continuare come nel video.
Però non sempre è cosi facile e la via del video (cioè steppare il programma per capirne il funzionamento) è spesso la via migliore.

Buona visione



Se vi è sfuggito qualcosa questo è quello che ho fatto:

1. con winzip già installato ho cercato nel registro la stringa per disinstallarlo
2. ho provato a disinstallarlo per vedere normalmente come si comporta, scoprendo che fa comparire 3 finestre

siccome la nostra disinstallazione deve essere silente dobbiamo far sparire le 3 finestre, quindi quello che faremo sarà di debuggare l'eseguibile (winzip32.exe) con OllyDbg per vedere dove avviene la chiamata alla/e funzione/i che visualizzano le finestre

3. ho caricato winzip32.exe in ollydbg , modificato gli argomenti passati al processo mettendo /uninstall e ho debuggato

4. ho cercato la stringa "/uninstall" perchè da qualche parte deve pur controllare se gliel'abbiamo passata e quindi deve disinstallare
5. trovata la stringa ho piazzato li un breakpoint ovvero gli ho detto che quando l'esecuizione arriva li si deve fermare
6. ho runnato il programma (F9)
7. l'esecuzione si è fermata come previsto al nostro breakpoint dove accede alla stringa "/uninstall"

Da qui in avanti procederemo in questo modo:

- step (fCool fino a far comparire la finestra
- piazziamo un breakpoint
- riavviamo l'applicazione, che si ferma all'ultimo breakpoint
- rimuoviamo il breakpoint, entriamo nella funzione (call ...) con F7
- steppiamo con F8 fino a far comparire la finestra
e cosi via...

Ad un certo punto a forza di entrare una dopo l'altra in varie funzioni sono arrivato alla chiamata di una api di windows, ovvero MessageBox, guarda caso questa si occupa di visualizzare una finestra con un messaggio.
Quindi siamo arrivati al punto, questa è la parte del programma in cui dobbiamo intervenire per far sparire le visualizzazioni.
Dopo alcune prove ho visto che le 3 finestre vengono fatte comparire sempre dalla stessa parte di codice, quindi se sistemiamo questa siamo a posto.
Allora ho prima NOPpato le righe relative alla messagebox (ovvero la chiamata stessa piu i push precedenti dei parametri sullo stack) e poi mi sono dovuto assicurare che EAX e EBX valessero 6 e 0 visto che erano i valori che nell'esecuzione normale della disinstallazione devono valere quei registri.

Detto questo ho salvato le modifiche in un file winzip32_quiet.exe e ho provato a disinstallare usando quest'ultimo.
Purtroppo funziona la disinstallazione di tutto tranne che la cancellazione dei files dalla cartella.

Allora ho usato WinApiOverride32 per vedere quali api di windows chiamava winzip32 durante la disinstallazione, nella ricerca di qualche indizio per capire l'accaduto.
In fondo la domanda era "come è possibile che solo togliendo le finestre che chiedono la conferma non funziona piu, quando tutto il resto della logica è la stessa? cosa è cambiato?"

La risposta è presto arrivata, quello che è cambiato sono la data e ora del file .exe !
Infatti nelle api chiamate ad un certo punto ne ho notate moltissime riguardo all'elaborazione di data e ora dei files nella cartella, allora li mi è venuta l'illuminazione, " che vada a vedere la data e ora del file .exe??"
Di fatto nella cartella ho visto che tutti i files hanno la stessa data e la stessa ora (tranne l'exe che ha ora 8:00)
Siccome tentar non nuoce mi sono installato AttributeChanger e ho provato a disinstallare nuovamente, et voilà, ha funzionato Happywide

Ok non è perfetto perchè qualche file rimane, ma anche la disinstallazione "originale" lasciava qualcosa, inoltre tutta la procedura può comunque risultare interessante a qualcuno che dovesse trovarsi in situaizioni simili (io in passato mi ci sono trovato e ne sono uscito grazie ad una procedura di questo tipo)

alla prossima
ciao
Digger



digger
01/04/2012, 19:38
#1
Cerca


Messaggi in questa discussione
[VIDEO] reversiamo un po, disinstallazione silente di Winzip8 - da digger - 01/04/2012, 19:38
[Nessun oggetto] - da MAUROW - 01/04/2012, 22:56
[Nessun oggetto] - da digger - 01/04/2012, 23:08
[Nessun oggetto] - da Pocciox - 02/04/2012, 13:55
[Nessun oggetto] - da digger - 02/04/2012, 14:21
[Nessun oggetto] - da Pocciox - 02/04/2012, 16:43
[Nessun oggetto] - da digger - 02/04/2012, 16:48
[Nessun oggetto] - da Admin - 04/04/2012, 23:09
[Nessun oggetto] - da digger - 04/04/2012, 23:16
[Nessun oggetto] - da Admin - 04/04/2012, 23:55
[Nessun oggetto] - da digger - 05/04/2012, 0:06
[Nessun oggetto] - da Pocciox - 05/04/2012, 10:08

Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Scheda video oirad94 22 6,606 05/12/2014, 14:14
Ultimo messaggio: oirad94
  scaricare video da facembuk MAUROW 4 2,691 19/07/2013, 13:31
Ultimo messaggio: Pocciox
  [VIDEO] Samsung Galaxy Note - Beckham Admin 5 1,708 24/05/2012, 15:11
Ultimo messaggio: Admin



Utenti che stanno guardando questa discussione: 1 Ospite(i)