Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int main(){
- int x = 10;
- //Arrivo all'secondo byte usato in memoria dal mio int...
- char *edit_x = (char *) &x + 1;
- // offset rispetto all'inizio dell' int
- //aggiungo tramite lo xor (usato dal processore per le somme)
- // il pattern di byte di 'A' che è il decimale 65 ovvero il binario 01000001
- *edit_x = *edit_x ^ 'A';
- *(edit_x + 1) = *(edit_x + 1) ^ 'A';
- //ottento quindi il binario 01000001 01000001 00001010 00000000 pari a 4276490
- std::cout << x << std::endl;
- //se lo rifaccio eliminerò il byte modificato e ritornero a 0001010 00000000 00000000 00000000 ovvero 10
- *edit_x = *edit_x ^ 'A';
- *(edit_x + 1) = *(edit_x + 1) ^ 'A';
- std::cout << x << std::endl;
- //Usato per mostrare l'indirizzo puntato da edit_x
- std::cout << (void *) edit_x << " " << &x << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement