Make a good and a bad version of the executable.
- Make a malicious and benign version of the code.
- Make arrays B and C right after A,
- B is just for ease of identification
- C will be a copy of A in one executable, but different in another.
-
unsigned char A[201] {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; unsigned char B[201] {"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}; unsigned char C[201] {"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"};
- Add a function Check()
-
bool Check(){ bool good {true}; int i = 0; while (i < 200) { ++i; if (A[i] != C[i]) { good = false; } } return good; }
-
- Change main to be
-
if (Check()) { cout << "Something GOOD" << endl; } else { cout << "Something BAD" << endl; }
-
- Make arrays B and C right after A,
- Using bless, copy
- The code from A to C in both myappA and myappB
- I needed two versions of bless to do this .
- Convince yourself that the code has the same md5sum, but it does different things..