Come funziona la generazione di eseguibili personalizzati?

4

Una delle cose per cui la piattaforma di distribuzione Steam di Valve è nota è il suo sistema di generazione eseguibile personalizzato, che crea una copia univoca di un programma per ogni persona che lo acquista.

Sono sicuro che Valve non è l'unica azienda o persona ad aver implementato o pensato di implementare un tale sistema, comunque. Se volessi provare a caricare il mio sistema che ha generato file eseguibili sul lato server che sono unici per il downloader o il loro account, cosa avrei bisogno di sapere come fare? Quali sono le basi di un tale sistema in primo luogo?

    
posta Joe Z. 12.12.2013 - 00:21
fonte

2 risposte

4

A fini di discussione, presumo che il tuo programma sia scritto in C, compilato su unix, e che ci sia una piccola quantità di personalizzazione fatta (solo cambiando le costanti di tempo compilate). Iniziamo con un modello, chiamiamolo customer.c.templ

#include "customer.h"
const char custname="$$custname$$";
const int custnum=$$custnum$$;
.
.
.

e scriviamo un semplice script per fare sostituzioni, diciamo markup.pl

#!/usr/bin/perl -p
s/\$\$([^$])\$\$/$ENV[$1]/e;

e chiedi ai nostri addetti alle vendite di fornirci alcuni dati dei clienti

custname="Billy Bob's Clam Shack"
custnum=404
.
.
.

e un piccolo script semplice:

#!/bin/sh
. customer_data
markup.pl <customer.c.tmpl >customer.c
make customer.o
make a.out
mv a.out $custnum.exe

e ci sei tu. binario personalizzato.

    
risposta data 12.12.2013 - 01:44
fonte
0

Spesso puoi implementare la stessa funzionalità in modi leggermente diversi.

Supponiamo che tu abbia n funzioni per ognuna delle quali hai 2 diverse implementazioni (che non devono essere lo stesso assembly dopo la compilazione), che puoi creare 2ⁿ versioni del tuo eseguibile con la stessa funzionalità.

Puoi variare questo approccio modificando l'ordine dei comandi di assemblaggio indipendenti, utilizzando più di 2 vaiand per scegliere tra ...

    
risposta data 15.12.2014 - 14:17
fonte

Leggi altre domande sui tag