如何避免在Hopper或者IDA中被找出XREF

这篇文章主要演示了如何避免在Hopper或者IDA中被找出XREF。

本文的其他语言:
English, 日本語

这是本次的样例代码:

#include <iostream>
int main(int argc, const char * argv[]) {
    const char * cstring = "This is tricky!";
    printf("%s\n",cstring);
    return 0;
}

反编译器可以轻松找出我们在哪里使用过cstring。如图1所示。

图 1
图 1

双击_main+15,我们就会被Hopper带到main函数部分(正是我们使用cstring的地方)。如图2所示。

图 2
图 2

为了避免被找出XREF,我们只需要这样改一下我们的代码:

#include <iostream>
int main(int argc, const char * argv[]) {
    const char * cstring = "1This is tricky!";
    printf("%s\n",cstring);
    return 0;
}

在完成编译之后,我们还需要对这个二进制文件作出一点修改。

在你的反编译器中找出这一行(如图3所示),记住它的位置。然后在HEX编辑器中打开这个二进制文件。

图 3
图 3

因为我们给cstring多添加了一个char,于是我们就把这里的50改为51,然后保存。

屏幕快照 2015-05-12 上午12.09.33

现在,把这个二进制文件丢到你的反编译器里。啊啦,看不到指向main函数的XREF了。

屏幕快照 2015-05-12 上午12.14.03

Leave a Reply

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

3 × 3 =