Como programador eu mesmo, não posso imaginar que tal programa possa, ou possa existir. Vou explicar porquê.
Não há um único ID de hardware; em vez disso, como você disse, há vários outros identificadores exclusivos que podem ser usados para criar um perfil exclusivo (muito parecido com o modo como os anunciantes on-line criam um perfil coletando informações individuais, como visitas ao site).
Qualquer programa pode ler qualquer ou todas as informações (apesar das limitações de acesso), e o que qualquer programa dado (ou mais especificamente, seus desenvolvedores) considerem suficientemente original é arbitrário. Um desenvolvedor pode considerar um Windows PID suficiente enquanto outro (* cough * Microsoft * cough *) usará vários. Não há realmente nenhuma maneira de saber exatamente quando um programa está tirando uma impressão digital de hardware. Existem razões legítimas de que um programa pode acessar praticamente qualquer um desses bits de informação, portanto, seria difícil determinar se ele está tirando uma impressão digital ou apenas fazendo algum trabalho.
Dito isso, poderia ser possível detectar uma tentativa de impressão digital por heurística . Por exemplo, você pode detectar se um programa faz uma tentativa (ou tem código) para ler várias partes de dados exclusivos. Se assim for, então você poderia dizer ao usuário sobre isso e deixá-lo decidir se está tentando imprimir o sistema digital ou apenas fazer o seu trabalho (como programas anti-malware tem que permitir que o usuário tome uma decisão sobre suspeito, mas não comportamentos de software comprovadamente culpados). É claro que, mesmo assim, as leituras poderiam ser espalhadas e, portanto, seriam ainda menos prováveis de serem detectadas.
Você pode observar manualmente um programa, mas não há ferramentas para monitorar e registrar o acesso a todo tipo de informação exclusiva que um programa pode ler (na verdade, é concebível que ele possa usar uma única informação de identificação exclusiva ( ou seja, um que não é bem conhecido ou geralmente usado dessa maneira).
(Não posso deixar de pensar que seria possível obter uma melhor leitura das tentativas de impressão digital usando uma VM, especialmente com um sistema operacional personalizado, como o ReactOS…)
Em resumo, não há uma maneira infalível de saber quando um programa está tirando as impressões digitais de um sistema. Você pode tentar observar o acesso a informações comuns, mas isso não garante a detecção de uma impressão digital em nenhum momento da imaginação.
Se você tiver dúvidas sobre um programa, sua melhor aposta é simplesmente pesquisar esse programa específico para ver se outros já descobriram que é necessária uma impressão digital do sistema (como como o Windows WPA foi dissecado) ou pelo menos para levantar a bandeira para que os especialistas em segurança possam desmontar o código, analisá-lo e descobrir.