Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
IDA pro ,x64Dbg, olldbg & windbg are used to Reverse Engineering purposes(as a Dissembler) and debugging.
What are the main differences among them? when to use each?
It's quite hard to give an answer that is not opinion-based. Trying to stay factual:
OllyDbg and x64Dbg falls roughly under the same category. Their main strength is debugging without symbolic information (although they can also do debugging with symbolic information). OllyDbg (closed source) hasn't been maintained since a long time now and is limited to x86 32-bit. On the other hand x64Dbg is actively maintained,open source and can handle x86 and x64. Both supports plugins.
Windbg is mainly a symbolic debugger (although obviously it works without any symbols). Being maintained by Microsoft it is very powerful when symbols are available. It supports plugins (in C or C++), scripting (it has its own scripting language but it also supports officially JavaScript and a third-party python scripts loader) .NET debugging and can do Kernel debugging (in this aspect it is the de facto Kernel debugger on Windows systems). In its latest version it also supports TTD (Time Travel Debugging).
IDA main strength is that it's an interactive disassembler. You can "interrogate" the binary (more precisely, the database generated from the binary) in many ways from python scripts. It also supports debugging by itself or through other engines (gdb or windbg engines for example).
Notable other professional dissassembler/debuggers are Binary Ninja (not free) and Ghidra (open source)
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Both Dart and NaCl are OS projects. I wonder how hard would it be to provide a NaCl plugin which could execute Dart code on any Chrome browser?!
The Pepper C/C++ API looks much better compared to wrapped JavaScript API.
Nacl has several security restrictions that make it very hard (but not impossible) to execute Jitting VMs in it. It also doesn't have nice access to DOM, which would severely limit the usability of the VM. You probably want this approach only for C++ programs that use Dart as its scripting engine (for example in a game).
There seems to be a project that tries to port v8: nacl-v8
Their readme describes some of the problems:
NaCl does not allow data in code segments.
Executable memory must be provided from a special region marked by NaCl for dynamically-loaded code. I'm guessing that Nacl wants to do some checks on it, which would probably slow down execution.
All code insertion/deletion/self-modification must be performed via NaCl service runtime calls.
Code emitted by the VM must comply with NaCl security constraints (e.g. sandboxing of indirect jumps, instruction alignment).
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 8 years ago.
Improve this question
Did the first operating system programmed in binary?
I'm just curious because It looks like that it should be programmed in binary. But if it's really binary , how would that first programmers know what to write the programs? Isn't he in total blindness?
Also , can you give me the example of command in binary?(First operating system's function if possible).
The very first computers (like e.g. Eniac) did not have any operating system. People programmed them in e.g. binary! Then some guy decided to develop a monitor (which later was called, and evolved in, an operating system).
Even in the 1960s some computers (like the IBM 1620) where able to start without any code (at that time they had no firmware and no ROM): I am old enough to have played, as a teenager, on one (in a museum): you was able, by setting special switches, to type the few machine instructions (in BCD) to load the rest of the system (on punched tapes).
It is a classic bootstrapping problem. J.Pitrat's blog on bootstrapping artificial intelligence should have useful references.
Read about history of computing software & history of operating systems.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Has anyone tried OpenFin? What are its pros and cons?
In terms of Development effort, stability, development support, maintenance, performance, memory footprint.
I am part of the OpenFin Dev team and I have to say in terms of Development effort we are always improving our development tools, and have a large collection of example code that tackles some of the popular scenarios, we also have a yeoman generator that makes it super easy to get started: https://github.com/openfin/generator-openfin
In regards of stability, we ship a mayor release twice a year and you can chose to stick to a particular version at an application level. each deployed application can choose a particular version and it only takes a change in the server to have the clients updated on next app start.
Development support is highly active and we will work with you to resolve any issues. as I mentioned above we have created example code for popular scenarios.
Maintenance, would be similar to any web application without the need to support multiple browser versions, additionally we provide API's to create Windows installers for any OpenFin application.
Performance, you get all of the benefits of the V8 engine for JavaScript and the Blink layout engine. you also get API calls to monitor CPU and Memory.
Memory footprint, The OpenFin Runtime will create processes for each application and has several internal processes of its own, the actual footprint depends on what features you are using.
You can see a feature comparison between OpenFin and other solutions here https://openfin.co/runtime/compare/
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am a software development guy. Lately I was thinking of trying out some firmware development, as the company I work for is trying to enter that domain.
I have many questions regarding firmware devlopment - like:
What are the tools used - like IDE?
In which language is most of the code written in?
How to port the code into microcontroller?
How to code for different microcontrollers?
How to determine things I would need for building a specific application(choosing the microcontroller etc.)?
Anything else I should know about and where do I start? Sorry if this question is too basic, but I could not find out any satisfactory answers elsewhere.
Most microcontrollers have decent C compilers so are best coded for in C, although you might need to delve into assembly routines for occassional high performance routines. The choice of microcontroller is usually determined by the hardware demands, on board peripherals, performance and cost constraints.
You wouldn't generally be porting code from a Windows/Linux/Mac environment to a microcontroller one; you would generally be writing directly for the microcontroller, so strictly the compiler is a cross compiler - compiling on your PC to run on a different processor. You typically get debuggers, emulators and full editor capabilities in the IDE, so its a similar experience to writing code in a PC environment, but it runs slower, and has to be downloaded to the target hardware or emulated to be tested.
A great authority to start reading about embedded development is Jack Gansle and his firmware handbook. Also www.embedded.com for general articles.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I need some resources for implementing a simple virtual machine and interpreted language. Something that is pratical is most useful. I have read the Virtual Machine Implementation book and found that it is quite old and doesn't represent the vms I see today. Also if someone know of a fairly simplistic language that would be great as well.
check The implementation of Lua 5.0
You don't say if this is for a new project, to work with an existing project, for learning, or what target environment, language, and OS you're using.
If you want to learn about implementing your own VM and scripting language, get the book Game Scripting Mastery. Despite its title, it is actually about implementing your own virtual machine and scripting language. The source code is for Win32, but the concepts can be applied to .Net or Linux.
As a bonus, when you're done you will have a playable, scriptable, 2D adventure game.