bytecode

HT Editor 2.0.15
HT Editor is a file editor/analyzer/viewer for executables. The goal is to combine the low-level functionality of a debugger and the usability of IDEs. more>>
HT Editor 2.0.15 offers you an all-in-one tool. This can be regarded as a file editor/analyzer/viewer for executables. The goal is to combine the low-level functionality of a debugger and the usability of IDEs.
We aim towards a perfect hex-editing ability and support of the most important file formats. PE, LE, NE, MZ, COFF, LZ and ELF executables are supported.
Major Features:
1. Supported file formats
- common object file format (COFF/XCOFF32) (header, image with code/data analyser)
- executable and linkable format (ELF) (header, section headers, program headers, symbol tables, image with code/data analyser (x86, IA-64, Alpha, PowerPC) and relocations)
- linear executables (LE) (header, VxD descriptor, object table, page table, image with code/data analyser (x86), auto-relocation layer)
- standard dos executables (MZ) (header, relocations, image (disassembly only) )
- new executables (NE) (header, segments, names, entrypoints, image with code/data analyser (x86), auto-relocation layer (pretty complete) )
- portable executables (PE32, PE64) (header, import section, delay-import section, export section, resources, image with code/data analyser (x86, IA-64, Alpha), preliminary support for .net executables)
- java class files (CLASS) (header, image with code/data analyser (java bytecode disassembler))
- Mach exe/link format (MachO) (header, image with code/data analyser (x86, PowerPC) )
- X-Box executable (XBE) (header, imports, image with code/data analyser (x86) )
- Flat (FLT) (header, image with data analyser (no disassembler yet))
- PowerPC executable format (PEF)
2. Code & Data Analyser
- finds branch sources and destinations recursively
- finds procedure entries
- creates labels based on this information
- creates xref information
- allows to interactively analyse unexplored code (press c)
- allows to create/rename/delete labels (press n)
- allows to create/edit comments (press #)
WareSeeker Editor
SmartEiffel 2.2
SmartEiffel is a mature and free compiler for the Eiffel object-oriented language more>>
Its emphasis on the collaborative aspects of software development, as communication and documentation, makes Eiffel a well suited language to large and very large projects.
At the same time, its simplicity and careful choice of features make it ideal for learning object-orientation concepts and developing analysis and design skills.
SmartEiffel is a research and free software project that provides the Eiffel community with:
- a mature and free compiler (GPL licence)
- an extensive and entirely object-oriented class library (MIT/X-11 licence)
- all those Eiffel-specific tools needed for a complete development environment, as an Eiffel-level symbolic debugger or a documentation tool
As the compiler translates Eiffel code either to C or Java bytecode, it can be used to write programs that run on virtually any platform for which an ANSI C compiler or a Java virtual machine exist. The compiler and all the accompanying tools are fully written in Eiffel, so they can be used in all these platforms.
SmartEiffel extends traditional Eiffel care about reliability and good software engineering practises with a specific concern about runtime performance and tiny memory footprint. You can get a measure of the success of the project on that area at The Computer Language Shootout Benchmarks.
The language
All the traditional Eiffel features are implemented in SmartEiffel:
- Design by Contract: including disciplined exceptions and optional assertion execution (on a by-cluster basis)
- Multiple inheritance and genericity
- Static typing
- Uniform type system
- Automatic garbage collection
- .ace configuration files
In addition, some more recently proposed improvements have also been incorporated:
- Tuples and agents
- Insertion (implementation-only inheritance)
- A plug-in mechanism for better interoperability with other languages
- Limited introspection capabilities
The language has entered a stability period where only minor changes will be added. All future modifications must prove to represent a real gain from the point of view of software engineering, and they can not spoil run-time efficiency.
Main features:
- Add features/limitations/changes here
Tcl/Tk 8.6
Tcl/Tk offers you a very effective misc programming tool which is designed to be easy to embed into other applications. more>>
Tcl/Tk 8.6 offers you a very effective misc programming tool which is designed to be easy to embed into other applications. As a language, it is much like UNIX shell languages. There is very little syntax and it is easy to learn. It is used to glue building blocks built in system programming languages like C, C++, and Java together.
These building blocks appear as commands, or verbs, in the script language. It is easy to embed Tcl into a legacy program so you can script the behavior of that program and add in other building blocks like a GUI interface. The Tcl interpreter is written in C and has been ported to almost every computer platform.
Major Features:
- Highlights of Tcl:
- Speed: 8.5 now runs 10% faster than 8.4 with bytecode improvements, object caching and reduced memory usage.
- Bignums: Tcl now supports arbitrary-precision integers, which improves math operations on large integers.
- Safer interps: Tcl's powerful safe interpreter mechanism now has improved control of time and command limits in slave interpreters.
- clock command: More robust implementation of command for specifying time, with significant l10n and i18n improvements.
- dict command: New data structure that allows access to data by value rather than a variable name, which is substantially faster.
- Additional improvements: Faster list search, new and improved mathematics procedures, anonymous procedures, new ways to package Tcl extensions, Tcl-level custom channel types, file and line location information for each command, and more.
- Highlights of Tk:
- New modern theming engine: New and complementary widgets that make use of platform-specific theming on Mac OS X and Windows to better fit in with those environments, and feature an improved look and feel under X11. (screenshots)
- New widgets: Part of the themed widget set, Tk now has core notebook, combobox, treeview and progressbar widgets.
- text widget: Smooth scrolling, widget peering, and improved procedures for counting and replacing text.
- Font rendering: Now uses anti-aliased text under X11, and a more modern text engine (ATSUI) on Mac OS X.
- Additional improvements: Window transparency, new fullscreen option for windows, enhancements to specific widgets and window layout, and more.
Javalyzer 1.4
Javalyzer is a java class file disassembler for Windows platforms, presented in a simple, attractive and intuitive graphical interface. It does not require java to run and is a must have utility for a more>>
NC Neko 1.6.0
A high-level dynamically typed programming language which can also be used as an embedded scripting language more>>
Neko is not only very easy to learn and use, but also has the flexibility of being able to extend the language with C libraries. You can even write generators from your own language to Neko and then use the Neko Runtime to compile, run, and access existing libraries.
If you need to add a scripting language to your application, Neko provides one of the best tradeoffs available between simplicity, extensibility and speed.
Neko allows the language designer to focus on design whilst reusing a fast and well constructed runtime, as well as existing libraries for accessing filesystem, network, databases, xml...
Neko has a compiler and virtual machine. The Virtual Machine is both very lightweight and extremely well optimised so that it can run very quickly. The VM can be easily embedded into any application and your libraries are directly accessable using the C foreign function interface.
The compiler converts a source .neko file into a bytecode .n file that can be executed with the Virtual Machine. Although the compiler is written in Neko itself, it is still very fast. You can use the compiler as standalone commandline executable separated from the VM, or as a Neko library to perform compile-and-run for interactive languages.
Neko comes with several libraries. One of these is mod_neko, which embeds the Neko Virtual Machine into the Apache web server, so you can use Neko to generate webpages
JavaGuard 1.0 Beta 4
A general purpose bytecode obfuscator, designed to fit effortlessly into your regular build and testing process more>>
NetBeans Profiler 5.5.1
NetBeans Profiler, with its tight integration into the NetBeans IDE work flow helps you build reliable and scalable applications more>>
Select from several of the most common tasks, such as standard CPU or memory profiling, or simple monitoring. The options are preset to default values by experts. Only the application-specific options are exposed to you. If you need to tune the tools nuts and bolts, switch to custom profiling for full flexibility.
The Profiler can be set up to report only on the methods in which you are interested. Profile the entire application, or a subset, under a realistic workload. Using dynamic bytecode instrumentation and additional algorithms, the NetBeans Profiler obtains runtime information on applications that are too large or complex for other profilers.
Main features:
- Low overhead profiling: you can profile just a subset of the application code - the rest of the code is not instrumented and thus runs at full speed. The profiled subset and the kind of profiling (CPU, memory, etc.) can be changed at any moment during run time.
- CPU Performance profiling: you can profile the entire application, or select a subset of its code to profile based on one or more root methods that you are free to choose. For example, you can set the doGet() method of your servlet as a root, and thus profile only the code of this method and other methods that it calls. The rest of the Java code, including most of the code of your Web/Application server, will run at full speed. Selective profiling based on chosen root methods appears to be a surprisingly good way to reduce the performance overhead and obtain accurate results for heavily multithreaded applications under realistic workload.
- Memory profiling: you can profile only object creation events, which imposes smaller overhead and allows you to detect problems with excessive object allocations. If this is not enough, you can turn on object liveness profiling, that records both object creation and reclamation events. It allows you to see the number, age, allocation paths, and other characteristics of objects currently in memory. It also can help you to detect memory leaks.
- Memory leak debugging: memory leaks are not uncommon with large Java applications. With most of the existing tools, it may take hours to make sure there is really a memory leak, and then to identify leaking objects. Our technology can pinpoint leaking objects for you immediately, based on the special pattern of allocations and reclamations (or lack thereof) that such objects typically demonstrate. You can then check where these objects were allocated, which in many cases is sufficient for identifying the root cause of the leak.
- Task-based profiling: profiling is a complex activity, which may require quite a bit of tuning, and thus learning the tools nuts and bolts. However, our task-based approach makes climbing the learning curve much easier, by first offering you several of the most common tasks, such as standard CPU or memory profiling, or simple monitoring. In these tasks, most of the options are preset to the most common values, and only the most important options are exposed to you. Once you learn more, you can switch to custom profiling, where you can get a full advantage of the flexibility of the advanced NetBeans Profiler technology.
- Threads profiling: you can observe threads & their activity during application execution. The threads profiling offers two views of the threads: "Threads timeline", showing threads activity side-by-side, and "Thread details" showing detailed information about one or more selected threads, including a list of all state changes in the threads life
- Processing collected data offline: you can save snapshots of collected results and process them offline.
System requirements:
- You must have NetBeans IDE installed first. Download it here
jclasslib 3.0
jclasslib bytecode viewer is a tool that visualizes all aspects of compiled Java class files and the contained bytecode more>> jclasslib bytecode viewer is a tool that visualizes all aspects of compiled Java class files and the contained bytecode. In addition, it contains a library that enables developers to read, modify and write Java class files and bytecode.<<less
haXe 1.16
Helps programers develop Websites and Web applications. more>>
The haXe compiler supports the following platforms:
- JavaScript : you can generate a single .js file from a set of haXe classes. You can access browser DHTML API as well as crossbrowser APIs such as Xml, Date or XmlHttpRequest... haXe is one of the best available languages to develop middle and large scale AJAX Web Applications.
- Flash : haXe can compile a SWF file for Flash Players 6 to 9. The language has great features and is at the same time both strict and dynamic. Using haXe increases productivity compared to ActionScript. All the Flash APIs are available unchanged in haXe so you will quickly get used to the language, and porting your existing code to haXe will be easy.
- Neko : haXe can compile bytecode that runs on the Neko Virtual Machine. An haXe program can then be run into the Apache web server (using mod_neko). This allows you to develop the server-side of your website using haXe. haXe has access to all Neko libraries such as filesystem , network, databases... and much more. Since it can easily be extended with additional libraries, haXe can be used to develop full-fledged desktop applications.
Main features:
- The haXe Syntax is similar to the one used in Java/JavaScript/ActionScript, so it?s very easy to learn and get used to haXe. haXe can also integrate easily in your favorite editor or IDE.
- The haXe Type System is strictly typed, enabling the compiler to detect most errors at compile-time. At the same time, it?s very different from classic strictly typed languages since you don?t have to write types everywhere in your program, thanks to type inference. It makes you feel like you are programming in a dynamically typed language while you are getting the security of a strictly typed language. The best of both worlds.
- The haXe Standard Library, including Date, XML, data structures... is specified to behave the same across all platforms. This enables you to share and reuse code logic between different platforms without needing to rewrite the same thing again and again.
- haXe is easily Extensible : you can add additional libraries and wrappers for platform-specific features. Thanks to conditional compilation you can have different implementation for a given API depending on the platform you want to compile to.
- haXe has a Remoting library that provides cross platform serialization and RPC, enabling you to directly call methods between platforms. For example calls may be made between the client and the server or between different client modules. Everything is handled transparently.
- haXe can be used to develop portable Desktop applications by using SWHX.
- haXe is Open Source software and has an active and enthusiastic Community which supports the language by developing content and additional libraries.
haXe is a Toolbox for the web developer. Since the compiler has support for several platforms you can choose the most suitable one to get your job done without having to learn and use a new language everytime. Although using haXe on both the client and server simplifies things thereby boosting productivity, haXe may be used exclusively on the client or the server. You can use haXe where it makes sense for you
System requirements:
- Neko 1.5.3 or higher
CSLint 1.02
Deadlock detector for CSharp multithreaded applications more>> This is deadlock detector for CSharp programs.
It builds lock graph for the application and searches loops in it.
CSLint is currently analyzing only monitors accessed through class fields (i.e lock(x) where x is
component of some class) and that value of such fields can never be changed.
To use it you should include in you PATH environment variable
cslintin directory. After it just run "CSLINT assembly-path".
This product is port of my Java verifier Jlint to CSharp.
Only most interesting part of this verifier (deadlock detection algorithm)
is currently ported.
CSLint is using ILReader library implemented by Lutz Roeder
(http://www.aisto.com/roeder/dotnet) for accessing the IL bytecode.
Unfortunately I didnt find a way to access debugging information (line numbers
and file source path for the class). So CSLint is not able to precisely point place
in the sources where deadlock happens. Right now it just reports class and method
names and name of locked monitor. If somebody knows how to solve the problem, will
be glad to get your suggestions.
Find new versions at my home page: www.garret.ru/~knizhnik
Please send me mails with questions, bug reports and suggestions at knizhnik@garret.ru<<less
Janino 2.5.15
Janino is a compiler that reads a Java expression, block, or source file, and generates Java bytecode that is loaded and executed directly. It is not intended to be a development tool, but an embedded more>>
Janino is a compiler that reads a Java expression, block, or source file, and generates Java bytecode that is loaded and executed directly. It is not intended to be a development tool, but an embedded compiler for run-time compilation purposes, such as expression evaluators or "server pages" engines like JSP.
Properties
The major design goal was to keep the compiler small and simple, while partially sacrificing completeness. I dont like the idea of carrying around huge libraries for simple applications. See Parser for the list of implemented and missing language features.
When do you need an efficient expression evaluator?
Say you build an e-commerce system, which computes the shipping cost for the items that the user put into his/her shopping cart. Because you dont know the merchants shipping cost model at implementation time, you could implement a set of shipping cost models that come to mind (flat charge, by weight, by number of items, ...) and select one of those at run-time.
In practice, you will most certainly find that the shipping cost models you implemented will rarely match what the merchant wants, so you must add custom models, which are merchant-specific. If the merchants model changes later, you must change your code, re-compile and re-distribute your software.
Because this is so unflexible, the shipping cost expression should be specified at run-time, not at compile-time. This implies that the expression must be scanned, parsed and evaluated at run-time, which is why you need an expression evaluator.
A simple expression evaluator would parse an expression and create a "syntax tree". The expression "a + b * c", for example, would compile into a "Sum" object whos first operand is parameter "a" and whos second operand is a "Product" object whos operands are parameters "b" and "c". Such a syntax tree can evaluated relatively quickly. However, the run-time performance is about a factor of 100 worse than that of native Java code.
Requirements: JDK 1.3.1 or above
Whats new in this version: Updated the overview page.
<<lessMicrosoft Java Virtual Machine (for Windows 95/98/ME/NT4) Build 3319
The Microsoft Virtual Machine (Microsoft VM) is a platform-independent software engine that runs Java applets, applications, and COM objects. The Microsoft VM is an interpreter and a runtime system. A more>>
Small 2.7.3
A quick and little scripting language, designed to extend applications (source) more>>
These features make Small a good scripting language for games, multimedia applications and embedded software (for which scripting is needed). Optimized P-code ("bytecode") interpreter in assembler (Windows & Linux); there is even a JIT for Windows and Windows CE. Full source is included.
Enhancements:
- Bug fixes, improved portability
Pawn 3.3.4097
An embedded scripting language, specifically designed to extend applications and embedded systems. Features include a small footprint, quick execution of the P-code and a good interface to native functions. Full source code is included. more>>
Pawn 3.3.4097 is a simple, typeless, 32-bit extension language with a C-like syntax. A pawn "source" program is compiled to a binary file for optimal execution speed.
The pawn compiler outputs P-code (or bytecode) that subsequently runs on an abstract machine. Execution speed, stability, simplicity and a small footprint were essential design criteria for both the language and the abstract machine.
Features include a small footprint, inherent support for automatons or "state machines", quick execution of the P-code and a good interface to "native" functions. These features make Pawn a good scripting language for games, multimedia applications and embedded software (for which scripting is needed). Optimized P-code ("bytecode") interpreter in assembler (Windows & Linux); there is even a JIT for Windows and Linux. Full source code is included. Pawn was formerly called the "Small" language.
Major Features:
- Language features
- Pawn is a deterministic language: it will run at the same speed every launch --there is no garbage collector that kicks in. The compiler can estimate the memory footprint for the script (unless the script contains a recursive procedure), and that memory footprint is fixed and stable as well.
- The pawn language is derived from C, and in some ways I have tried to "fix" syntaxes of what I see as counter-intuitive or error-prone in the C language. The cases in a "switch" statement are not fall through, for example.
- Pawn supports pass-by-value (like C) and pass-by-reference for function arguments.
- Pawn supports default function arguments, for arrays and simple variables. The arguments with a default value do not have to be at the end of the argument list.
- Pawn supports named parameters together with the conventional positional parameters.
- Pawn supports states and automatons (state machines) directly in the language, including state-local variables. Doing this in the compiler allows for flexibility and optimal performance, as well as having the compiler verify the constraints of the automaton.
- Pawn has no "struct"s, but it extends arrays so that it can mimic light-weight structures with arrays; as an example of those extensions, pawn supports array assignment and array indices can be "tag checked".
- Array sizes are deterministic, but array declaration is flexible. All dimensions in a multi-dimensional table may be variable size, for example.
- Pawn supports symbolic constants, conditional compilation and assertions, as well as text substitution via a kind of "pre-processor". The advantage of unifying the pre-processor with the compiler is that the "#if" knows about "enum"s (which is not the case in standard C: "#if" is a pre-processor command, "enum" is a C construct).
- If you want to say that something costs 3 Euro, you might write "printf("price 2003 ");" in C (where octal 200 is decimal 128, which is the position in the updated ANSI character set that the Euro symbol resides in). This works for 8-bit characters, but what about 16-bit/32-bit Unicode/UCS-4 characters? In pawn, the numeric character code is optionally explicitly terminated with a semicolon, just to avoid this problem. So in pawn, you would write: "printf("price 128;3 ");" (in pawn, numeric character codes are in decimal, rather than octal). This is just one example of those little and minor annoyances that exist in C/C++ and that pawn addresses.
- With packed and unpacked strings, pawn is able to bridge ASCII and Unicode subsystems. The compiler accepts source files in 8-bit ASCII and UTF-8. When running in ASCII mode, the compiler can translate extended ASCII characters to Unicode, based on codepage tables --this even works for MBCS codepages.
- Like in C++, variable declarations may occur at any position where a statement is valid, as well as in the first expression of a "for" statement. pawn supports block local static variables, as well as the common local and global variables.
- The integer division and modulus operators ("/" and "%") are well defined for negative operands, unlike C (ISO C89) and C++. The ISO C99 standard (finally) defines "truncated division" as standard; Java also uses truncated division. pawn uses "floored division", as defined by Donald Knuth and as is also used by Haskell and Python.
- Toolkit features
- Pawn comes with an implementation of an abstract machine in portable C. The abstract machine is a set of C functions that you can easily link to an application or function library. By compiling the source code to P-code for an abstract machine (or "virtual machine"), pawn is much faster than pure interpreters.
- Pawn is certainly among the fastest of the scripting languages, especially when using an abstract machine in hand-crafted optimized assembler or a JIT. These optimized abstract machines are not very portable, but versions for Windows, Linux (running on x86 architecture) and ARM7 processors exist.
- The abstract machine for pawn lends itself well for embedding: the abstract machine has low overhead and multiple abstract machines may run concurrently in a process; the interface to native functions (in C/C++) is flexible and also has low overhead; no components other than a few functions from the standard C library are required to build the abstract machine. The abstract machine does not require dynamic memory allocation (or grabage collection) or file I/O. The abstract machine itself is ROM-able and it requires very little RAM.
- For memory-constrained devices, pawn scripts can run directly from ROM. Alternatively, pawn has compiler support for "code overlays" where chunks of code are read from a storage (for example a SD/MMC card, or Flash ROM) on an as-needed basis.
- For a little language, the pawn compiler has a pretty good error system. I dare to compare it with commercial level C/C++ compilers with all warnings enabled.
- Although the debugger for the pawn abstract machine is primitive, it is an order of magnitude better than the "printf" style of debugging that is so common for little languages.
- For a little language, I would also say that pawn is nicely documented. Many people learn by example, so the July 2004 edition of the "Language Guide" contains 17 complete pawn programs that cover a variety of topics and 21 pawn code snippets that form complete functions. Various extension modules come with their own documentation with more example programs. The "Implementers Guide" contains 10 C/C++ code snippets (for embedding the abstract machine in your application) that build a complete program (with various options) when put together. pawn is also one of the very few scripting languages that documents the abstract machine: the pseudo-instructions, memory layout and pseudo-registers.
- Pawn is a 32-bit language (even when compiled with 16-bit DOS tools), you can also compile it as a 64-bit language. It runs on 16-bit platforms (either DOS or an "embedded" platform) without problem.
- The security model of pawn is based on the robusteness of the tools and on execution of the P-code in a "sandbox" environment. There is a caveat: native functions (provided by the host application or executing environment) can do anything; the implementer of such native functions should address the appropriate security issues.
Enhancements: Bug fixes and minor enhancements.
License:Freeware
Flasm 1.62
Disassemble your entire SWF including all the timelines and events. more>> Disassemble your entire SWF including all the timelines and events.
Flasm is a free command line assembler/disassembler of Flash ActionScript bytecode. It lets you make changes to any SWF. Flasm fully supports SWFs produced by Macromedia Flash 8 and earlier Flash versions.
Flasm was designed to disassemble your entire SWF including all the timelines and events.
Looking at disassembly, you learn how the Flash compiler works, which improves your ActionScript skills. You can also do some optimizations on the disassembled code by hand or adjust the code as you wish.
Flasm then applies your changes to the original SWF, replacing original actions. Its also possible to embed Flasm actions in your ActionScript, making optimizing of large projects more comfortable.
Flasm is not a decompiler. What you get is the human readable representation of SWF bytecodes, not ActionScript source. If youre looking for a decompiler, Flare may suit your needs. However, Flare cant alter the SWF.
Enhancements:
- Bug fixes, thanks to Petr Ovtchenkov et al.
- Page: 1 of 1
- 1
