逆アセンブラでXREFを避けます

この記事では、逆アセンブラにおいてXREFを避ける方法を示します。

この記事の他の言語:
中文(简体), English

サンプル·コード

#include <iostream>
int main(int argc, const char * argv[]) {
    const char * cstring = "ずるいのですね!";
    printf("%s\n",cstring);
    return 0;
}

cstringを用いた場合逆アセンブラを簡単に見つけることができます。図1に示すように。

図1
図1

_main+15をダブルクリックし、ホッパーは、main関数に私たちをもたらすでしょう。図2に示すように。

図2
図2

XREFを回避するために、コードを変更する必要があります。

#include <iostream>
int main(int argc, const char * argv[]) {
    const char * cstring = "(・ 8 ・)ずるいのですね!";
    printf("%s\n",cstring);
    return 0;
}

コンパイル後、もう少し修正が必要です。

あなたの逆アセンブラでは、この行を探します (図3に示すように),その位置を覚えています。
そしてHEXエディタで、このバイナリを開きます。

図3
図3

私たちはcstringの12以上の文字を追加しているので、私たちはちょうどその、5Bに50を交換して保存します。

図4
図4

さて、あなたの逆アセンブラでこのバイナリファイルを開いて、main関数へのXREFがありません。

図5
図5


Leave a Reply

Your email address will not be published. Required fields are marked *

seventeen − four =