この記事では、逆アセンブラにおいてXREFを避ける方法を示します。
サンプル·コード
#include <iostream> int main(int argc, const char * argv[]) { const char * cstring = "ずるいのですね!"; printf("%s\n",cstring); return 0; }
cstringを用いた場合逆アセンブラを簡単に見つけることができます。図1に示すように。
_main+15をダブルクリックし、ホッパーは、main関数に私たちをもたらすでしょう。図2に示すように。
XREFを回避するために、コードを変更する必要があります。
#include <iostream> int main(int argc, const char * argv[]) { const char * cstring = "(・ 8 ・)ずるいのですね!"; printf("%s\n",cstring); return 0; }
コンパイル後、もう少し修正が必要です。
あなたの逆アセンブラでは、この行を探します (図3に示すように),その位置を覚えています。
そしてHEXエディタで、このバイナリを開きます。
私たちはcstringの12以上の文字を追加しているので、私たちはちょうどその、5Bに50を交換して保存します。
さて、あなたの逆アセンブラでこのバイナリファイルを開いて、main関数へのXREFがありません。