这篇文章主要演示了如何避免在Hopper或者IDA中被找出XREF。
这是本次的样例代码:
#include <iostream> int main(int argc, const char * argv[]) { const char * cstring = "This is tricky!"; printf("%s\n",cstring); return 0; }
反编译器可以轻松找出我们在哪里使用过cstring。如图1所示。

双击_main+15,我们就会被Hopper带到main函数部分(正是我们使用cstring的地方)。如图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编辑器中打开这个二进制文件。

因为我们给cstring多添加了一个char,于是我们就把这里的50改为51,然后保存。
现在,把这个二进制文件丢到你的反编译器里。啊啦,看不到指向main函数的XREF了。

