题目: 设有如下C++类 class A { int value; public: A(int n = 0) : value(n) {} int GetValue() { return value; } }; 请使用某种方式来在类的外部改变私有成员A::value的值。
程序员的可能做法: class A { int value; public: A(int n = 0) : value(n) {} int GetValue() { return value; } void SetValue(int n) { value = n; } };
void f() { A a; a.SetValue(5); }
黑客的可能做法: void f() { A a; *((int *)&a) = 5; }
结论: 程序员习惯于遵循既有的限制来增加既有的东西。 黑客习惯于利用既有的东西来打破既有的限制。 
|