相同的二進制文件的執行過程中我寫了一個程序,我想實現輸出每個像從「字符串中接收到我的輸出字符串的command`如何才達到strings命令輸出,並在Linux上
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偏移字符串,但我想知道是否有可能從偏移量開始打印起始地址。 例如Hello1 strings command
輸出說「6ac Hello1 [%d]」其中作爲程序的輸出說0x4006ac,我希望我的程序應該打印掩碼值,並可以說,6ac是我應該期望從字符串命令的輸出。
可執行文件中的字符串(或其他)位置與執行過程中加載的虛擬地址之間沒有關係。不在普通的桌面操作系統上。如果您想知道可執行文件的外觀如何,請閱讀有關[ELF](http://en.wikipedia.org/wiki/Executable_and_Linkable_Format)的更多信息。 –
我嘗試過不一樣,但一些如何與這個問題有關,但還沒有得到完美的解決方案。你可以檢查它。 > http://stackoverflow.com/questions/12512485/how-to-get-the-address-of-a-file我知道有一些方法來獲取存儲在內存中的文件的起始地址。我我正在搜索它。希望能幫助到你。 – pradipta