The creation, transformation and analysis of bytecode is widespread. Nevertheless, several problems related to the reusability and comprehensibility of the results and tools exist. In particular, the results of tools ...
详细信息
The creation, transformation and analysis of bytecode is widespread. Nevertheless, several problems related to the reusability and comprehensibility of the results and tools exist. In particular, the results of tools for bytecode analysis are usually represented in proprietary tool dependent ways, which makes it hard to build more sophisticated analysis on top of the results generated by tools for lower-level analysis. Furthermore, intermediate results, such as e.g., the results of basic control flow and dataflow analysis, are usually not explicitly represented at all;though, required by many more sophisticated analysis. This lack of a common format, for the well structured representation of the (intermediate) results of code analysis, makes the creation of new tools or the integration of the results generated by different tools costly and ineffective. To solve the highlighted problems, we propose a higher-level XML-based representation of java bytecode which is designed as a common platform for the creation and transformation of bytecode and explicitly enables the integration of arbitrary information generated by different tools for static code analysis.
interpretation has been widely used for the analysis of object-oriented languages and, in particular, java source and bytecode. However, while most existing work deals with the problem of finding expressive abstract d...
详细信息
interpretation has been widely used for the analysis of object-oriented languages and, in particular, java source and bytecode. However, while most existing work deals with the problem of finding expressive abstract domains that track accurately the characteristics of a particular concrete property, the underlying fixpoint algorithms have received comparatively less attention. In fact, many existing (abstract interpretation based-) fixpoint algorithms rely on relatively inefficient techniques for solving inter-procedural call graphs or are specific and tied to particular analyses. We also argue that the design of an efficient fixpoint algorithm is pivotal to supporting the analysis of large programs. In this paper we introduce a novel algorithm for analysis of java bytecode which includes a number of optimizations in order to reduce the number of iterations. The algorithm is parametric - in the sense that it is independent of the abstract domain used and it can be applied to different domains as "plug-ins"-, multivariant, and flow-sensitive. Also, is based on a program transformation, prior to the analysis, that results in a highly uniform representation of all the features in the language and therefore simplifies analysis. Detailed descriptions of decompilation solutions are given and discussed with an example. We also provide some performance data from a preliminary implementation of the analysis.
The verification process of software is of growing importance as it helps to assure that an application is correctly built. However, an efficient verification method of implementation of an application should also rej...
详细信息
ISBN:
(纸本)9781538662205
The verification process of software is of growing importance as it helps to assure that an application is correctly built. However, an efficient verification method of implementation of an application should also reject cases of invalid data which provide valid results. Thus, we propose in this paper a constraint-based analysis technique to detect vulnerabilities in java applications at the executable level. We propose to exploit both the information contained in the bytecode structure of the application and the information given by the user specification. Indeed, we show how the user specifications can be used to deduce the invalid input state that put the testing method in valid post-state and then to detect some defections in the bytecode programs.
This paper presents the first Coq formalisation of the full java bytecode instruction set and its semantics. The set of instructions is organised in a hierarchy depending on how the instructions deal with the runtime ...
详细信息
ISBN:
(数字)9783030035921
ISBN:
(纸本)9783030035921;9783030035914
This paper presents the first Coq formalisation of the full java bytecode instruction set and its semantics. The set of instructions is organised in a hierarchy depending on how the instructions deal with the runtime structures of the java Virtual Machine such as threads, stacks, heap etc. The hierarchical nature of Coq modules neatly reinforces this view and facilitates the understanding of the java bytecode semantics. This approach makes it possible to both conduct verification of properties for programs and to prove metatheoretical results for the language. Based upon our formalisation experience, the deficiencies of the current informal bytecode language specification are discussed.
We present an automated approach to prove termination of java bytecode (JBC) programs by automatically transforming them to term rewrite systems (TRSs). In this way, the numerous techniques and tools developed for TRS...
详细信息
ISBN:
(纸本)9783939897187
We present an automated approach to prove termination of java bytecode (JBC) programs by automatically transforming them to term rewrite systems (TRSs). In this way, the numerous techniques and tools developed for TRS termination can now be used for imperative object-oriented languages like java, which can be compiled into JBC.
We present a new method, symbolic backward simulation, for detecting bugs in java bytecode programs. In order to find bugs comprehensively, the method determines conditions on the input side by tracing back from the t...
详细信息
ISBN:
(纸本)9781450363396
We present a new method, symbolic backward simulation, for detecting bugs in java bytecode programs. In order to find bugs comprehensively, the method determines conditions on the input side by tracing back from the tail of the program while performing reverse execution for each bytecode. Generally, reverse execution is difficult, especially for instructions of two-input-one-output operations and branches. Our method solves the problem symbolically with essentially fewer simulation cases than numerical testing and forward symbolic analysis. We also show simulation results which detected a branch condition error and a real number processing error.
Software piracy is one of the most serious issues confronted by software industry creating a huge number of dollars misfortune consistently to the product creating organizations. The worldwide income misfortune was as...
详细信息
ISBN:
(纸本)9789811088483;9789811088476
Software piracy is one of the most serious issues confronted by software industry creating a huge number of dollars misfortune consistently to the product creating organizations. The worldwide income misfortune was assessed to be more than $62.7 billion in the year 2013 because of the product theft. Software watermarking demoralizes theft, as a proof of procurement or origin, and likewise helps in following the wellspring of unlawful redistribution of duplicates of programming. In this paper, we have compared and analyzed the static and dynamic java bytecode watermarking algorithms. Firstly, each java jar file is watermarked using the watermarking algorithms, and after this, distortive attacks are applied to each watermarked program by applying obfuscation and optimizing. After studying the results obtained, we found that dynamic watermarking algorithms are slightly better than static watermarking algorithms.
Mutation testing is an approach to checking the robustness of test suites. The program code is slightly changed by mutations to inject bugs. A test suite is robust enough if it finds such bugs. Mutation testing tools ...
详细信息
ISBN:
(纸本)9798400705045
Mutation testing is an approach to checking the robustness of test suites. The program code is slightly changed by mutations to inject bugs. A test suite is robust enough if it finds such bugs. Mutation testing tools typically integrate sets of mutation operators such as, for example, swapping arithmetic operators;modern tools typically work with compiled code such as java bytecode. The mutations must be defined in such a way that the mutated program can still be loaded and executed. The results of mutation tests depend directly on the possible mutations. More advanced mutations and even domain-specific mutations can pose another challenge to the test suite. Since the classical, non-model-based mutation testing tools do not support the specification of advanced mutation operators well, we propose a model-driven approach where mutations of java bytecode can be flexibly defined by model transformation. Our approach also provides advanced mutation operators for modifying object-oriented structures, java-specific properties and API method calls, making it the only mutation testing tool for java bytecode that supports such mutations. To further improve the effectiveness of mutation testing, mutants are generated only for bytecode that is covered by tests. Our approach is implemented in the MMT tool. It has been evaluated against non-model-based mutation testing tools for its ability to generate mutants close to real bugs. The experiments make use of Defects4J, a well-established collection of real-world java projects with reproducible bugs.
We develop a framework of definitional abstract interpreters for java bytecode in Sturdy. Specifically, we provide a generic interpreter that abstractly executes java bytecode but resorts to configurable analysis comp...
详细信息
ISBN:
(纸本)9798400711114
We develop a framework of definitional abstract interpreters for java bytecode in Sturdy. Specifically, we provide a generic interpreter that abstractly executes java bytecode but resorts to configurable analysis components for abstracting values and effects. From this, we can derive a concrete reference semantics for java bytecode and sound abstract interpreters.
Mutation testing is an approach to check the robustness of test suites. The program code is slightly changed by mutations to inject errors. A test suite is robust enough if it finds such errors. Tools for mutation tes...
详细信息
ISBN:
(纸本)9798350324983
Mutation testing is an approach to check the robustness of test suites. The program code is slightly changed by mutations to inject errors. A test suite is robust enough if it finds such errors. Tools for mutation testing usually integrate sets of mutation operators such as, for example, swapping arithmetic operators;modern tools typically work with compiled code such as java bytecode. In this case, the mutations must be defined in such a way that the mutated program still can be loaded and executed. The results of mutation tests depend directly on the possible mutations. More advanced mutations and even domain-specific mutations can pose another challenge to the test suite. Since extending the classical approaches to more complex mutations is not well supported and is difficult, we propose a model-driven approach where mutations of java bytecode can be flexibly defined by model transformation. The corresponding tool called MMT has been extended with advanced mutation operators for modifying object-oriented structures, java-specific properties and method calls of APIs, making it the only mutation testing tool for java bytecode that supports such mutations.
暂无评论