我写了一个程序,我想实现每个字符串的输出,比如我从“字符串命令”收到的输出
int my_print(char *fmt, ...)
{
printf("%p\n",fmt);
}
int main()
{
my_print("Hello1 [%d]\n", 1);
my_print("Hello2 [%d]\n", 2);
my_print("Hello [%d]\n", 3);
my_print("Hello3 [%d]\n", 4);
它给了我输出
0x4006ac
0x4006b9
0x4006c6
0x4006d2
现在我执行了字符串命令“strings -tx a.out”,它给了我输出
200 /lib64/ld-linux-x86-64.so.2
2c1 __gmon_start__
2d0 libc.so.6
2da printf
2e1 __libc_start_main
2f3 GLIBC_2.2.5
639 l$ L
63e t$(L
643 |$0H
6ac Hello1 [%d]
6b9 Hello2 [%d]
6c6 Hello [%d]
6d2 Hello3 [%d]
我知道字符串在二进制文件 a.out 中为我提供了字符串的偏移量,但我想知道是否可以从偏移量开始的位置打印起始地址。例如,Hello1strings command
输出显示“6ac Hello1 [%d]”,其中程序的输出显示 0x4006ac,我希望我的程序应该打印掩码值,并且可以说 6ac 是我应该从字符串命令中得到的输出。