There exist several obfuscation tools for preventing Java bytecode from being decompiled. Most of these tools simply ... the names of the identifiers stored in a bytecode by substituting the identifiers with meaningless names. However, ... propose several advanced obfuscation techniques that make Java bytecode impossible to recompile or make the decompiled program ... additional benefit is that the size of the bytecode is reduced because fewer and shorter identifier names ... program while preserving the original behaviors of the bytecode. Thus, the decompiled program would have to be ...
Tópico(s): Software Testing and Debugging Techniques
2003 - Elsevier BV | Journal of Systems and Software
Jerome Miecznikowski, Laurie Hendren,
Java virtual machines execute Java bytecode instructions. Since this bytecode is a higher level representation than traditional object code, it is possible to decompile it back to ... and the conventional wisdom is that decompiling Java bytecode is relatively simple. This may be true when decompiling bytecode produced directly from a specific compiler, most often ... traps and pitfalls when decompiling arbitrary verifiable Java bytecode. Such bytecode could be produced by other Java compilers, Java bytecode optimizers or Java bytecode obfuscators. Java bytecode can ...
Tópico(s): Distributed systems and fault tolerance
2002 - Springer Science+Business Media | Lecture notes in computer science
Stephen N. Freund, John C. Mitchell,
... a Java language program is compiled to Java bytecode. This bytecode may be sent across the network to another ... then executed by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode verifier that performs a number of consistency checks ... for system security. In order to analyze existing bytecode verifiers and to understand the properties that should ... develop a precise specification of statically correct Java bytecode, in the form of a type system. Our ...
Tópico(s): Distributed systems and fault tolerance
1999 - Association for Computing Machinery | ACM Transactions on Programming Languages and Systems
Stephen N. Freund, John C. Mitchell,
... a Java language program is compiled to Java bytecode. This bytecode may be sent across the network to another ... then interpreted by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode verifier that performs a number of consistency checks ... for system security. In order to analyze existing bytecode verifiers and to understand the properties that should ... develop a precise specification of statically-correct Java bytecode, in the form of a type system. Our ...
Tópico(s): Distributed systems and fault tolerance
1998 - Association for Computing Machinery | ACM SIGPLAN Notices
Joseph Hummel, Ana Azevedo, David J. Kolson, Alexandru Nicolau,
... p. 1003-1016 Research Article Annotating the Java bytecodes in support of optimization Joseph Hummel, Joseph Hummel ... alike. The difficulty, however, lies with the Java bytecodes. Their model of a simplistic, platform-independent stack ... being proposed to increase the speed of Java bytecode programs, including: (i) on-the-fly compilation to ... compilation); (ii) traditional ('ahead-of-time') compilation of bytecodes to some higher-level intermediate form and then to native code; and (iii) translation of bytecodes to a higher-level language and then use ...
Tópico(s): Real-Time Systems Scheduling
1997 - Wiley | Concurrency Practice and Experience
Abhishek Bichhawat, Vineet Rajani, Deepak Garg, Christian Hammer,
... IFC mechanism works at the level of JavaScript bytecode and hence leverages years of industrial effort on optimizing both the source to bytecode compiler and the bytecode interpreter. We track both explicit and implicit flows and observe only moderate overhead. Working with bytecode results in new challenges including the extensive use of unstructured control flow in bytecode (which complicates lowering of program context taints), unstructured ... we address these challenges, formally model the JavaScript bytecode semantics and our instrumentation, prove the standard property ...
Tópico(s): Web Application Security Vulnerabilities
2014 - Springer Science+Business Media | Lecture notes in computer science
... Our technique proceeds by backwards traversal of the bytecode trace produced by an input I in a ... use results from data compression to compactly represent bytecode traces. The major space savings in our method ... data addresses used as operands by memory reference bytecodes, and (b) instruction addresses used as operands by control transfer bytecodes. We show how dynamic slicing algorithms can directly traverse our compact bytecode traces without resorting to costly decompression. We also ... in the article. The slices computed at the bytecode level are translated back by our tool to ...
Tópico(s): Advanced Malware Detection Techniques
2008 - Association for Computing Machinery | ACM Transactions on Programming Languages and Systems
Jonathan Lambert, James F. Power,
... accurate measurement of the execution time of Java bytecode is one factor that is important in order ... and solutions for the accurate timing of Java bytecode. We also identify trends across the execution times recorded for all imperative Java bytecodes. These trends would suggest that knowing the execution times of a small subset of the Java bytecode instructions would be sufficient to model the execution ... for achieving high precision timing results for Java bytecode using low precision timers and then present a ...
Tópico(s): Embedded Systems Design Techniques
2008 - Elsevier BV | Electronic Notes in Theoretical Computer Science
Fabian Yves Bannwart, Péter Müller,
Program logics for bytecode languages such as Java bytecode or the .NET CIL can be used to apply Proof-Carrying Code concepts to bytecode programs and to verify correctness properties of bytecode programs. This paper presents a Hoare-style logic for a sequential bytecode kernel language similar to Java bytecode and CIL. The logic handles object-oriented features ...
Tópico(s): Formal Methods in Verification
2005 - Elsevier BV | Electronic Notes in Theoretical Computer Science
Raja Vallée-Rai, Étienne Gagnon, Laurie Hendren, Patrick Lam, Patrice Pominville, Vijay Sundaresan,
... paper presents Soot, a framework for optimizing Java™ bytecode. The framework is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of Java's stack-based bytecode; Jimple, a typed three-address intermediate representation suitable ... optimization is to first convert the stack-based bytecode into Jimple, a three-address form more amenable ... and then convert the optimized Jimple back to bytecode.In order to demonstrate that our approach is ...
Tópico(s): Security and Verification in Computing
2000 - Springer Science+Business Media | Lecture notes in computer science
... mobile JVML code is not always trusted, a bytecode verifier enforces static constraints that prevent various dynamic errors. Given the importance of the bytecode verifier for security, its current descriptions are inadequate. ... article proposes using typing rules to describe the bytecode verifier because they are more precise than prose, ... are a major source of complexity for the bytecode verifier because they are not obviously last-in/ ... Our type system constitutes a sound basis for bytecode verification and a rational reconstruction of a delicate ...
Tópico(s): Formal Methods in Verification
1999 - Association for Computing Machinery | ACM Transactions on Programming Languages and Systems
... Translation essentially converts Java virtual machine instructions (called bytecodes) into corresponding machine-specific binary instructions. Bytecode is a single image of a program that ... of Java processors was the creation of the bytecode execution engine itself, called the picoJava core. PicoJava directly executes Java bytecode instructions and provides hardware support for other essential functions of the JVM. Executing bytecode instructions in hardware eliminates the need for dynamic translation, thus extending the useful range of Java bytecode programs to embedded environments. By the end of ...
Tópico(s): Real-Time Systems Scheduling
1998 - IEEE Computer Society | Computer
Nicolas Harrand, César Soto-Valero, Martin Monperrus, Benoît Baudry,
During compilation from Java source code to bytecode, some information is irreversibly lost. In other words, compilation and decompilation of Java code is not symmetric. Consequently, decompilation, which aims at producing source code from bytecode, relies on strategies to reconstruct the information that ... we hypothesize that the diverse ways in which bytecode can be decompiled has a direct impact on ... is able to correctly handle the variety of bytecode structures coming from real-world programs. The highest ...
Tópico(s): Logic, programming, and type systems
2020 - Elsevier BV | Journal of Systems and Software
Jianjun Huang, Songming Han, Wei You, Wenchang Shi, Bin Liang, Jingzheng Wu, Yanjun Wu,
... obstructed by two issues, i.e., diversity of bytecode generation resulting from the rapid evolution of compilers ... logics. To address the problems, we propose contract bytecode-oriented normalization and slicing techniques to augment bytecode matching. Specifically, we conduct data- and instruction-level normalizations to uniform the bytecode generated by different compilers, and enforce contract-specific ... by tracking data- and control-flows with simulated bytecode executions to prune the noise code as far ...
Tópico(s): Blockchain Technology Applications and Security
2021 - Institute of Electrical and Electronics Engineers | IEEE Transactions on Information Forensics and Security
Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla, Damiano Zanardini,
... to the automatic cost analysis of object-oriented bytecode programs. In languages such as Java and C#, analyzing bytecode has a much wider application area than analyzing ... stack, and the heap. Our method takes a bytecode program and a cost model specifying the resource ... We report on COSTA, an implementation for Java bytecode which can obtain upper bounds on cost for ... other object-oriented imperative languages, not necessarily in bytecode form.
Tópico(s): Formal Methods in Verification
2011 - Elsevier BV | Theoretical Computer Science
Ramesh Radhakrishnan, N. Vijaykrishnan, Lizy K. John, Anand Sivasubramaniam, J. Rubio, J. Sabarinathan,
... and its efficiency in executing the portable Java bytecodes is crucial for the success of this technology. ... important execution characteristics of Java applications from a bytecode perspective. It then explores the potential of a ... using applications from the SPECjvm98 benchmarks. At the bytecode level, it is observed that less than 5 out of the 256 bytecodes constitute 90 percent of the dynamic bytecode stream. Method sizes fall into a trinodal distribution with peak of 1, 9, and 26 bytecodes across all benchmarks. The architectural issues explored in ...
Tópico(s): Distributed systems and fault tolerance
2001 - Institute of Electrical and Electronics Engineers | IEEE Transactions on Computers
Di Zhu, Yue Feng, Jianmin Pang, Xin Zhou, Wenjie Han, Fudong Liu,
... not publish the source code, but only the bytecode. Based on the research of bytecode similarity of smart contract, smart contract upgrade, vulnerability ... analysis can be carried out. The difficulty of bytecode similarity research is that different compilation versions and optimization options lead to the diversification of bytecode of the same source code. This paper presents ... methods to measure the similarity of smart contract bytecode. Starting from the opcode of smart contract, a ... show that our solution can effectively reduce the bytecode difference caused by optimization options and compiler version, ...
Tópico(s): IoT and Edge/Fog Computing
2022 - Multidisciplinary Digital Publishing Institute | Electronics
Gaowei Bian, Ken Nakayama, Yoshitake Kobayashi, Mamoru Maekawa,
... be transmitted and executed on another host in bytecode format, thus the sensitive information of the host ... are inadequate to address the information flow in bytecode and the type systems verification method is imprecise. This paper presents a method to disclose java bytecode information flow by dependence analysis, in which the ... information dependence relationship among the variables in the bytecode then is verifying the security based on security ... prototype tool has been developed, by which the bytecode information flow of object or class files can ...
Tópico(s): Distributed systems and fault tolerance
2007 - | International journal of network security
Lukáš Marek, Yudi Zheng, Danilo Ansaloni, Aibek Sarimbekov, Walter Binder, Petr Tůma, Zhengwei Qi,
... frameworks (e.g., aspect weavers) are based on bytecode instrumentation techniques. While there are many low-level bytecode manipulation libraries that support the development of such ... necessary infrastructure for load-time instrumentation with complete bytecode coverage to ensure that each method with a bytecode representation gets instrumented. In this paper we give ... a domain-specific aspect language and framework for bytecode instrumentation that reconciles high expressiveness of the language, ...
Tópico(s): Service-Oriented Architecture and Web Services
2012 - Springer Science+Business Media | Lecture notes in computer science
Dongjin Yu, Jiazha Yang, Xin Chen, Jie Chen,
... source code, while only a few employ the bytecode to detect code clones. In this paper, we introduce an approach based on Java bytecode, which mainly contains the steps of bytecode sequence alignment and similarity score comparison. In particular, we apply the Smith-Waterman algorithm to align bytecode sequences for precise matching. Moreover, we separately consider ...
Tópico(s): Software Reliability and Analysis Research
2019 - Institute of Electrical and Electronics Engineers | IEEE Access
Elvira Albert, Pablo Gordillo, Benjamin Livshits, Albert Rubio, Ilya Sergey,
Analyzing Ethereum bytecode, rather than the source code from which it was generated, is a necessity when: (1) the source code ... available (e.g., the blockchain only stores the bytecode), (2) the information to be gathered in the analysis is only visible at the level of bytecode (e.g., gas consumption is specified at the ... paper presents EthIR, a framework for analyzing Ethereum bytecode, which relies on (an extension of) Oyente, a ... CFGs, a rule-based representation (RBR) of the bytecode that enables the application of (existing) high-level ...
Tópico(s): Data Stream Mining Techniques
2018 - Springer Science+Business Media | Lecture notes in computer science
Jérôme Vouillon, Vincent Balat,
... design and implementation of a compiler from OCaml bytecode to JavaScript. The compiler first translates the bytecode into a static single‐assignment intermediate representation on ... performed, before generating JavaScript. We believe that taking bytecode as an input instead of a high‐level ... machines are the target of several languages. A bytecode to JavaScript compiler would make it possible to ...
Tópico(s): Web Data Mining and Analysis
2013 - Wiley | Software Practice and Experience
We describe Fertile Darwinian Bytecode Harvester (FINCH), a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Our approach is based upon the notion of ... flow-based compatibility checks on source and destination bytecode sections. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals ...
Tópico(s): Viral Infectious Diseases and Gene Expression in Insects
2011 - Institute of Electrical and Electronics Engineers | IEEE Transactions on Evolutionary Computation
Guillaume Barbu, Hugues Thiebeauld, Vincent Guerin,
... ill-formed applications which assume that the application bytecode is not verified. This assumption remained realistic as long as the bytecode verifier was commonly executed off-card and could ... Java Card 3 Connected Edition context where the bytecode verification is necessarily performed on-card. Therefore Java ... be introduced and executed despite the on-card bytecode verifier. The second example leads to the modification ... already installed on the card into any malicious bytecode. Finally we successfully mount these attacks on a ...
Tópico(s): Advanced Malware Detection Techniques
2010 - Springer Science+Business Media | Lecture notes in computer science
Fausto Spoto, Fred Mesnard, Étienne Payet,
... we present our termination analyzer for sequential Java bytecode, based on a program property called path-length . ... respect to a reference denotational semantics of the bytecode. We show that a constraint logic program P ... of the path-length analysis of a Java bytecode program P and formally prove that if P ... is the first existing termination analyzer for Java bytecode dealing with any kind of data structures dynamically ...
Tópico(s): Advanced Software Engineering Methodologies
2010 - Association for Computing Machinery | ACM Transactions on Programming Languages and Systems
Elvira Albert, Puri Arenas, Michael Codish, Samir Genaim, Germán Puebla, Damiano Zanardini,
... present an automatic termination analysis for sequential Java Bytecode programs. Such analysis presents all of the challenges ... introduced by object-oriented languages. Interestingly, given a bytecode program, we produce a constraint logic program, CLP, whose termination entails termination of the bytecode program. This allows applying the large body of ... termination of CLP programs to termination of Java bytecode. A prototype analyzer is described and initial experimentation ...
Tópico(s): Formal Methods in Verification
2008 - Springer Science+Business Media | Lecture notes in computer science

Auri Marcelo Rizzo Vincenzi, Márcio Eduardo Delamaro, José Carlos Maldonado, W. Eric Wong,
... and data‐flow testing criteria for the Java bytecode language. Six testing criteria are considered for the ... on third‐party Java components. In addition, the bytecode can be seen as an intermediate language, so ... the original high‐level language that generated the bytecode. To support the application of the testing criteria, we have implemented a tool named JaBUTi (Java Bytecode Understanding and Testing). JaBUTi is used to illustrate ...
Tópico(s): Software Reliability and Analysis Research
2006 - Wiley | Software Practice and Experience
... information flow analysis for full (mono-threaded) Java bytecode. We base our analysis on the transformation of the Java bytecode into a control-flow graph of basic blocks ... makes explicit the complex features of the Java bytecode. We represent information flows through Boolean functions and ... it is the first one for full Java bytecode.
Tópico(s): Distributed systems and fault tolerance
2005 - Springer Science+Business Media | Lecture notes in computer science
Todd B. Knoblock, Jakob Rehof,
... typed, but the translation from Java source to bytecode omits much of the type information originally contained ... for reconstructing strongly typed programs from incompletely typed bytecode by inferring types for local variables. There are ... in the original type hierarchy to type a bytecode program. Subtype completion is a technique for adding ... make type elaboration possible for all verifiable Java bytecode. Type elaboration with subtype completion has been implemented ...
Tópico(s): Software Reliability and Analysis Research
2001 - Association for Computing Machinery | ACM Transactions on Programming Languages and Systems
Iffat H. Kazi, Howard H. Chen, Berdenia Stanley, David J. Lilja,
... of programs. A Java interpreter dynamically executes Java bytecodes, which comprise the instruction set of the Java ... including Just-In-Time (JIT) compilers that compile bytecode into native processor instructions on the fly; direct ... into the target processor's native language; and bytecode-to-source translators that generate either native code ... an intermediate language, such as C, from the bytecodes. Additional techniques, including bytecode optimization, dynamic compilation, and executing Java programs in ...
Tópico(s): Distributed and Parallel Computing Systems
2000 - Association for Computing Machinery | ACM Computing Surveys