On entend par code-source le texte rédigé dans un langage de programmation pour développer un logiciel. L’ordinateur traduit ce texte parfaitement lisible par des hommes dans un langage-machine qu’il comprend lui-même. Pour accéder au code-source d'un logiciel, il faut donc inverser le processus de traduction de votre machine. Pour ce faire, on va par exemple utiliser un décompilateur. Il s’agit d’un logiciel capable de reconstituer un texte-source lisible à partir d’un code-machine binaire. Ce processus, consistant à traduire un code machine binaire en un texte lisible par les hommes se fait alors automatiquement.
Si le code binaire n’est pas reconstruisible, on peut recourir à un désassembleur. Ce type de programme permet de transformer le langage machine codé de façon binaire en un langage assembleur, lisible par les hommes. Celui-ci pourra être analysé de façon manuelle. Dans la plupart des cas, les programmeurs ne réussissent pas à reconstituer l’intégralité du code source. En principe, ce n’est pas trop grave, car le but du reverse engineering est de pouvoir percevoir l’idée du programme, et pas vraiment de pouvoir recopier le code source dans son ensemble. Même avec des codes partiels, il est possible de réaliser des analyses dynamiques de programmes ou de corriger certains bugs. Ce sont avant tout les analystes-programmeurs qui utilisent des décompilateurs et des désassembleurs.