C'è qualcosa di diverso da "se" e "altro"

-3

Ci sono molti modi per proteggere una password come l'utilizzo di algoritmi forti come SHA-512, l'uso di sali, la crittografia del database in cui è memorizzata la password, l'imballaggio del file di licenza con UPX ecc. ecc., anche se ci sono varie procedure per quanto ne so il login o il successo dell'acquisto (nel caso si tratti di un codice di licenza) termina in questo modo per tutti i tipi di accessi, funzioni di sblocco ecc.,

Sebbeneesistanovarimetodipercrittografarelapassworderenderlapiùstrong.Allafinefinisceconunifealtro.quindimodificare"se" non sarà un grande compito per un tecnico inverso, quindi come funziona? L'offuscamento aggiunge solo rumore. C'è un modo specifico per sostituire "se" e "altro". L'esempio è basato sul linguaggio "C" ma è comune per tutti i principali linguaggi come C ++, Python, Java ecc.,

    
posta VISWESWARAN NAGASIVAM 28.05.2016 - 20:34
fonte

3 risposte

6

È abbastanza sicuro che se un utente malintenzionato ha la possibilità di modificare il codice eseguibile sul tuo server, sei già fregato. Ti stai preoccupando di ignorare la convalida della password per fare qualcosa quando, a tutti gli effetti, hanno già il controllo completo del tuo sistema. In caso contrario, non sarebbero in grado di modificare i file eseguibili binari.

Se hai questo lato client di codice piuttosto che lato server in modo che possano confonderlo, è anche un enorme buco di sicurezza. Il codice che convalida l'hash password / password non dovrebbe assolutamente essere modificato da un utente malintenzionato.

    
risposta data 28.05.2016 - 20:43
fonte
3

Se il tuo codice è in esecuzione sul computer dell'utente, non esiste un modo infallibile per impedire all'utente di eseguire il reverse engineering e / o modificare il programma. Puoi renderlo più difficile con le tecniche di offuscamento, mentre gli strumenti antipirateria e DRM tentano di fare, ma alla fine qualsiasi programma che l'utente esegue è sotto il controllo dell'utente.

L'unico modo definitivo per risolvere questo problema è far funzionare if statement su una macchina che puoi controllare. Ad esempio, si potrebbero nascondere dati importanti necessari per l'esecuzione del programma e richiedere al client di connettersi al server e fornire credenziali valide prima che il server fornisca tali dati. Ovviamente ci sono degli svantaggi, come potete immaginare: richiede all'utente di avere una connessione Internet per far funzionare il programma e presuppone che ci siano dati importanti che è possibile nascondere diversi da utente a utente.

    
risposta data 28.05.2016 - 20:56
fonte
0

C'è ovviamente qualcosa di diverso da "se". Ad esempio, è possibile calcolare qualcosa che è vitale per la corretta esecuzione del programma dalla password.

Una tabella di puntatori di funzione che è stata crittografata con la password sarebbe la cosa più ovvia da fare, ma potrebbe essere qualcosa di più subdolo come il calcolo dei limiti di un array sbagliato.

Quindi, se è così facile, perché non lo fanno tutti?

Per una ragione, rende il programma molto più difficile da eseguire il debug e l'arresto imprevisto di un'applicazione pirata non è esattamente un buon PR (anche se il programma è stato piratato!).

Ma soprattutto, stai sprecando un sacco di tempo in una corsa agli armamenti che inevitabilmente perderai (ci sono molte persone con molto tempo libero a disposizione, ed è sufficiente se uno di loro fa una crepa di successo).
Invece, potresti usare per rendere il tuo prodotto migliore per pagare i clienti.

La stragrande maggioranza delle persone che piratano roba mai ti pagherà comunque, qualunque cosa accada. È fastidioso, ma non molto da fare.

Ma uno o l'altro cliente pagante indeciso potrebbe essere convinto di pagare se il tuo software ha un'altra cosa. Oppure un cliente già esistente potrebbe rinnovare una licenza.

    
risposta data 28.05.2016 - 21:25
fonte

Leggi altre domande sui tag