Reverse engineering is a cybersecurity discipline based on reconstructing and making low-level “systems” understandable to the researcher. Reverse engineering can be applied to different contexts, but the main ones are applications and communications.
The objective of reverse engineering at the application level is to obtain and understand the source code of the application. Reverse engineering can be applied at a very low level, for example, to obtain the source code of compiled applications (as is the case with binaries written in C). Reverse engineering can also be applied at a higher level with applications that are based on interpreted languages (such as java) but have been obfuscated in some way (as is often the case with Android applications).
The goal of reverse engineering at the communications level is to rebuild a communications protocol from scratch to understand how it works and, ideally, to be able to interact with the device through it. It is a complex process and usually requires the use of SDRs.