

IDA always allows the human analyst to override its decisions or to provide hints. IDA Pro is interactiveīecause no computer can currently beat the human brain when it comes to exploring the unknown, IDA Pro is fully interactive. Some IDA debuggers can also run the application in a virtual environment makinges malware analysis even safer. Remote debuggers are very useful to safely dissect potentially harmful programs. This can be carried out either locally or remotely. IDA Pro runs on Windows, Linux and Mac OS X and can debug a large array of specific platforms (Windows 32/64-bit, Linux 32/64-bit, OS X x86/圆4, iOS, Android, etc.). The debugger in IDA Pro complements the static analysis capabilities (examining the code without executing the program) of the disassembler by allowing users to single step through the code being investigated this way, the debugger often bypasses the obfuscation and helps obtain data that the more powerful static disassembler will be able to process in depth. More powerful tools are thus required to efficiently help analysts.

Creators of viruses, worms and trojans often write their code in an obfuscated way, making it extremely hard to read and analyse.

Hostile code usually does not cooperate with the analyst. In software analysis – as in real life – things are rarely simple and obvious. The map of the program’s code can then be post-processed for further investigation.Ī debugger is a computer program that assists in the detection and correction of errors in other computer programs. In some cases, it is possible to revert the binary program back, to a quite close level, to the original source code that produced it.

That is why advanced techniques have been implemented into IDA Pro to make that complex code more readable. However, assembly language is hard to read and make sense of. This disassembly process allows software specialists to analyse programs that are suspected to be nefarious in nature, such as spyware or malware. A disassembler like IDA Pro is capable of creating maps of their execution to show the binary instructions that are actually executed by the processor in a symbolic representation called assembly language. The source code of the software we use on a daily basis isn’t always available.
