何コレ?
ちょいと無意味なクラスを作ってみました。
class PInt { public: PInt(); PInt( int data ){ m_data = (( data << 16 ) & 0xffff0000 ) | (( data >> 16 ) & 0x0000ffff ); } virtual ~PInt(){} int Get(){ return (( m_data << 16 ) & 0xffff0000 ) | (( m_data >> 16 ) & 0x0000ffff ); } void Set( int data ){ m_data = (( data << 16 ) & 0xffff0000 ) | (( data >> 16 ) & 0x0000ffff ); } private: int m_data; };
なんだかクラスとビット演算の練習みたいなソースですが、要するにDATAの上位ビットと下位ビットを入れ替えて格納しているだけのクラスですね。
一体何の意味があるかといわれれば、簡易的なクラック対策になるんですよね。今回は簡易的な為、ただ単に上位ビットと下位ビットの入れ替えだけにしていますがここが暗号化になっているわけですね。それをプライベートメソッドに入れておく。つまり、メインメモリ上のDataが暗号化されていて、使う必要が応じたときだけデコードされるわけです。なのでデバッガで追いかけられたりメモリ検索をかけられたりしてもなかなかdataの場所を特定しにくいというわけです。
・・・て、いかにもいろいろ知ってますみたいな書き方してますが実は何も判っていなかったり(ぉ
いつになったら美咲ちゃん*1を読みきるんだろう・・・。
*1:解析魔法少女美咲ちゃん マジカル・オープン!