Sub-Reptício Software - Ofuscamento, Aplicação de Marcas D´Água e Resistência a Alterações para Proteção de Software
VITRINE Os TOP de vendas !!
Semana do Consumidor
Quem viu este produto , comprou
-
Contagem Regressiva até Zero Day
VITRINE Os TOP de vendas !!
“Contagem Regresiva até Zero Day” abrange muito mais que o Stuxnet. Zetter nos mostra como a guerra digital se desenvolveu nos Estados Unidos. Ela nos leva para dentro do próspero “mercado cinza” de exploits zero-day, onde agências de inteligência e militares pagam enormes quantias em troca dos códigos maliciosos de que precisam para conduzir infiltrações e ataques. Ela revela o quão vulneráveis podem ser muitos dos nossos sistemas críticos face a ações semelhantes à do Stuxnet, partindo de atacantes anônimos ou nações-estado – e nos mostra o que pode acontecer caso nossa infraestrutura seja atingida por um ataque assim. ... Ler mais +
QUERO VER -
Internet das Coisas (IoT): Segurança e Privacidade dos Dados Pessoais Internet das Coisas (IoT):
VITRINE Os TOP de vendas !!
-
VITRINE Os TOP de vendas !!
-
Introdução ao Pentest - 2ª Edição
VITRINE Os TOP de vendas !!
Introdução ao Pentest irá capacitar o leitor a entender e a realizar o pentest – uma auditoria minuciosa sobre falhas e vulnerabilidades em computadores e redes – e, assim, buscar a melhor forma de solucionar os problemas encontrados. ... Ler mais +
QUERO VER -
Ataques de Negação de Serviço DoS e DDoS Ataques de Negação de Serviço DoS e DDoS
VITRINE Os TOP de vendas !!
-
VITRINE Os TOP de vendas !!
Existe um refrão exaustivamente repetido no âmbito dos negócios sobre os profissionais de tecnologia: são pessoas orientadas em demasia ao lado técnico, que não falam a língua do negócio. Nas empresas usuárias de tecnologia, o papel de TI é habilitar negócios e não existe nada que catapulte mais a carreira dos líderes de TI do que habilitar as iniciativas de vendas e marketing. ... Ler mais +
QUERO VER
Quem viu este produto , também se interessou
-
Introdução ao Pentest - 2ª Edição
VITRINE Os TOP de vendas !!
Introdução ao Pentest irá capacitar o leitor a entender e a realizar o pentest – uma auditoria minuciosa sobre falhas e vulnerabilidades em computadores e redes – e, assim, buscar a melhor forma de solucionar os problemas encontrados. ... Ler mais +
QUERO VER -
Ataques de Negação de Serviço DoS e DDoS Ataques de Negação de Serviço DoS e DDoS
VITRINE Os TOP de vendas !!
-
Contagem Regressiva até Zero Day
VITRINE Os TOP de vendas !!
“Contagem Regresiva até Zero Day” abrange muito mais que o Stuxnet. Zetter nos mostra como a guerra digital se desenvolveu nos Estados Unidos. Ela nos leva para dentro do próspero “mercado cinza” de exploits zero-day, onde agências de inteligência e militares pagam enormes quantias em troca dos códigos maliciosos de que precisam para conduzir infiltrações e ataques. Ela revela o quão vulneráveis podem ser muitos dos nossos sistemas críticos face a ações semelhantes à do Stuxnet, partindo de atacantes anônimos ou nações-estado – e nos mostra o que pode acontecer caso nossa infraestrutura seja atingida por um ataque assim. ... Ler mais +
QUERO VER -
VITRINE Os TOP de vendas !!
-
Internet das Coisas (IoT): Segurança e Privacidade dos Dados Pessoais Internet das Coisas (IoT):
VITRINE Os TOP de vendas !!
-
VITRINE Os TOP de vendas !!
Existe um refrão exaustivamente repetido no âmbito dos negócios sobre os profissionais de tecnologia: são pessoas orientadas em demasia ao lado técnico, que não falam a língua do negócio. Nas empresas usuárias de tecnologia, o papel de TI é habilitar negócios e não existe nada que catapulte mais a carreira dos líderes de TI do que habilitar as iniciativas de vendas e marketing. ... Ler mais +
QUERO VER
- DescriçãoSub-Reptício Software - Ofuscamento, Aplicação de Marcas D´Água e Resistência a Alterações para Proteção de Software
Teoria, Técnicas e Ferramentas para o Combate à Pirataria, Alterações e Engenharia Reversa Maliciosa em Software A última década viu significativos progressos no desenvolvimento de técnicas para resistência contra a pirataria e alterações de software. Estas técnicas são indispensáveis para os desenvolvedores de software que procuram proteger propriedade intelectual vital. Software Sub-reptício é o primeiro recurso abrangente e com autoridade para pesquisadores, desenvolvedores e estudantes que queiram entender estas abordagens, o nível de segurança que elas suportam e o impacto no desempenho em que elas incorrem. Christian Collberg e Jasvir Nagra reúnem técnicas tiradas de áreas relacionadas com a ciência da computação, incluindo criptografia, esteganografia, aplicação de marcas d'água, métricas de software, engenharia reversa e otimização de compiladores. Usando extensivos códigos de amostra, eles mostram aos leitores como implementar esquemas de proteção que vão do ofuscamento de código à resistência a alterações e marcas de nascença e discutem as limitações teóricas e práticas destas técnicas - Sobre o Autor
- Especificação
Características
Tipo de Livro Livro Físico Especificações
Sobre o Autor Christian Collberg
Christian Collberg, professor associado de Ciência da computação na Universidade do Arizona, fez pesquisas fundamentais em ofuscamento de código, aplicação de marcas d’água e de nascença em software. Recebeu seu Ph.D. em Ciência da computação da Universidade de Lund, Suécia, e também trabalhou na Universidade de Auckland, Nova Zelândia, e na Academia Chinesa de Ciências, em Beijin, China.
Jasvir Nagra
Jasvir Nagra, tem interesse no projeto de fortes algoritmos de aplicação dinâmica de marcas d'água e trabalhou na aplicação de ofuscamento e resistência a alterações para proteção da integridade de software em execução em plataformas remotas, não confiáveis. Atualmente, trabalha em segurança baseada em linguagens de programação, no Google, na CalifórniaInformações Técnicas Sumário
Prefácio - XXIII
Sobre os autores - XXXIII
Agradecimentos - XXXV
Capítulo 1 Que é software sub-reptício? - 3
1.1 Definindo o cenário - 3
1.2 Ataque e defesa - 8
1.3 Análise de programas - 9
1.3.1 Exemplo simples de engenharia reversa - 11
1.4 Ofuscamento de código - 15
1.4.1 Aplicações do ofuscamento de código - 18
1.4.1.1 Engenharia reversa maliciosa - 18
1.4.1.2 Gerenciamento de direitos digitais - 19
1.4.1.3 Computação de agente móvel - 20
1.4.1.4 Computação em grade - 21
1.4.1.5 Diversidade artificial - 22
1.4.2 Transformações de ofuscamento - 23
1.4.3 Ofuscamento de código de chapéu preto - 28
1.4.3.1 Desvio de alvo - ofuscamento invisível - 29
1.4.3.2 Ofuscamento de vírus - 32
1.5 Resistência a alterações - 35
1.5.1 Aplicações da resistência a alterações - 36
1.5.2 Um exemplo - 38 1.6 Marca d’água de software - 39
1.6.1 Um exemplo - 42
1.6.2 Ataques em sistemas de marca d’água - 44
1.7 Similaridade de software - 46
1.7.1 Plágio - 46
1.7.2 Investigação de Software - 48
1.7.3 Sinais de nascença - 49
1.7.4 Um exemplo de sinal de nascença - 50
1.8 Técnicas de proteção baseadas em Hardware - 53
1.8.1 Distribuição com identificador físico - 53
1.8.2 Amarração do programa à CPU - 54
1.8.3 Assegurando um ambiente de execução segura - 55
1.8.4 Execução encriptada - 56 1.8.5 Barreiras físicas - 57 1.9 Discussão - 59
1.9.1 Razões para usar a proteção de software... - 59
1.9.2 ... e razões para não usá-la - 60
1.9.3 Então, quais algoritmos devo usar? - 61
1.10 Notação - 62
Capítulo 2 Métodos de ataque e defesa - 63
2.1 Estratégias de ataque - 64
2.1.1 Um alvo prototípico de craqueamento - 65
2.1.2 Qual é a motivação do adversário? - 67
2.1.3 O que o adversário procura craquear? - 70
2.1.3.1 Estático versus Dinâmico e Estripado versus Não estripado - 71
2.1.3.2 Formatos de distribuição independentes de arquitetura - 72
2.1.4 Qual a metodologia do ataque do adversário? - 73
2.1.4.1 Análise dinâmica - craqueamento versus depuração - 74
2.1.4.2 Análise dinâmica - explorando falhas na caixa preta - 75
2.1.4.3 Análise estática - 76
2.1.4.4 Edição - 76 2.1.4.5 Automação - 77
2.1.5 Que ferramentas o adversário utiliza? - 77
2.1.6 Quais técnicas o adversário utiliza? - 78
2.1.6.1 Conhecendo o executável - 78
2.1.6.2 Interrupção em funções de biblioteca - 79
2.1.6.3 Correspondência de padrões estáticos - 80
2.1.6.4 Observando a memória - 81
2.1.6.5 Recuperando dados internos - 83
2.1.6.6 Mexendo com o ambiente - 84
2.1.6.7 Correspondência de padrões dinâmica - 85
2.1.6.8 Ataques diferenciais - 86
2.1.6.9 Recuperando algoritmos através da descompilação - 87
2.1.7 Discussão - 88
2.2 Estratégias de defesa - 92
2.2.1 Notação - 93
2.2.2 A primitiva cobertura - 96
2.2.3 A primitiva duplicata - 99
2.2.4 As primitivas divisão e combinação - 102
2.2.5 A primitiva reordenação - 106
2.2.6 A primitiva mapeamento - 107
2.2.7 A primitiva indireta - 110
2.2.8 A primitiva mímica - 112
2.2.9 A primitiva anúncio - 114
2.2.10 A primitiva detecção-resposta - 116
2.2.11 A primitiva dinâmica - 118
2.2.12 Discussão - 120
2.3 Discussão - 121
2.3.1 O que precisamos dos modelos de ataque e defesa? - 121
2.3.2 Como usamos os modelos para divisar algoritmos? - 122
Capítulo 3 Análise do programa - 123
3.1 Análise estática - 124
3.1.1 Análise do fluxo de controle - 125
3.1.1.1 Lidando com exceções - 127
3.1.1.2 Algoritmo REAMB: lidando com código automodificável - 129
3.1.1.3 Identificando laços - 131
3.1.1.4 Fluxo de controle interprocedimental - 132
3.1.2 Análise de fluxo de dados - 134
3.1.3 Análise de dependência de dados - 139
3.1.4 Análise de apelidos - 141
3.1.4.1 Onde ocorre a formação de apelidos? - 141
3.1.4.2 Classificação de problemas de análise de apelidos - 143
3.1.4.3 Algoritmos de análise de apelidos - 145
3.1.5 Fatiamento - 149 3.1.6 Interpretação abstrata - 150
3.2 Análise dinâmica - 152 3.2.1 Depuração - 153
3.2.1.1 Pontos de interrupção por software versus por hardware - 154
3.2.1.2 Algoritmo REBB: depuração reversa - 159
3.2.1.3 Depuração relativa - 165
3.2.2 Traçado de perfil - 168
3.2.2.1 Implementação do perfilador - 169
3.2.3 Rastreamento - 170
3.2.3.1 O algoritmo RELJ: comprimindo traçados - 171
3.2.4 Simulação - 175 3.3 Reconstituindo a fonte - 177
3.3.1 Desmontagem - 180 3.3.1.1 Travessia linear versus recursiva - 181
3.3.1.2 O algoritmo REHM: Desmontando binários estripados - 185
3.3.2 Descompilação - 187
3.3.2.1 O algoritmo RECG: recuperando o fluxo de controle de alto nível - 190
3.3.2.2 Descompilando linguagens de alto nível - 195
3.4 Análise pragmática - 197
3.4.1 Métricas de estilo - 198
3.4.2 Métricas de complexidade de software - 201
3.4.3 Visualização de software - 203 3.5 Discussão - 206
Capítulo 4 Ofuscamento de Código - 209
4.1 Transformações de ofuscamento que preservam a semântica - 210
4.1.1 O algoritmo OBFCF: transformações de diversificação - 211
4.1.1.1 Equivalência de expressões - 212
4.1.1.2 O algoritmo OBFCFreordena: reordenando código e dados - 212
4.1.1.3 O algoritmo OBFCFinexlinha: dividindo e combinando funções - 213
4.1.1.4 O algoritmo OBFCFcopia: copiando código - 214
4.1.1.5 O algoritmo OBFCFinterp: interpretação - 215
4.1.2 O algoritmo OBFTP: renomeação de identificador - 217
4.1.3 Executivas de ofuscamento - 220
4.1.3.1 O algoritmo OBFCTJEO: maximizando o benefício pelo custo - 221
4.1.3.2 O algoritmo OBFHC: modelando dependências - 222
4.2 Definições - 225
4.2.1 Transformações potentes de ofuscamento - 228
4.2.2 Transformações eficazes de ofuscamento - 231
4.2.3 Invisibilidade - 231
4.2.4 Outras definições - 233
4.3 Complicando o fluxo de controle - 234
4.3.1 Expressões opacas - 234
4.3.2 O algoritmo OBFWHKD: achatando o fluxo de controle - 235
4.3.3 Introduzindo apelidos - 238
4.3.3.1 O algoritmo OBFCTJapelido: adicionando apelidos espúrios - 239
4.3.3.2 O algoritmo OBFWHKDapelido: achatamento do fluxo de controle - parte 2 - 240
4.3.4 O algoritmo OBFCTJinócuo: inserindo fluxos de controle fictícios - 244
4.3.4.1 Diagramas irredutíveis - 246
4.3.4.2 Predicados opacos mutuamente dependentes - 247
4.3.5 O algoritmo OBFLDK: saltos através de funções de desvio - 248
4.3.6 Ataques - 251
4.3.6.1 O algoritmo REUDM: ataques dinâmicos contra o achatamento do fluxo de controle - 252
4.3.6.2 O algoritmo REMASB: ataques dinâmicos contra funções de desvio - 255
4.4 Predicados opacos - 256
4.4.1 O algoritmo OBFCTJponteiro: predicados opacos a partir de apelidos de ponteiros - 257
4.4.2 OBFWHKDopaco: valores opacos a partir do uso de apelidos de matriz - 260
4.4.3 O algoritmo OBFCTJsegmento: predicados opacos a partir de concorrência - 262
4.4.4 Quebrando predicados opacos - 264
4.4.4.1 O algoritmo REPMBG: quebrando - 266
4.4.4.2 O algoritmo OBFCTJfatia: impedindo ataques de fatiamento - 268
4.5 Codificações de dados - 269 4.5.1 Codificando inteiros - 272
4.5.1.1 O algoritmo OBFBDKMRVnum: truques da teoria dos números - 273
4.5.1.2 O algoritmo OBFBDKMRVcripto: encriptando inteiros - 274
4.5.2 Codificando booleanos - 277
4.5.2.1 O algoritmo OBFBDKMRVbool [28]: valores múltiplos - 278
4.5.2.2 O algoritmo OBFCTJbool: dividindo booleanos - 278
4.5.3 Codificação de dados literais - 280
4.5.4 Codificando matrizes - 282
4.5.4.1 O algoritmo OBFZCW: permutação de matrizes - 282
4.5.4.2 O algoritmo OBFCTJmatriz: reestruturando matrizes - 284
4.6 Quebrando abstrações - 287
4.6.1 O algoritmo OBFWCassina: combinando assinaturas de funções - 287
4.6.2 O algoritmo OBFCTJclasse: dividindo e combinando classes - 290
4.6.3 O algoritmo OBFDMRVSL: destruindo estruturas de alto nível - 292
4.6.3.1 Um exemplo - 295
4.6.3.2 Avaliação - 302
4.6.4 O algoritmo OBFAJV: modificando as codificações de instruções - 303
4.7 Discussão - 308
Capítulo 5 Teoria do Ofuscamento - 311
5.1 Definições - 315
5.2 Ofuscamento provadamente seguro: possível ou impossível? - 317
5.2.1 O problema da parada de Turing - 318
5.2.2 O algoritmo REAA: programas desofuscadores - 322
5.3 Ofuscamento provadamente seguro: é possível (às vezes)! - 324
5.3.1 O algoritmo OBFLBS: ofuscamento com funções pontuais - 325
5.3.1.1 Ofuscamento do controle de acesso - 328
5.3.1.2 Ofuscamento de expressões regulares - 331
5.3.2 O algoritmo OBFNS: ofuscamento de bases de dados - 333
5.3.3 O algoritmo OBFPP: encriptação homomórfica - 335
5.3.4 O algoritmo OBFCEJO: DES caixa branca - 340
5.3.4.1 DES tradicional - 342
5.3.4.2 Ofuscamento de DES - 344
5.4 Ofuscamento provadamente seguro: é impossível (às vezes)! - 347
5.4.1 Um ofuscador geral - 348
5.4.2 Funções apreensíveis de ofuscamento - 352
5.4.3 Provando que o ofuscamento é impossível - 353
5.4.4 Discussão - 355
5.5 Ofuscamento provadamente seguro: pode ser salvo? - 357
5.5.1 Superando a impossibilidade - 358
5.5.2 Definições revistas: tornar interativo o ofuscamento - 359
5.5.2.1 O problema do avaro - 360
5.5.2.2 O problema do milionário - 361
5.5.3 Definição revista: tornar o ofuscamento não preservador de semântica - 362
5.5.3.1 Chamada a procedimento remoto - 364
5.5.3.2 Execução caixa branca de programa remoto - 365
5.6 Discussão - 367
Capítulo 6 Ofuscamento Dinâmico - 369
6.1 Definições - 372
6.2 Movendo o código - 373
6.2.1 O algoritmo OBFKMNM: substituindo instruções - 374
6.2.2 OBFAGtroca: máquina de estado automodificável - 378
6.2.2.1 Construindo a máquina de estado - 381
6.2.2.2 Execução de exemplo - 387
6.2.2.3 Codificando o exemplo - 388
6.2.3 OBFMAMDSB: combinação dinâmica de código - 388
6.3 Encriptação - 396
6.3.1 OBFCKSP: código como material de chave - 397
6.3.2 OBFAGcript: combinando automodificação e encriptação - 405
6.3.2.1 Um exemplo - 406
6.3.2.2 Derivando o fluxo da chave - 407
6.3.2.3 Codificando o exemplo - 410
6.4 Discussão - 412
Capítulo 7 Resistência a alterações em Software - 415
7.1 Definições - 419
7.1.1 Verificando alterações - 420
7.1.2 Respondendo a alterações - 424
7.1.3 Projeto do sistema - 425
7.2 Introspecção - 426
7.2.1 O algoritmo TPCA: rede de verificadores - 428
7.2.2 Gerando funções de extrato - 432
7.2.3 O algoritmo TPHMST: ocultando valores de extrato - 437
7.2.3.1 Desenho do sistema - 438
7.2.3.2 Construção de intervalos - 440
7.2.3.3 Computando valores de encaixe de corretores - 443
7.2.4 O protocolo ofuscado do Skype - 445
7.2.4.1 O algoritmo REBD: atacando o cliente Skype - 448
7.2.5 O algoritmo REWOS: atacando algoritmos produtores de autoextrato - 449
7.2.5.1 O algoritmo TPGCK: detectando divisões de memória - 452
7.2.6 Discussão - 453
7.3 O algoritmo RETCJ: mecanismos de resposta - 455
7.4 Inspeção de estado - 459
7.4.1 O algoritmo TPCVCPSJ: funções de extrato inconscientes - 462
7.4.2 O algoritmo TPJJV: sobrepondo instruções - 465
7.5 Resistência remota a alterações - 468
7.5.1 Verificação e resposta distribuída - 469
7.5.2 Estratégias de solução - 470
7.5.3 O algoritmo TPZG: funções de fatiamento - 471
7.5.4 O algoritmo TPSLSPDK: medindo hardware remoto - 474
7.5.4.1 Aplicações - 475
7.5.4.2 O protocolo Pioneer - 476
7.5.5 TPCNS: substituição contínua - 477
7.6 Discussão - 480
Capítulo 8 Marca d’água em Software - 483
8.1 História e aplicações - 484
8.1.1 Aplicações - 484
8.1.1.1 Marcas visíveis e invisíveis - 485
8.1.1.2 Marcas rogustas e frágeis - 485
8.1.1.3 Marcas autorais - 486
8.1.1.4 Marcas de impressão digital - 487
8.1.1.5 Marcas de licença - 487
8.1.1.6 Marcas de meta-dados - 488
8.1.1.7 Marcas de validação - 488
8.1.1.8 Marcas de filtragem - 488
8.1.1.9 Marcas secretas - 488
8.1.1.10 Marcas autorais não intencionais - 489
8.1.2 Embutindo uma marca em áudio - 489
8.1.3 Embutindo uma marca numa imagem - 491
8.1.4 Embutindo uma marca num texto em linguagem natural - 492
8.2 Aplicação de marca d’água em software - 495
8.3 Definições - 497
8.3.1 Credibilidade da marca d’água - 498
8.3.2 Ataques - 500
8.3.3 Aplicação de marca d’água e de impressão digital - 502
8.4 Aplicação de marca d’água por permutação - 503
8.4.1 O algoritmo WMDM: reordenando blocos básicos - 505
8.4.2 Re-enumeração - 507
8.4.3 O algoritmo WMQP: melhorando a credibilidade - 508
8.5 Tornando as marcas d’água resistentes a alterações - 512
8.5.1 O algoritmo WMMC: embutindo marcas d’água de média - 512
8.6 Melhorando a resiliência - 516
8.6.1 O algoritmo WMSHKQ: aplicação estatística de marcas d’água - 516
8.6.1.1 Embutindo - 517 8.6.1.2 Reconhecimento - 520
8.6.1.3 Discussão - 522 8.7 Melhorando a invisibilidade - 523
8.7.1 O algoritmo WMMIMIT: mapeando instruções - 523
8.7.2 O algoritmo WMVVS: marcas d’água em diagramas de controle de fluxo (CFGs) - 524
8.7.2.1 Embutindo - 526
8.7.2.2 Reconhecimento - 532
8.7.2.3 Discussão - 533
8.7.3 O algoritmo WMCC: interpretação abstrata - 534
8.7.3.1 Embutindo - 535
8.7.3.2 Reconhecimento - 537
8.7.3.3 Discussão - 538
8.8 Embutimentos esteganográficos - 539
8.8.1 O algoritmo WMASB: o compilador como embutidor - 540
8.8.1.1 Embutimento - 541
8.8.1.2 Reconhecimento - 543
8.8.1.3 Discussão - 544
8.9 Dividindo inteiros de marca d’água - 545
8.9.1 Dividindo uma marca grande em partes menores - 545
8.9.2 Partes redundantes de marca d’água - 546
8.9.2.1 Eliminando partes fictícias - 549
8.9.3 Códigos esparsos para aumento da credibilidade - 550
8.10 Codecs de diagramas - 553
8.10.1 Árvore pai-ponteiro orientada - 553
8.10.2 Diagramas de base - 554
8.10.3 Diagramas de permutação - 554
8.10.4 Árvores cúbicas de plano plantado - 555
8.10.5 Diagramas de permutação redutível - 556
8.11 Discussão - 557
8.11.1 Técnicas de embutimento - 558
8.11.2 Modelos de ataque - 559
Capítulo 9 Marca d’água Dinâmica - 561
9.1 O algoritmo WMCT: explorando apelidos - 566
9.1.1 Um exemplo simples - 567
9.1.2 Problemas de reconhecimento - 569
9.1.3 Aumentando a taxa de bits - 572
9.1.3.1 Escolhendo uma codificação eficaz de diagramas - 573
9.1.3.2 Gerando código minimalista - 574
9.1.3.3 Aumentando a invisibilidade e a taxa de bits pela divisão do diagrama - 575
9.1.4 Aumentando a resiliência a ataques - 577
9.1.4.1 Protegendo contra inversões de vínculos - 578
9.1.4.2 Protegendo contra a divisão de nós - 579
9.1.4.3 Protegendo contra a análise de apelidos - 581
9.1.5 Aumentando a invisibilidade - 582
9.1.5.1 Evitando variáveis globais - 582
9.1.5.2 Evitando classes de nós não invisíveis - 583
9.1.5.3 Evitando cortes fracos - 584
9.1.6 Discussão - 585
9.2 O algoritmo WMNT: explorando o paralelismo - 586
9.2.1 Embutindo widgets de marca d’água - 590
9.2.2 Exemplo de embutimento - 595
9.2.3 Reconhecimento - 598
9.2.4 Evitando ataques de correspondência de padrões - 600
9.2.5 Tornando os Widgets resistentes a alterações - 601
9.2.6 Discussão - 603
9.3 O algoritmo WMCCDKHLScaminhos: Expandindo os caminhos de execução - 605
9.3.1 Codificando e embutindo - 606
9.3.2 Reconhecimento - 612
9.3.3 Discussão - 612
9.4 O algoritmo WMCCDKHLSbf: tornando os caminhos de execução resistentes a alterações - 614
9.4.1 Embutindo - 615
9.4.2 Reconhecimento - 617
9.4.3 Tornando os desvios resistentes a alterações - 618
9.4.4 Discussão - 620
9.5 Discussão - 621
Capítulo 10 Análise de Similaridade de Software - 625
10.1 Aplicações - 626
10.1.1 Detecção de clones - 627
10.1.2 Investigação de software - 629
10.1.3 Detecção de plágios - 633
10.1.4 Detecção de marcas de nascença - 635
10.2 Definições - 636
10.2.1 Medidas de similaridade - 637
10.2.1.1 Similaridade de sequências - 638
10.2.1.2 Similaridade de conjuntos - 639
10.2.1.3 Similaridade de diagramas - 640
10.3 Análise baseada em k-grama - 641
10.3.1 SSSWAPENEIRA: selecionando extratos de k-grama - 642
10.3.2 SSSWAMOSS: detecção de plágio de software - 645
10.3.2.1 Exemplo - código fonte - 647
10.3.3 SSMCkgrama: k-gram de marcas de nascença de Bytecode Java - 648
10.4 Análise baseada em API - 651
10.4.1 SSTNMM: marcas de nascença de orientação por objetos - 652
10.4.2 SSTONMM: marcas de nascença de chamadas dinâmicas a funções - 654
10.4.3 SSSDL: marcas de nascença por k-grama dinâmica de API - 656
10.5 Análise baseada em árvores - 657
10.5.1 SSEFM: detecção de clones com base em ASTs - 657
10.6 Análise baseada em diagramas - 661
10.6.1 SSKH: detecção de clones baseada em PDG - 662
10.6.2 SSLCHY: detecção de plágios baseada em PDG - 666
10.6.3 SSMCwpp: marcas de nascença dinâmicas de um programa inteiro - 667
10.7 Análise baseada em métricas - 670
10.7.1 SSKK: detecção de clones com base em métricas - 671
10.7.2 SSLM: Análise de autoria baseada em métricas - 672
10.7.2.1 Classificação usando histogramas - 674
10.7.2.2 Selecionando as métricas corretas - 675
10.8 Discussão - 679
Capítulo 11 Hardware para Proteção de Software - 681
11.1 Distribuição física anti-pirataria - 683
11.1.1 Proteção de disco de distribuição - 684
11.1.1.1 Proteção de CD de áudio - 684
11.1.1.2 Proteção de CD-ROM - 686
11.1.1.3 Proteção de disquetes - 687
11.1.1.4 Proteção de filmes em DVD - 687
11.1.1.5 Proteção de filmes de alta definição - 690
11.1.2 Dongles - 691
11.1.2.1 Uma típica API de Dongle - 691
11.1.2.2 Atacando Dongles - 695
11.2 Inicialização autenticada, usando um módulo de plataforma confiável - 696
11.2.1 Inicialização confiável - 697
11.2.2 Tirando medidas - 700
11.2.3 O TPM - 702
11.2.4 O questionamento - 703
11.2.5 Questões de privacidade e confiança social - 706
11.2.6 Aplicações e controvérsias - 708
11.3 Execução encriptada - 710
11.3.1 A arquitetura XOM - 712
11.3.1.1 Modificações ISA - 714
11.3.2 Prevenindo ataques de repetição - 716
11.3.3 Corrigindo um barramento de endereços vazante - 718
11.3.4 Corrigindo um barramento de dados vazante - 722
11.3.5 Discussão - 722
11.4 Ataques a dispositivos resistentes a alterações - 723
11.4.1 Drenando o barramento - a mexida no XBOX da Microsoft - 724
11.4.2 Injetando cifras - o DS5002FP da Dallas Semiconductor - 726
11.4.3 Mexendo com Smartcards - 729
11.4.3.1 Ataques invasivos - 731
11.4.4 Ataques não invasivos - 734
11.4.4.1 Ataques de indução a falhas - 734
11.4.4.2 Ataques de temporização - 735
11.4.4.3 Ataques de análise de alimentação - 736
11.4.4.4 Contramedidas - 736
11.4.5 Proteção a nível de placa - 737
11.5 Discussão - 740
Bibliografia - 743
Índice Remissivo - 781Informações Técnicas
Nº de páginas: 832 Origem: Importado Editora: Editora Ciência Moderna Idioma: Português Edição: 1ª Edição Ano: 2010 ISBN: 9788573939118 Encadernação: Brochura Autor: Christian Collberg , Jasvir Nagra - Informações