Escolar Documentos
Profissional Documentos
Cultura Documentos
Segurança em softwares
o Numero de série:
Uma das proteções mais comuns de se encontrar, em que o
software se libera após a introdução de uma senha que pode ser
fixa ou variável, este ultima pode ser gerado através de nomes de
usuário, nome do PC, número de série do HD ou mesmo
aleatoriamente.
o Tempo de uso limitado (Trial):
Também é um tipo de proteção bastante comum, normalmente é
dado um período para experimentar o software e após esse
período o mesmo para de funcionar caso não seja registrado.
o Quantidade de execuções limitadas:
O software para de funcionar assim que seja atingido determinado
numero de execuções, e só volta a funcionar depois de registrado.
o Funções desabilitadas:
Algumas funções importantes são desativadas (como botões ou
menus) até que o programa seja registrado.
o Verificação de CD:
Proteção muito utilizada por jogos, em que é pedido para
introduzir o CD do mesmo, a fim de verificar sua autenticidade.
o Mensagem que incomoda (Nag-Screen):
Também é muito fácil de encontrar, são janelas que aparecem
geralmente no inicio ou no final da execução do software ou em
alguma ação do usuário, que informa que o software não está
registrado. Desaparecem após o registro.
Arquivos-senha (Key-File):
Proteção que pede um arquivo com conteúdo correto para que o
programa seja liberado.
o Proteção anti-cracking:
Proteção que detecta e proíbe o uso de ferramentas de análise ou
de edição sobre o software, afim de não deixar que o mesmo seja
crackeado.
o Executável comprimido ou encriptado:
Proteção que diminui o tamanho do software ou ofusca seu código,
para que o mesmo não consiga ser analisado.
o Analise
o Analise estática do software (Parsing):
Procura-se determinar quais são os componentes básicos do
sistema (arquivos, rotinas, variáveis, etc.), sua localização
(achar uma rotina), e sua interação com os demais
componentes (uma variável que depende de outra). As
ferramentas usadas para fazer este tipo de analise são os
Parsers.
o Analise dinâmica do software (Debugging):
É executado o software, e são monitorados valores de
variáveis, funções chamadas, etc. As ferramentas usadas
para este tipo de análise são os Debuggers.
o Informação adicional:
São analisadas todas as fontes de informações externas ao
software, como a documentação (arquivos de ajuda (help),
textos, diagramas, etc.), bancos de dados, entre outras
informações que possam ajudar na analise.
Tratamento de dados
É decidido qual o melhor caminho a seguir com os dados obtidos
(se será feito alguma modificação na estrutura do sistema, se será
criada alguma ferramenta para ajudar no processo, etc.), e então
é aplicada a técnica escolhida.
o Avaliação dos resultados
É visualizado e avaliado o resultado final, a fim de se achar algum
defeito ou erro (bug).
Relações de tamanho
Registradores da CPU
o AX: Acumulador
o BX: Registro Base
o CX: Registro Contador
o DX: Registro de dados
o CS: Registro do segmento de código
o DS: Registro do segmento de dados
o ES: Registro do segmento extra
o SS: Registro do segmento de pilha
o SI: Registro índice fonte
o DI: Registro índice destino
BP: Registro do apontador da base
o SP: Registro do apontador de pilha
Flags da CPU
Instruções aritméticas:
ADD Adição
SUB Subtração
MUL Multiplicação
DIV Divisão
ADC Adição com carry
SBB Subtração com carry
IMUL Multiplicação com sinal
IDIV Divisão com sinal
Instruções lógicas:
AND Função lógica AND (“E”)
OR Função lógica OR (“OU”)
XOR Função lógica XOR (“OU EXCLUSIVO”)
NOT Função lógica NOT (“Não”)
TEST Comparação lógica
Instruções de comparação:
CMP, CMPS, CMPSB, CMPSW Utilizadas para comparar valores dos registradores
Instruções para Loops (voltas):
LOOP. LOOPE. LOOPZ. Determinam o numero de vezes que um bloco de
LOOPNE. LOOPNZ instruções deve ser executado
Instruções de contagem:
INC Incrementa o conteúdo de um registrador (contador)
DEC Decrementa o conteúdo de um registrador (contador)
Instruções
Instruções de transferência:
MOV, MOVS,
MOVSB, Move valores para registradores
MOVSW
Instruções da pilha:
POP, POPF Move um Word da pilha para um destino (registrador)
PUSH, PUSHF Move dados para o topo da pilha (stack)
Saltos incondicionais: Transferem o fluxo de execução incondicionalmente
CALL Transfere o fluxo para uma sub-rotina
RET Retorna de uma sub-rotina, restabelecendo o fluxo anterior
Desvia o fluxo para um destino especificado, sem que precise de
JMP
condições para isso
Saltos condicionais: Transferem o fluxo de execução mediante alguma condição
JE, JZ Salta se é igual a zero
JNE, JNZ Salta se não é igual a zero
JS Salta se sinal é negativo
JNS Salta se sinal não é negativo
JP, JPE Salta se paridade é par
JNP, JPO Salta se paridade é impar
JO Salta se paridade é impar
JNO Salta se não houve estouro (overflow)
JB, JNAE Salta se abaixo (não acima ou igual)
JNB, JAE Salta se não abaixo (acima ou igual)
JBE, JNA Salta se abaixo ou igual (não acima)
JNBE, JA Salta se não abaixo ou igual (acima)
JL, JNGE Salta se menor (não maior ou igual)
JNL, JGE Salta se não menor (maior ou igual)
JEL, JNG Salta se menor ou igual (não maior)
JNLE, JG Salta se não menor ou igual (maior)
Referencia http://dinamico.orgfree.com/textos.html