A veces, cuando desarrollo un exploit que funciona perfectamente en una máquina dada, fallará en otra diferente, a pesar de que tienen el mismo sistema operativo / arquitectura y configuraciones (como el lenguaje, que en mi experiencia puede tener algunos efectos en el memoria de proceso, al menos en Windows).
Soy consciente del hecho de que existen técnicas para lograr más confiabilidad en algunos casos. Sin embargo, me pregunto si un exploit desarrollado y probado en un dispositivo determinado (digamos un Google Pixel), con o sin el uso de estas técnicas, se supone que funciona en otro (como un Samsung Galaxy S8).
Si no, ¿por qué? ¿No debería el mismo binario tener la misma memoria de proceso? Puedo pensar en diferentes casos en los que esto no debería ser cierto, por ejemplo, si el programa carga datos que son específicos del dispositivo. Pero cuando no es el caso, ¿el mismo binario, alimentado con la misma entrada, se comportará de manera diferente cuando se ejecute en diferentes dispositivos?
Esta pregunta asume que ASLR está deshabilitado.
EDITAR: estoy preguntando sobre cómo explotar las vulnerabilidades de corrupción de memoria, como el uso después de las liberaciones y las lecturas OOB.