95 research outputs found
Context-Sensitive Analysis of x86 Obfuscated Executables
104 f. :il., tab.Ofuscação de código tem por finalidade dificultar a detecção de propriedades intrínsecas de um algoritmo através de alterações em sua sintaxe, entretanto preservando sua semântica. Desenvolvedores de software usam ofuscação de código para defender seus programas contra ataques de propriedade intelectual e para aumentar a segurança do código. Por outro lado, programadores maliciosos geralmente ofuscam seus códigos para esconder comportamento malicioso e para evitar detecção pelos anti-vírus. Nesta tese, é introduzido um método para realizar an alise com sensitividade ao contexto em binários com ofuscamento de chamada e retorno de procedimento. Para obter semântica equivalente, estes binários utilizam operações diretamente na pilha ao invés de instruções convencionais de chamada e retorno de procedimento. No estado da arte atual, a definição de sensitividade ao contexto está associada com operações de chamada e retorno de procedimento, assim, análises interprocedurais clássicas não são confiáveis para analisar binários cujas operações não podem ser determinadas. Uma nova definição de sensitividade ao contexto é introduzida, baseada no estado da pilha em qualquer instrução. Enquanto mudanças em contextos á chamada de procedimento são intrinsicamente relacionadas com transferência de controle, assim, podendo ser obtidas em termos de caminhos em um grafo de controle de fluxo interprocedural, o mesmo não é aplicável para mudanças em contextos à pilha. Um framework baseado em interpretação abstrata é desenvolvido para avaliar contexto baseado no estado da pilha e para derivar métodos baseado em contextos à chamada de procedimento para uso com contextos baseado no estado da pilha. O método proposto
não requer o uso explícito de instruções de chamada e retorno de procedimento, porém
depende do conhecimento de como o ponteiro da pilha é representado e manipulado. O método apresentado é utilizado para criar uma versão com sensitividade ao contexto de um algoritmo para detecção de ofuscamento de chamadas de Venable et al.. Resultados experimentais mostram que a versão com sensitividade ao contexto do algoritmo gera resultados mais precisos, como também, é computacionalmente mais eficiente do que a
versão sem sensitividade ao contexto.
____________________________________________________________________________________.ABSTRACT: A code obfuscation intends to confuse a program in order to make it more dificult to understand while preserving its functionality. Programs may be obfuscated to protect intellectual property and to increase security of code. Programs may also be obfuscated to hide malicious behavior and to evade detection by anti-virus scanners.
We introduce a method for context-sensitive analysis of binaries that may have obfuscated
procedure call and return operations. These binaries may use direct stack operators
instead of the native call and ret instructions to achieve equivalent behavior. Since definition of context-sensitivity and algorithms for context-sensitive analysis has thus far been based on the specific semantics associated to procedure call and return operations, classic interprocedural analyses cannot be used reliably for analyzing programs in which these operations cannot be discerned. A new notion of context-sensitivity is introduced that is based on the state of the stack at any instruction. While changes in calling-context are associated with transfer of control, and hence can be reasoned in terms of paths in
an interprocedural control ow graph (ICFG), the same is not true for changes in stackcontext. An abstract interpretation based framework is developed to reason about stackcontext and to derive analogues of call-strings based methods for the context-sensitive analysis using stack-context. This analysis requires the knowledge of how the stack, rather the stack pointer, is represented and on the knowledge of operators that manipulate the stack pointer. The method presented is used to create a context-sensitive version of Venable et al.'s
algorithm for detecting obfuscated calls. Experimental results show that the contextsensitive version of the algorithm generates more precise results and is also computationally more eficient than its context-insensitive counterpart
Simulation of exascale systems using time warp
A análise de sistemas computacionais exascale, quando feita por sua simulação exige enorme custo computacional e de tempo que inviabiliza sua análise em simuladores sequenciais dependendo do nível de detalhamento da simulação. À vista disso, a simulação distribuída torna propício a análise de tais sistemas complexos. Entretanto, a partilha da simulação em um sistema distribuído origina o problema da sincronização. Assim, este trabalho propõe a extensão do simulador iSPD (iconic Simulator of Parallel and Distributed Systems) usando o protocolo de sincronização otimista Time Warp viabilizando a simulação de sistemas exascale em tempo hábil.The analysis of exascale computing systems, when performed through simulation, requires large computational effort and time making its analysis unfeasible in sequential simulators depending on the level of detail. Using distributed simulation makes possible the analysis of such complex systems. Nonetheless, performing the simulation in a distributed system gives rise to synchronization problems. Thus, in this work we propose an extension of the simulator iSPD (iconic Simulator of Parallel and Distributed Systems) using the Time Warp optimistic synchronization protocol enabling the simulation of exascale systems in a timely manner.Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP)2022/15807-
Question generation using transformers for intelligent tutoring systems
O modelo tradicional de ensino possibilitou a formação de milhões de pessoas ao longo dos anos, mesmo com diversos pontos negativos em seu funcionamento. Buscando solucionar esses pontos, novas metodologias de ensino surgiram, focando na individualização do ensino, em que este se adaptaria às formas que o aluno aprende de maneira mais eficaz. Esta individualização, no entanto, traz problemas num ambiente tradicional, principalmente ligados à necessidade de acompanhamento individual do aluno. Para solucionar este problema, Sistemas Tutores Inteligentes podem ser uma solução, utilizando diversas técnicas que permitam compreender as necessidades do aluno e auxiliá-lo com uma menor supervisão dos professores. No entanto, de acordo com a abordagem utilizada, ainda existe a necessidade de desenvolver os conteúdos que devem ser apresentados aos alunos. Para tornar este processo menos trabalhoso, formas automatizadas de criação de conteúdo podem ser exploradas, entre as quais a utilização de técnicas de geração de questões para diminuir o trabalho presente na adaptação de conteúdo textual para perfis de aprendizado que possam se beneficiar deste tipo de conteúdo. Dentre estas técnicas, a Geração de Questões pode ser aplicada para fornecer atividades que possibilitam explorar e validar o nível de conhecimento do aluno. A forma como a Geração de Questões ocorre é muito variada, mas, analisando o cenário atual, a utilização de redes neurais, principalmente as do tipo \textit{transformers}, se mostraram a melhor abordagem. Estas redes possuem diversos mecanismos internos, destacando-se a utilização de cálculos de atenção para realizar a tarefa proposta, e são conhecidas pelo seu grande potencial na realização de tarefas que envolvam o processamento de linguagem natural e têm recebido grande atenção desde sua publicação, tendo diversos avanços em relação a sua arquitetura e formas de se realizar o treinamento destas redes. Para o cenário de sistemas tutores inteligentes foram propostas quatro arquiteturas diferentes, utilizando redes \textit{transformers} em sua composição, permitindo avaliar a que melhor se encaixaria a este ambiente. A validação destas arquiteturas é realizada através da avaliação de questões e respostas geradas pelas mesmas, utilizando textos de assuntos diferentes para simular a aplicação de diversas áreas de aprendizado. Formas automatizadas de avaliação de questões geradas são um desafio presente na literatura e, portanto, não é possível realizá-las, mas, com a definição de uma abordagem qualitativa, é possível validar a qualidade das 69 questões geradas e definir a arquitetura Multi-Modelo com Gerador de Resposta como a que melhor se encaixa ao cenário proposto, por obter a melhor concentração de resultados, com 18 questões ótimas, 27 boas, 13 regulares e apenas 11 ruins. Com isto conclui-se que a utilização desta arquitetura ligada a um Sistema Tutor Inteligente é possível, apesar de não eliminar totalmente a necessidade de interação do professor, mas permitindo uma grande facilitação no momento de desenvolvimento de atividades.The traditional education model has enabled the education of millions of people over the years, even with several negative aspects in its operation. In an effort to address these issues, new teaching methodologies have emerged, focusing on the individualization of education, where it would adapt to the ways in which the student learns more effectively. However, this individualization brings problems in a traditional environment, mainly related to the need for individual student supervision. To address this issue, Intelligent Tutoring Systems can be a solution, using various techniques that allow understanding the student's needs and assisting with less teacher supervision. However, depending on the approach used, there is still a need to develop the content that should be presented to the students. To make this process less labor-intensive, automated content creation methods can be explored, including the use of question generation techniques to reduce the work involved in adapting textual content to learning profiles that can benefit from this type of content. Among these techniques, Question Generation can be applied to provide activities that enable the exploration and validation of the student's level of knowledge. The way Question Generation occurs is quite varied, but, considering the current scenario, the use of neural networks, especially those of the "transformer" type, has proven to be the best approach. These networks have various internal mechanisms, with a particular emphasis on the use of attention calculations to perform the proposed task. They are known for their great potential in tasks involving natural language processing and have received significant attention since their publication, with several advancements in their architecture and training methods. In the context of intelligent tutoring systems, four different architectures using "transformer" networks have been proposed, allowing for the evaluation of which one would best fit this environment. The validation of these architectures is carried out through the assessment of questions and answers generated by them, using texts on different subjects to simulate the application of various learning areas. Automated assessment of generated questions is a challenge in the literature and, therefore, cannot be performed. However, with the definition of a qualitative approach, it is possible to validate the quality of the 69 questions generated and determine the Multi-Model with Response Generator architecture as the one that best fits the proposed scenario, as it achieves the best concentration of results, with 18 excellent questions, 27 good ones, 13 regular ones, and only 11 poor ones. With this, it is concluded that the use of this architecture in conjunction with an Intelligent Tutoring System is possible, although it does not completely eliminate the need for teacher interaction, but it greatly facilitates the development of activities
Graphical interface for Exascale Systems simulation
O crescimento de sistemas distribuídos de larga escala tem acelerado exponencialmente nos últimos anos, chegando até o nível de exascale. Por causa do custo de aluguel de sistemas desse tamanho, a simulação pode ser uma alternativa barata e eficiente para a avaliação de seu desempenho. Este trabalho tem como objetivo o estudo sobre sistemas exascale e o aperfeiçoamento do simulador iSPD (iconic Simulator of Parallel and Distributed Systems) de forma que seja possível a modelagem de sistemas de larga escala, assim como a visualização de resultados provenientes das simulações de forma coerente, permitindo assim que qualquer usuário sem conhecimento de programação consiga fazer uma simulação.The exponential growth of large-scale distributed systems in recent years, reaching the level of exascale, has been remarkable. Due to the high cost of renting such extensive systems, simulation emerges as a cost-effective and efficient alternative for evaluating their performance. This research aims to study exascale systems and enhance the iSPD (iconic Simulator of Parallel and Distributed Systems) simulator, enabling the modeling of large-scale systems and coherent visualization of simulation results. Consequently, this enhancement empowers non-programming users to perform simulations with ease and confidence.Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP)FAPESP: 2022/15806-
Modeling of tasks interactions using graphical interfaces applied in real-time systems
A análise de sistemas computacionais por meio de simulação depende fortemente de como as tarefas a serem executadas serão modeladas. Isso é ainda mais importante quando se fala de sistemas de tempo-real, em que tarefas devem ser atendidas dentro dos intervalos corretos e a análise por simulação evita perigos possivelmente presentes se executadas no ambiente real. Entretanto, simuladores de tarefas tipicamente as modelam como blocos independentes de carga de trabalho. Embora isso seja correto ou aceitável em muitas situações, isso não é sempre verdade em sistemas de tempo-real, pois normalmente aplicações desse tipo apresentam relações de dependência entre si. Em alguns simuladores isso é resolvido com a escrita do modelo de tarefa em alguma linguagem de modelagem específica, o que evidentemente dificulta o trabalho de simulação se comparado com abordagens gráficas. Desse modo, aqui se propõe uma abordagem que permita a modelagem de interações entre tarefas, em especial de tempo-real, por meio de interfaces visuais, sem comprometer a corretude do motor de simulação. A modelagem visual permite que o usuário se concentre no problema a ser avaliado e não na programação de seus detalhes, melhorando a eficiência desse processo. Na abordagem proposta se parte do conceito de árvores hierárquicas para estabelecer associações entre tarefas, elementos de processamento e recursos do sistema. As relações previstas entre tarefas incluem precedência, sincronismo, paralelismo e exclusão mútua. A validação dessa abordagem ocorre com sua aplicação no simulador de algoritmos de escalonamento RTsim, que já apresenta características interessantes de simulação, como interfaces para modelagem de escalonadores e de auxílio ao ensino. Assim como outros simuladores, o RTsim originariamente trata tarefas como blocos independentes de carga de trabalho, o que facilita a verificação dos efeitos desta abordagem na modelagem. Os resultados obtidos mostram que os procedimentos de modelagem de relações entre tarefas, na forma como definidos aqui, são aplicáveis em simuladores de eventos discretos, conforme avaliações de sua correção e usabilidade.Analysis of computing systems through simulation is strongly dependent of how tasks to be executed are modeled. This is even more important in real-time systems, where tasks must be executed before their deadlines, and their simulation avoid possible risks present in the real environment. However, simulators of such tasks usually model them as independent load blocks. Although this is correct for many systems, it is not always true for real-time systems, where applications usually have dependence relationships between tasks. In some simulators this is solved by enforcing the user to write the model in some modeling or simulation language, clearly making the simulation harder when compared to graphical approaches. Therefore, a graphical approach for task modeling is proposed. This approach is specially aimed to real-time tasks and does not compromise simulation accuracy. Graphical, that is visual, modeling allows for the user to focus on the problem to be evaluated and not in programming details of the system, improving the efficiency of this process. This proposal is based on the hierarchical tree concept to establish associations between tasks, processing elements and system resources. Chosen relationships include precedence, synchronism, parallelism and mutual exclusion. This proposal is validated through its application in a simulator of real-time scheduling algorithms named RTsim, which already offers interesting modeling/simulation characteristics such as interfaces to model schedulers and to teaching. RTsim, as others simulators do, models its tasks as independent blocks, what facilitates the verification of this approach effects to modeling. The results achieved with the tests show that procedures for modeling relationships between tasks, as defined in this dissertation, are applicable to discrete event simulators, according to the evaluations of this correctness and usability.Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP)FAPESP: Proc 2017/06737-
Automatic content adaptation applied in an interactive environment with individualized learning.
Sistemas tutores inteligentes têm se destacado como ferramenta de apoio ao ensino, principalmente pela sua adaptação às condições do usuário e cenário de aplicação. Esta adaptabilidade é possível pela utilização de inteligência artificial. Além disso, a tarefa de ensino é melhor conduzida aplicando-se técnicas como aprendizagem de máquina, processamento de linguagem natural e mineração de dados para adequar o sistema a partir de informações coletadas do usuário em sua utilização.
Apesar disso, essas técnicas ainda não são fortemente exploradas para geração de conteúdo em sistemas tutores. A maioria das aplicações envolve o controle das informações e a orientação dos estudos de seus usuários por meio de recomendação de conteúdo existente. A produção de conteúdo personalizado surge, nesse cenário, como alternativa ao processo de simples recomendação, permitindo que conteúdos apresentem diferentes formatos segundo a personalidade de cada usuário.
Este trabalho desenvolveu uma metodologia de adaptação de conteúdo para ensino, aplicando técnicas de processamento de texto. O processo de produção de conteúdo personalizado permitiu um avanço na forma de uso de sistemas tutores no ensino quanto a geração de conteúdo. Como resultado foi obtido um modelo, com ferramenta aplicada ao contexto, para adaptação automática de conteúdo construído com base em estilos de aprendizagem.Intelligent tutoring systems have stood out as a teaching support tool, mainly due to their ability to adapt to user conditions and application scenarios. This adaptability is possible through the use of artificial intelligence. Furthermore, the creation and adaptation of materials for the system is best conducted by applying techniques such as machine learning, natural language processing and data mining. Despite this, these techniques are not yet heavily explored for generating content in tutoring systems. Most applications involve controlling information and guiding their users' studies by recommending existing content. The production of personalized content appears, in this scenario, as an alternative to the simple recommendation process, allowing content to present different formats according to the personality of each user.
This work developed a methodology for adapting teaching content, applying natural language processing techniques. The process of producing personalized content allowed an advance in the way tutoring systems are used in teaching regarding content generation. As a result, a model was obtained, with a tool applied to the context, for automatic adaptation of content based on learning styles
A taxonomy of tolerance systems a failures in computer environments in open source cloud
Computação em nuvem oferece serviços de computação por meio da internet, utilizando máquinas virtuais. A garantia de elasticidade e pagamento sobre demanda são os principais motivos para atrair pessoas para aderirem a esta tecnologia. Infelizmente, existem diversos fatores que podem ocasionar erros que poderão gerar falha(s) no serviço, sendo que muitas vezes tais falhas acabam ocasionando perda de dados, por exemplo. Para evitar transtornos além da própria falha do serviço é importante que o suporte de tolerância a falhas em computação em nuvem seja robusto, garantindo que o ambiente se recupere na íntegra, de maneira ágil e sem a necessidade de interferência do cliente ou até do administrador. Um ambiente de tolerância a falhas envolve inúmeras variáveis, tanto entre causas da falha como técnicas de tratamento, fazendo com que uma falha possa ser suprida de N maneiras. Na literatura é possível encontrar muitos trabalhos relacionados a tolerância falhas em nuvem, o que causa grande dificuldade em identificar pontos que podem ser melhorados em relação à falhas no ambiente. Neste trabalho é apresentada uma sistematização das inúmeras propostas para tratamento de falhas em uma infraestrutura de computação em nuvem encontradas na literatura, criando uma classificação por origem da falha e forma de tratamento, na qual se aponta ainda pontos fortes e fracos de cada abordagem. Essa sistematização serviu de base para a construção de um web site com informações objetivas sobre as soluções identificadas, formando um protótipo de um ambiente de recomendação para administradores de ambientes de computação em nuvem.Cloud computing offers computer services over the internet using virtual machines. The guarantee of elasticity and payment on demand are the main reasons attracting people to join the technology. Unfortunately, there are a number of factors that may cause errors that could lead to service failure(s), with such failures often resulting in loss of data, for example. In order to avoid disruptions beyond the fault itself, it is important that the fault tolerance support is robust, ensuring that the environment is recovered in full, in an agile manner and without the need for customer, or even system’s manager, interference. A fault tolerant environment deals with a myriad of variables related to the failure’s cause or its treatment, implying that a failure can be managed through N approaches. One can find several papers describing approaches to solve cloud computing failures, which causes great difficulty in identifying points that can be improved in relation to the flaws in the environment. This work presents a systematic review of the methods for fault tolerance in a cloud computing infrastructure that are found in the literature, creating a classification based in the failure’s cause and the solution’s approach, including their strong and weak points. This systematization became the basis of a website containing objective information about the identified solutions, creating a prototype of a recommendation system for cloud computing managers
Virtual machine placement otimization
Computação em nuvem pode ser definida como uma tecnologia de oferta de serviços de computação por meio da Internet, utilizando virtualização de máquinas. A virtualização é um procedimento em que se estabelece um ambiente virtual para execução de tarefas consumindo parte dos recursos de uma máquina real. Desse modo, o desempenho de um sistema de computação em nuvem depende da eficiência da alocação de máquinas virtuais em máquinas reais, atendendo restrições e metas diversas. Neste trabalho se propõe uma nova abordagem para alocação de máquinas virtuais que tem como objetivo otimizar o número de máquinas físicas ativas e o tráfego na rede do sistema, tratando situações de conflito e balanço entre estes dois objetivos em sistemas heterogêneos.A solução proposta é baseada em uma modificação do algoritmo para particionamento de grafos de Kernighan-Lin para tratar os custos de comunicação, além de heurísticas para a minimização do número de máquinas físicas. O texto apresenta um levantamento bibliográfico a respeito de computação em nuvem, o estado da arte relacionado ao problema de alocação de máquinas virtuais, a implementação do algoritmo e sua avaliação. O algoritmo proposto é avaliado contra uma heurística convencional e um algoritmo do estado da arte em diversos cenários. Os resultados obtidos mostram que, apesar da dificuldade de conciliação entre estes dois objetivos em se tratando de sistemas heterogêneos, as soluções obtidos pela abordagem desenvolvida são de boa qualidade.Cloud computing is a term referring to a computing service technology offered through the Internet using machine virtualization, which is a process where a virtual environment is deployed to run an application, consuming part of the real machine resources. Therefore, the performance of a cloud computing system depends on the efficiency of the virtual machines placement in real machines, given certain goals and constraints. This work aims to present a new approach for virtual machine placement that optimizes the number of active physical machines and network traffic in its datacenter, as well as evaluate the conflict between these goals in heterogeneous systems. The proposed approach is based in a modification of the Kernighan-Lin algorithm for graph partitioning to deal with communication costs, and heuristics to minimize the number of physical machines.The text presents a conceptual review about cloud computing,the state of art of the virtual machine placement problem, the algorithm implementation and its evaluation. The proposed algorithm is evaluated against a conventional heuristic and a state of art algorithm in various scenarios. The results reveal the hardness to balance the two defined goals in heterogeneous systems as well as the quality of the solution achieved by the proposed approach.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES
Reengineering workload management at iSPD
A Computação de Alta Performance (HPC) é essencial para resolver problemas complexos no âmbito cientifico, médico ou comercial. As grades computacionais são uma ótima solução para a HPC, fazendo com que diversas ferramentas que simulam essa infraestrutura sejam de suma importância para o estudo da área, como o iconic Simulator of Parallel and Distributed Systems (iSPD). O iSPD permite que o usuário utilize da ferramenta sem conhecimento aprofundado de programação, através de sua interface icônica intuitiva de fácil uso. Dentro de todos os componentes presentes no iSPD, há a partição da gestão de cargas de trabalho, que utiliza de parâmetros probabilísticos ou pré-definidos (traces) para gerar estas cargas. Este trabalho foca na refatoração deste componente para uma linguagem nova, bem como a implementação de uma nova funcionalidade que permitirá a definição dos parâmetros das cargas de trabalho, o que fará com que testes e execuções em diferentes situações no simulador sejam mais fáceis de serem comparadas, facilitando e melhorando a experiência do usuário ao utilizar o iSPD.High Performance Computing (HPC) is essential for solving complex scientific, medical and commercial problems. Computational grids are a great solution for HPC, making several tools that simulate this infrastructure extremely important for studying the area, such as iSPD. iSPD allows users to use the tool without in-depth programming knowledge, thanks to its intuitive, easy-to-use iconic interface. Among all the components present in iSPD, there is the partition of workload management, which uses probabilistic parameters or predefined traces to generate these loads. This work focuses on refactoring this component into a new language, as well as implementing a new feature that will allow the parameters of the workloads to be defined, which will make it easier to compare tests and executions in different situations in the simulator, facilitating and improving the user experience when using iSPD
- …
