The main output of the development team is not the diagrams, but the software, so the models and the implementations based on them must correspond to each other with minimal costs for maintaining synchronization between them. Most often, the developed models will turn into software code. Reverse engineering is the process of converting code written in any programming language into a model. As a result of this process, you get a huge amount of information, some of which is at a lower level of detail than is necessary to build useful models. At the same time, reverse engineering is never complete. The fact is that direct design, which precedes reverse design, leads to a loss of information, so that it will not be possible to completely restore the model based on the code, unless the tools include in the comments to the source text information that goes beyond the semantics of the implementation language.
Rules for conversion from the selected implementation language are identified. This can be done at the level of the project or the organization as a whole.
The tool specifies the code that will be reverse engineered.
Using tools, a class diagram is created by interrogating the resulting model. You should start, for example, with one or more classes, and then expand the diagram by following some relationships or adding neighboring classes. At the same time, you can reveal or hide the details of the content of the diagram, depending on your intentions. In the article, we have selected a list of excellent reversal resources that you may need in practice.
Practice reverse engineering. Be careful with malware.
Cerbero Profiler – Select all -> Copy to new file
AppEncryptor – Decryption tool
Class-Dump – Using the unprotect option
readmem – OS X Reverser process reset tool