类中对数据进行封装,不提供对数据的读取方法,从安全方面考虑,是否可以从类的对象中剥离出原数据?
类中对数据进行封装,不提供对数据的读取方法,从安全方面考虑,是否可以从类的对象中剥离出原数据?
比如:
- C/C++ code
class CA{ int value; CA(int v);}这个类中没提供任何读取数据的方法,从安全方面考虑,是否可以从类的对象中剥离出原数据value?
[解决办法]
呃,我错了......实际上,只要通过一些“技巧”就能突破C++的封锁,拿到和修改value的值。
- C/C++ code
#include<iostream>using namespace std;class CA{ int value;public: CA(int v) { value=v; }};int main(){ CA ca(23),cb(55); CA *p; int *q,va,vb; p=&ca; q=(int *)p; va=*q; vb=*((int *)&cb); cout<<"ca.value="<<va<<endl; cout<<"cb.value="<<vb<<endl; *q=100; cout<<"ca.value="<<*((int *)&ca)<<endl;}