Ingeniería inversa
En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones. La gran mayoría del software de pago incluye en su licencia una prohibición expresa de aplicar ingeniería inversa a su código, con el intento de evitar que se pueda modificar su código y que así los usuarios tengan que pagar si quieren usarlo.
Cracker
PC Magazine define y ejemplifica a la ingeniería inversa de la siguiente forma: "Aislar los componentes de un sistema completo. Cuando un chip es sometido a la ingeniería inversa, todos los circuitos individuales son identificados. El código fuente puede ser sometido a un proceso de ingeniería inversa, para obtener su diseño o especificaciones. El lenguaje de máquina puede ser regresado a lenguaje ensamblador" (PC Magazine 2009).