如何在二进制代码中找到使用某个字符串的位置

时间:2018-04-03 07:32:54

标签: executable machine-code

我正在尝试分析二进制可执行文件。我想在这个文件中找到某个函数的位置;我碰巧知道这个函数使用特定的字符串文字。我在二进制代码中找到了这个字符串的位置;我决定在文件中搜索它的地址,希望能抓住引用这个字符串的指令,但我找不到任何东西。我假设这是因为二进制代码中的数据位置与执行代码时的数据的实际地址不同。

为了测试这个,我编译并执行了一个测试程序:

#include <stdio.h>

const char* s1 = "ABCDEF\n";

int main(void) {
    const char* s2 = "123456\n";
    printf("%p %p", s1, s2);
}

果然,程序打印&#34; 404000 404008&#34;,而二进制代码中两个字符串的位置分别为0x2400和0x2408。

我应该如何处理这种情况?

我正在运行Windows,64位AMD架构。我不反对为此任务下载新软件,只要它是免费的(我已经有一个不错的十六进制编辑器。)

0 个答案:

没有答案