Domanda

Ho scritto un programma che è una specie di plugin standalone non ufficiale per un'applicazione. Consente ai clienti di ottenere un servizio che rappresenta un'alternativa a un prezzo inferiore rispetto a quello di proprietà del fornitore. Il mio programma non è illegale, contro qualsiasi tipo di TOS, e certamente non è un virus, un adware o qualcosa del genere. Detto questo, il venditore ovviamente non è contento che io abbia preso parte alla concorrenza e sta cercando di bloccare l'esecuzione della mia domanda.

Ha già provato alcune tattiche per impedire alle persone di eseguire la mia app insieme alla sua. Lo fa in modo che se viene rilevato, la sua app genera un errore falso.

Per prima cosa, ha verificato se il mio programma era in esecuzione cercando una finestra aperta con il titolo giusto. L'ho contrastato randomizzando il titolo del programma all'avvio.

Successivamente, ha cercato il nome del processo in esecuzione. Ho contrastato questo facendo l'app stessa copia quando viene avviata come [stringa casuale] .exe e quindi eseguendo quello.

Comunque, la mia domanda è questa: cos'altro può fare per rilevare se il mio programma è in esecuzione? So che puoi leggere il testo della finestra (es. Barra di stato, etichette). Sono pronto a contrastare questo sostituendo le etichette con immagini (ugh, in qualsiasi altro modo?).

Ma cos'altro c'è? Riesci a rilevare quali .llll ha caricato un programma? In tal caso, questo potrebbe essere risolto randomizzando i nomi delle dll prima di caricarli?

So che è possibile ottenere la firma di un programma in memoria e seguirla in quel modo (come uno scanner di virus), ma le probabilità che lo faccia probabilmente non sono buone perché sembra piuttosto avanzato.

Anche se è un po 'schifoso da fare, è divertente. È come una lotta di pugni nerd.

Modifica Quando ho detto che è un plugin, questo è solo il termine (errato) che ho usato. È un file EXE autonomo. L '"API" tra il mio programma e l'altro è il mio è semplicemente l'inserimento di dati nei controlli (come caselle di testo, ecc.).

È stato utile?

Soluzione

Mi sento un po 'sporca a rispondere a questa domanda, ma è tardi e sto aspettando che una copia dell'unità finisca così ....

Potrebbe usare un checksum per identificare il tuo eseguibile / dll. Questo aggira i trucchi di ridenominazione.

Puoi aggirare questo problema modificando casualmente i bit nel programma all'avvio (ad esempio, cambiare una risorsa, giocare con la versione integrata, ecc ...).

Se fossi in lui inizierei anche a cercare schemi di traffico di rete; ad esempio, se stai indirizzando i clienti ai concorrenti stai cercando tali informazioni da qualche parte, quindi uccidi il processo e / o scarica la libreria se un plug-in accede a un sito che è nella lista nera.

Se porti il ??gioco del gatto e del mouse abbastanza lontano (ad es. ganci shell per ricreare il tuo eseguibile / libreria se viene eliminato) probabilmente verrai contrassegnato come virus da un software antivirus.

Altri suggerimenti

Non molto sportivo del tuo concorrente.

Distribuisci il tuo progetto come codice sorgente crittografato non compilato. Scrivere un programma di decrittografia e distribuzione in grado di randomizzare, rinominare le classi, riorganizzare il codice per evitare qualsiasi particolare rilevamento della firma.

Quindi compilare il codice sul computer client utilizzando CSharpCodeProvider per compilare il codice. Puoi generare assiemi casuali, con firme di funzioni totalmente casuali (ti suggerisco di usare un grande dizionario di parole reali, comuni, anziché essere totalmente casuali. Puoi concatenarle insieme per più divertimento. Ad esempio Live, Virtual, Space, Office, Network, Utilità: Space.Live.Network.dll, Utility.Virtual.Live.dll).

Ogni versione del tuo programma su ogni client sarà diversa. Assicurati di nascondere il tuo programma di distribuzione. Forse dovrebbe cancellarsi dopo aver installato la versione personalizzata.

  

Comunque, la mia domanda è questa: cos'altro può fare per rilevare se il mio programma è in esecuzione?

  • Il tuo programma è un EXE o una DLL?
  • Lo chiami un plugin: a cosa si collega?
  • Come viene avviato / avviato / eseguito il programma?
  • Cosa fa il tuo programma per " collegare " ;?
  • Qual è l'API tra il tuo programma e l'altro programma?

Questa non è una risposta alla tua domanda finale, ma piuttosto al problema descritto.

Che ne dici di riparare l'altra applicazione. Trova la stringa che sta cercando nei titoli e cambia qualche lettera in esso.

Fai sapere ai tuoi clienti dove si trova il problema fornendo loro una soluzione all'altra applicazione piuttosto che alla tua.

@ryeguy ... La miglior difesa è un buon imho offensivo. Fai il possibile per disabilitare il suo processo prima che disabiliti il ??tuo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top