Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Eliminating go to's while preserving program structure
Journal of the ACM (JACM)
A Control-Flow Normalization Algorithm and its Complexity
IEEE Transactions on Software Engineering
An Algorithm for Structuring Flowgraphs
Journal of the ACM (JACM)
On the capabilities of while, repeat, and exit statements
Communications of the ACM
Conversion of control dependence to data dependence
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Decompilation of Control Structures by Means of Graph Transformations
CAAP '85 Proceedings of the International Joint Conference on Theory and Practice of Software Development (TAPSOFT), Volume 1: Colloquium on Trees in Algebra and Programming: Mathematical Foundations of Software Development
Manufacturing cheap, resilient, and stealthy opaque constructs
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software watermarking: models and dynamic embeddings
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Watermarking, tamper-proffing, and obfuscation: tools for software protection
IEEE Transactions on Software Engineering
Decompiling Java Bytecode: Problems, Traps and Pitfalls
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Towards a Practical Secure Framework for Mobile Code Commerce
ISW '00 Proceedings of the Third International Workshop on Information Security
A case for virtual distributed objects
Virtual shared memory for distributed architectures
A symmetric approach to compilation and decompilation
The essence of computation
Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables
IEEE Transactions on Software Engineering
On instrumenting obfuscated java bytecode with aspects
Proceedings of the 2006 international workshop on Software engineering for secure systems
Deducing similarities in Java sources from bytecodes
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Dynamic graph-based software fingerprinting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient local type inference
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Reverse engineering java card applets using power analysis
WISTP'07 Proceedings of the 1st IFIP TC6 /WG8.8 /WG11.2 international conference on Information security theory and practices: smart cards, mobile and ubiquitous computing systems
A study of android application security
SEC'11 Proceedings of the 20th USENIX conference on Security
Emscripten: an LLVM-to-JavaScript compiler
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Retargeting Android applications to Java bytecode
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
AppInk: watermarking android apps for repackaging deterrence
Proceedings of the 8th ACM SIGSAC symposium on Information, computer and communications security
Hi-index | 0.00 |
This paper presents our technique for automatically decompiling Java bytecode into Java source. Our technique reconstructs source-level expressions from bytecode, and reconstructs readable, high-level control statements from primitive goto-like branches. Fewer than a dozen simple code-rewriting rules reconstruct the high-level statements.