这篇文章主要演示了如何避免在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所示。
![图 1](/wp-content/uploads/2015/05/屏幕快照-2015-05-11-下午11.55.54.png)
双击_main+15,我们就会被Hopper带到main函数部分(正是我们使用cstring的地方)。如图2所示。
![图 2](/wp-content/uploads/2015/05/屏幕快照-2015-05-11-下午11.56.29.png)
为了避免被找出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](/wp-content/uploads/2015/05/屏幕快照-2015-05-12-上午12.06.42.png)
因为我们给cstring多添加了一个char,于是我们就把这里的50改为51,然后保存。
现在,把这个二进制文件丢到你的反编译器里。啊啦,看不到指向main函数的XREF了。