4116 – PLUGIN PARA MEDIDA DE COMPLEXIDADE DE UM PROGRAMA OFUSCADO
Autor(es): Matheus Hoeltgebaum Zava
Orientação: Rafael de Oliveira Costa, Claudio Miceli de Farias
Resumo:
As técnicas de análise de código são um conjunto de técnicas de apoio à detecção de anomalias existentes determinado código
fonte de um software. Estas técnicas que ajudam aos desenvolvedores inspeciona-los, a fim de reduzir defeitos em uma aplicação.
Apesar dos benefícios trazidos para os desenvolvedores com a análise de código, tais técnicas têm ajudado atacantes a realizar a
engenharia reversa, que é processo de descobrir os princípios tecnológicos de um dispositivo, objeto ou sistema, através da análise
de sua estrutura, função e operação, o que é indesejável caso se queira ocultá-lo.
Uma das alternativas para proteger programas contra engenharia reversa é através do uso de ofuscações como [1] e [2] para
modificar a leitura e a lógica do binário do código, sem modificar o comportamento do mesmo, como alterando a ordem ou
adicionando instruções, para exigir mais tempo e esforço do atacante para distinguir a real lógica do programa.
Com isso, se temos um programa que é executado com uma gama de especificações, como memória disponível ou hardware
específico, alterar a ordem ou adicionar instruções podem aumentar ou impossibilitar a execução. do mesmo programa. Dessa
forma, é necessário medir qual ou quais técnicas que tornam um programa mais ofuscado, ou seja que não seja fácil de
compreender ou ler por ter mais instruções.
No entanto, medir quão ofuscado está um programa ainda é um desafio na área. Existem algumas propostas de métricas para tal,
como por exemplo, a complexidade ciclomática [1] e a complexidade aninhada[2],.com as quais pretendemos trabalhar.
Entre as ferramentas de análise de código que nos permitirão analisar a as métricas citas encontra-se o IDAPro. Nesse trabalho
desejamos criar um plugin para a ferramenta de análise de programas IDAPro que permita medir quão ofuscado está esse
programa. Através desse plugin, desenvolvedores poderão medir a relação de custo benefício do emprego de técnicas de ofuscação
pois a ferramenta não possui o mesmo.
Referências:
[1] T. J. McCabe, ?A complexity measure,? IEEE Transactions on Software engineering, vol. Vol SE-2, No 4, 1976.
[2] W. A. Harrison and K. I. Magel, ?A complexity measure based on nesting level.?
4419 – ESTUDO DA PARALELIZAÇÃO DE APLICAÇÃO COM OPENMP
Autor(es): Lenise Maria de Vasconcelos Rodrigues
Orientação: Gabriel Pereira da Silva
Resumo:
Na área de bioinformática, ainda há muito solo a ser explorado para que se alcance progresso e reconhecimento em tal no país.
Com a finalidade de maior imersão neste campo de pesquisa, eu e meu orientador iniciamos um projeto nesta área. O algoritmo a
ser focado neste trabalho é utilizado na área de alinhamento de sequência de DNA e, por isso, é imprescindível para grande parte
das pesquisas que se iniciam na área citada. Tal código já foi antes abordado por outro aluno, entretanto a parte em que nos
aprofundaremos ainda não foi explorada. Para que se obtenha a otimização do tempo de execução do programa, é necessária a
paralelização de tal algoritmo. A ideia é simples: fazer uso das técnicas de programação paralela que estão sendo a mim ensinadas
para particionar o processo em mais núcleos de processamento, ou seja, paralelizar um algoritmo, “dividindo” os cálculos e
unindo-os ao final de tal maneira que a integridade do resultado é mantida. Consequentemente, obtem-se de uma resposta eficaz,
satisfatória e mais rápida para que se quer no programa.
1220 – MAPEAMENTO DE UNIDADES POR GEOLOCALIZAÇÃO
Autor(es): Daniel Cardoso Assumpção
Orientação: Marcos Roberto da Silva Borges
Resumo:
Este projeto é destinado a ser uma aplicação Java contendo um mapa interativo para dispositivos com touchscreen. Esta aplicação
tem como funcionalidade a leitura de arquivos .xml (Extensible Markup Language), utilizando coordenadas geográficas para imprimir
na tela de modo eficiente o ponto de partida e o trajeto feito por este objeto, até o ponto atual. Toda a atualização dos pontos é feita
em tempo real, sendo possível adicioná-los ao clicar na tela ou simplesmente adicionando um arquivo .xml no diretório
correspondente. A principal utilização desta aplicação é saber com precisão a localização exata de veículos utilizados para situações
de emergências, podendo assim analisar o seu rendimento atual para melhor administrar os recursos disponíveis. Esta aplicação
será futuramente utilizada em conjunto com um aplicativo móvel,que enviará os dados diretamente ao servidor contendo
coordenadas geográficas, necessários para a eficácia operacional do programa.
3668 – MODELO COMPUTACIONAL EVOLUTIVO, ADAPTATIVO E PREDITIVO PARA AVALIAÇÃO DE FUNÇÕES COGNITIVAS.
Autor(es): Victor Ribeiro Pires
Orientação: Marcelo Ramos Soares, Carlo Emmanuel Tolla de Oliveira
Resumo:
A presente pesquisa propõe um modelo computacional baseado nos princípios da computação evolutiva, ou seja, que faça uso
de recursos como Inteligência Artificial e algoritmos genéticos, para a construção de um sistema adaptativo, evolutivo e preditivo que
visa mapear, identificar e classificar assinaturas cognitivas de maneira automatizada e eficiente.
Este projeto faz uso não somente de recursos tecnológicos ligados à computação, mas também se projeta sobre teorias e estudos
ligados à Neurociência Cognitiva. Sendo assim, em uma visão geral, a teoria PASS (Planejamento, Atenção, processamentos
Sucessivo e Simultâneo) de Alexander Romanov Luria, agregado à Estrutura do Intelecto definida por Guilford juntamente com a
variação na escala de níveis semióticos que foram estudados e fundamentados por Charles Sander Peirce. Estes pontos formam
uma matriz que norteiam os algoritmos que, por sua vez, regem o processo de captura e evolução do engenho considerando os
critérios definidos por um conjunto de crivos lógico matemáticos previamente estabelecidos.
Como produto desta pesquisa foi desenvolvido um jogo tridimensional com os desafios baseados nas teorias da neurociência
cognitiva a fim de realizar o processo de captura e identificação das assinaturas cognitivas bem como o processo evolutivo do
participante. Em seguida, tornando possível prever os futuros estados do indivíduo através da aplicação das Cadeias de Markov e,
conseqüentemente, tornando-o adaptativo ao estilo do jogador.
Bibliografia:
BECHARA, Antoine. Deciding Advantageously Before Knowing the Advantageous Strategy. Reports – 1997.
DAWKINS, Richard. The Blind Watchmaker. Editora Cia das Letras, 1986.
DAWKINS, Richard. O Gene egoísta. Universidade de Harvard Julho, 1976.
FRISTON, Karl J.. Principal component analysis learning algorithms a neurobiological analysis. MRC Cyclotron Unit, Hammersmith
Hospital, Londom W12 0HS, U.K.
LIORET, Alain. Blender AI : Artificial Intelligence in Blender. Université Paris 8, 2010.
LURIA, Alexander Romanov. Luria’s Theory of Brain Functioning: A model for Research in Cognitive Psychophysiology. Educational
Psychologist, 27(4), 493-511.
MITCHELL, Melanie. An introduction to Genetic Algorithms. A Bradford Book; Third Printing edition (February 6, 1998).
SANTAELLA, Lúcia; NOTH, Winfried. Imagem: Cognição, Semiótica, mídia. Editora Iluminuras 2010.
SANTAELLA, Lúcia e Noth, Winfried. Imagem: Cognição, semiótica e mídia. 1 ed. 5. reimpressão ? São Paulo: Iluminuras, 2008.
SHIMAMURA, Arthur P..Aesthetic Science Connecting Minds, Brains and Experience. Oxford University, S. E. (Eds.) (2012).
Marques, C. V. M. Níveis semióticos: graus de transparência iconográfica das representações. Rio de Janeiro: NCE/UFRJ, 2011. 2p.
4238 – THESEUS : UM ALGORITMO DE ROTEAMENTO PARA REDES DE SENSORES COMPARTILHADAS
Autor(es): Adriano Vianna Fonseca
Orientação: Claudio Miceli de Farias
Resumo:
Recentes avanços em micro sistemas eletromecânicos e tecnologias de comunicação sem fio permitiram a construção de sensores
de baixo custo e pequeno porte, que são capazes de detecção, processamento e comunicação através de conexões sem fio. Uma
Rede de Sensores sem Fio (RSSF) é uma rede composta de dezenas, centenas ou mesmo milhares destes dispositivos. Nos últimos
anos o campo de RSSFs tem observado diversas mudanças destacando-se o surgimento das Redes de Sensores Compartilhadas
(Shared sensor networks – RSC) as quais, ao invés de assumir um projeto tradicional específico de uma única aplicação alvo,
permite que a infraestrutura de sensoriamento e comunicação seja compartilhada por múltiplas aplicações que podem pertencer a
usuários diferentes, otimizando assim a utilização de recursos. Portanto, as RSCs podem ser vistas como infraestruturas integradas
de sistemas físicos e eletrônicos que podem servir a múltiplas aplicações. Entre as vantagens do uso de RSCs estão a redução
significativa nos custos de implantação da rede por permitir que múltiplas aplicações dividam os mesmos nós e infraestrutura de
comunicação e sensoriamento, melhorando a utilização global de recursos. Porém, apesar desse potencial, a adoção das RSCs
apresenta novos desafios (relacionados a funções básicas necessárias para a operação e a gerência das redes.
Um desses desafios é como adaptar algoritmos de roteamento para o cenário de RSC. Embora vários algoritmos de roteamento para
RSSF tenham sido propostos, a maioria deles ainda depende de identificadores únicos de nós que as aplicações precisam oferecer.
Para que as aplicações utilizem tais protocolos de roteamento, eles precisam de um outro protocolo de descoberta de recursos que
permita que os remetentes consultem a rede pelos identificadores dos nós aos quais eles querem se comunicar. Essa separação
entre recursos ou descoberta de serviços e descoberta de rotas resulta em tráfego desnecessário de controle da rede que poderia
drenar as baterias dos sensores mais rápido
Além disso os algoritmos de roteamento atuais para RSSF são indiferentes ao número de aplicações na rede enquanto que nas
RSC, múltiplas aplicações coexistem. Além disso, no ambiente de RSC podem ocorrer situações onde aplicações podem possuir
destinos comuns fazendo com que não seja necessário enviar uma mensagem para cada aplicação. Além do que, nesse mesmo
ambiente podem existir aplicações que possuem maior prioridade, ou em relação ao tempo de resposta da aplicação (por exemplo,
aplicações críticas) ou em relação à quantidade de recursos fornecidos à aplicação (por exemplo banda, número de nós utilizados),
se comparadas com as outras que estão compartilhando a RSC e devem, portanto ser enviadas em primeiro lugar.
Assim, no contexto de RSC os algoritmos de roteamento devem considerar o design da aplicação. Neste contexto, propomos o
´THESEUS`, um algoritmo de roteamento que lida com várias exigências de aplicações, a fim de reduzir o consumo de energia.