精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

萬萬沒想到,一個可執行文件原來包含了這么多信息!

開發 前端
拿到一個編譯好的可執行文件,你能獲取到哪些信息?文件大小,修改時間?文件類型?除此之外呢?實際上它包含了很多信息,這些你都知道嗎?

拿到一個編譯好的可執行文件,你能獲取到哪些信息?文件大小,修改時間?文件類型?除此之外呢?實際上它包含了很多信息,這些你都知道嗎?

示例程序

  1. //main.c 
  2. #include<stdio.h> 
  3. void testFun() 
  4.     printf("公眾號:編程珠璣\n"); 
  5. int main(void) 
  6.     testFun(); 
  7.     return 0; 

編譯得到可執行文件main:

  1. $ gcc -o main main.c 

ELF頭信息

只需要一條簡單的命令,就可以獲取很多信息

  1. $ readelf -h main 
  2. ELF Header: 
  3.   Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  
  4.   Class:                             ELF64 
  5.   Data:                              2's complement, little endian 
  6.   Version:                           1 (current) 
  7.   OS/ABI:                            UNIX - System V 
  8.   ABI Version:                       0 
  9.   Type:                              EXEC (Executable file) 
  10.   Machine:                           Advanced Micro Devices X86-64 
  11.   Version:                           0x1 
  12.   Entry point address:               0x400430 
  13.   Start of program headers:          64 (bytes into file) 
  14.   Start of section headers:          6648 (bytes into file) 
  15.   Flags:                             0x0 
  16.   Size of this header:               64 (bytes) 
  17.   Size of program headers:           56 (bytes) 
  18.   Number of program headers:         9 
  19.   Size of section headers:           64 (bytes) 
  20.   Number of section headers:         31 
  21.   Section header string table index: 28 

程序位數

  1. Class:     ELF64 

Class展示了該程序的位數,如這里顯示的是ELF64,如果你將它放到一個32位系統中運行,運行得起來就怪了。換句話說,64位系統上能運行32位和64位的程序,但是32位系統上,無法運行64位的程序。

大小端

  1. Data:   2's complement, little endian 

還記得那個到處可見的面試題嗎?如何判斷當前CPU是大端還是小端?除了各種秀代碼的方式,你想到這個方式了嗎?

找一個該平臺上的正運行的可執行文件或系統庫,然后使用readelf -h看一下,是不是很快就看出來了?多么明顯的little endian。

運行平臺

  1. Machine:   Advanced Micro Devices X86-64 

做嵌入式相關的可能經常需要做交叉編譯,而編譯出來的程序到底對不對呢?比如你在86平臺編譯arm的程序,最終生成的可執行文件到底能不能運行在arm平臺呢?通過Machine字段就可以很容易確定,從這里可以看到,它是運行在x86平臺的。

同樣的,當你在交叉編譯的時候,發現總有一個庫鏈接不上,但是庫又存在,不妨看看這個庫和你要編譯的平臺是否匹配。

鏈接了哪些動態庫?

編好的程序依賴了哪些動態庫呢?可不要放到另外一個平臺就起不來啊。瞅瞅:

  1. $ ldd main 
  2.     linux-vdso.so.1 =>  (0x00007ffe750e7000) 
  3.     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f749920a000) 
  4.     /lib64/ld-linux-x86-64.so.2 (0x00007f74995d4000) 

原來鏈接了這些庫,所以當你在網上下載一些程序,運行的時候提示你某些so找不到,不妨看看它鏈接的動態庫在什么位置,你的機器上到底有沒有吧。

新增的函數和全局變量包含了嗎?

新增了一個全局變量或者函數,但是編譯完之后,不確定有沒有?

  1. $ nm main |grep testFun 
  2. 0000000000400526 T testFun 

nm看下就知道了。當然了,如果你看到某個庫的函數前面的標志不是T,而是U,說明該函數未在該庫中定義。

nm主要用于查看elf文件的符號表信息。

有符號表嗎

我們都知道,沒有符號表的程序,在core之后是沒有太多有效信息可看的,也是無法使用gdb正常調試的,那么怎么看有沒有符號表呢?

  1. $ file main 
  2. main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0d9a7eb860459b585d2b33ae28d7c67d5ba12669, not stripped 

咦?你看這里是不是也可以看到程序位數,適用平臺等信息?

如果使用file命令看到最后是not stripped,那么則含有符號表,一般線上的程序可能會選擇去掉符號表信息,因為可以大大減少可執行文件的空間占用。

  1. $ strip main 

這個時候再看看:

  1. $ nm main 
  2. no main symbols 

程序占用空間太大?

為什么程序的占用空間這么大?不妨看看是不是使用了過多的靜態變量或全局變量:

  1. $ size main 
  2.    text       data     bss     dec     hex filename 
  3.    1261        552       8    1821     71d main 

看到data部分的大小了嗎?看起來并沒有多少,如果這里占用空間過大,那可能是你程序中用到了太多的全局變量和靜態變量或常量。當然了,如果你的全局變量都是初始化為0的,那么data這里是不會有明顯的變化的(為什么?)。

在開頭分別加下面這一行,其影響可執行文件的效果不一樣奧。

  1. char str[1000] = {0}; 
  2. char str[1000] = {1}; 

包含某個字符串嗎

這個程序里面包含什么特殊的字符串嗎?可以搜索一下:

  1. $ strings main |grep hello 
  2. hello, 

嗯?這樣一想,好像還可以把版本號信息寫進去呢。

C還是C++?

如果將前面的程序按照C++編譯:

  1. $ g++ -o main main.c 
  2. $ nm main |grep test 
  3. 0000000000400526 T _Z7testFunv 

你會發現使用g++編譯出來的test函數符號前帶頭,后帶尾,這也是C++中有重載和C中沒有重載的原因之一。

函數的匯編代碼是?

反匯編所有代碼:

  1. $ objdump -d main 

那如果要反匯編特定函數(如main函數)呢?先按照地址順序輸出符號表信息:

  1. $ nm -n main |grep main -A 1 
  2. 0000000000400537 T main 
  3. 0000000000400550 T __libc_csu_init 

我們得到main的開始地址為0x400537,結束地址為0x400550。

反匯編:

  1. $ objdump -d main --start-address=0x400537 --stop-address=0x400550 
  2. 0000000000400537 <main>
  3.   400537:    55                      push   %rbp 
  4.   400538:    48 89 e5                mov    %rsp,%rbp 
  5.   40053b:    b8 00 00 00 00          mov    $0x0,%eax 
  6.   400540:    e8 e1 ff ff ff          callq  400526 <testFun> 
  7.   400545:    b8 00 00 00 00          mov    $0x0,%eax 
  8.   40054a:    5d                      pop    %rbp 
  9.   40054b:    c3                      retq    
  10.   40054c:    0f 1f 40 00             nopl   0x0(%rax) 

 

 

看看只讀數據區有哪些內容?

當我們嘗試修改常量字符串的時候,編譯器會提示我們,它們是只讀的,真的如此嗎?

  1. $ readelf main -x .rodata 
  2. Hex dump of section '.rodata': 
  3.   0x004005d0 01000200 00000000 68656c6c 6f2ce585 ........hello,.. 
  4.   0x004005e0 ace4bc97 e58fb7ef bc9ae7bc 96e7a88b ................ 
  5.   0x004005f0 e78fa0e7 8e9100                     ....... 

看到了嗎?我們的hello,字符串放在了這里。

總結

本文僅列出了一些比較常見的可執行文中能讀到的信息,歡迎補充。

思考

對于a和b,它們的內存存儲區域是一樣的嗎?為什么?

  1. char *a = "hello,world"
  2. char a[] = "hello,world"; 

sizeof計算a和b的大小一樣嗎?又為什么?

 

 

 

責任編輯:趙寧寧 來源: 編程珠璣
相關推薦

2021-11-29 05:37:24

Windows Def操作系統微軟

2021-08-31 09:35:01

TCPIP漏洞

2021-08-12 06:52:02

谷歌面試ArrayList

2015-07-15 13:00:31

英特爾開源

2019-12-09 10:13:20

HashMap選擇容量

2021-03-18 09:06:17

函數MainJava

2021-01-27 18:13:35

日志nginx信息

2016-09-01 13:54:23

Google太空電梯懸滑板

2023-10-31 12:29:25

模型訓練

2022-11-29 09:12:12

硬件技術拼圖

2023-12-26 15:10:00

處理二進制文件

2020-08-14 08:19:25

Shell命令行數據

2015-02-02 11:03:12

2025-09-09 09:03:00

2017-12-12 11:09:39

顯卡散熱CPU

2018-06-27 14:23:38

機器學習人工智能入門方法

2019-10-12 08:53:26

Redis多線程版本

2010-02-22 18:04:27

CentOS mpla

2018-05-02 09:38:02

程序員代碼互聯網

2024-01-04 12:33:17

ChatGPTAI視頻
點贊
收藏

51CTO技術棧公眾號

免播放器亚洲一区| 人体久久天天| 亚洲另类一区二区| 国产日韩欧美在线观看| 欧美性猛交xxxxx少妇| 99国产精品久久一区二区三区| 亚洲成人www| 日本不卡在线观看| 精品人妻伦一二三区久久| 亚洲一区欧美激情| 按摩亚洲人久久| 中国黄色片视频| 国产成+人+综合+亚洲欧美| 一区二区三区av电影 | www.国产一区二区| 91精品国产91久久综合| 日韩精品中文字幕有码专区| 亚洲一二三不卡| 美女一区网站| 一区二区三区中文免费| 日韩久久精品一区二区三区| 老熟妇高潮一区二区高清视频| 全部av―极品视觉盛宴亚洲| 久久免费视频在线观看| 永久免费看mv网站入口| 你微笑时很美电视剧整集高清不卡| 日韩一区二区三区电影在线观看 | 精品国精品自拍自在线| 国产高清视频网站| 亚洲一级少妇| 亚洲大片在线观看| 300部国产真实乱| 国产69精品久久app免费版| 国产99一区视频免费| 国产精品影片在线观看 | 在线影院国内精品| 欧美亚洲精品一区二区| 宅男在线观看免费高清网站| 中国色在线观看另类| 免费日韩电影在线观看| 欧美视频在线观看一区二区三区| 九一久久久久久| 国产欧美日韩精品丝袜高跟鞋| 天天干在线播放| 亚洲一区日韩| 18一19gay欧美视频网站| 国产亚洲成人精品| 国产一区二区三区自拍| 欧美另类极品videosbest最新版本| 日本女人性生活视频| 欧美精选视频在线观看| 一区二区亚洲精品国产| 久久久视频6r| 成人av动漫在线观看| 亚洲视频精品在线| 日韩不卡av在线| 精品无人区麻豆乱码久久久| 亚洲欧美精品suv| 实拍女处破www免费看| 欧美一区二区三区久久| 亚洲精品美女久久久| aaaa黄色片| 日本欧美高清| 亚洲欧美另类国产| www色com| 99成人在线视频| xxxx性欧美| 老女人性淫交视频| 红桃视频国产精品| 91国产视频在线播放| 国产a∨精品一区二区三区仙踪林| 亚洲国产婷婷| 国产98色在线| 一级做a爱片性色毛片| 久久99精品久久久久| 91九色对白| 日本毛片在线观看| 久久久av毛片精品| 亚洲精品一卡二卡三卡四卡| 国产黄网站在线观看| 亚洲资源在线观看| 日韩av资源在线| 国产精品诱惑| 精品三级在线看| 欧美狂猛xxxxx乱大交3| 日韩理论电影院| 欧美黄色小视频| 免费视频久久久| 久久爱www久久做| 国产日韩一区二区三区| se在线电影| 亚洲国产综合视频在线观看| 大肉大捧一进一出好爽视频| 日韩色性视频| 亚洲国产欧美一区二区丝袜黑人| 亚洲图片另类小说| 欧美激情无毛| 国产精品第100页| 亚洲免费视频网| 国产三级精品三级在线专区| 免费观看亚洲视频| 成人日韩在线观看| 欧美大片在线观看一区二区| 一区二区精品免费| 伊人久久大香线蕉av超碰演员| 国产成人aa精品一区在线播放| 国产乱淫av片免费| 久久嫩草精品久久久久| 欧洲美女和动交zoz0z| 自拍视频在线看| 欧美一二三四区在线| 日韩精品卡通动漫网站| 欧美a级在线| 国产精品久久久久久久久久东京| 好男人www在线视频| 国产精品久久久久四虎| 黄色一级片播放| 日韩精品一区二区三区中文| 尤物九九久久国产精品的分类| 国产午夜福利一区二区| 国产在线精品不卡| 一区二区不卡在线| 欧美三区四区| 亚洲老头同性xxxxx| 国产第100页| 国产成人午夜高潮毛片| 在线视频精品一区| yiren22亚洲综合| 亚洲欧美国产一本综合首页| 国产精品111| 国产盗摄精品一区二区三区在线| 亚洲.欧美.日本.国产综合在线 | 国产成人中文字幕| 天堂中文在线8| 午夜精品免费在线| 色哟哟视频在线| 女生裸体视频一区二区三区| 国产日韩在线亚洲字幕中文| 阿v免费在线观看| 色婷婷久久99综合精品jk白丝| 性久久久久久久久久久| 一区在线播放| 韩国一区二区三区美女美女秀 | 亚洲国产精品视频| 国产精品91av| 欧美体内she精视频在线观看| 91精品视频网站| 91大神xh98hx在线播放| 欧美色网站导航| 婷婷综合在线视频| 老色鬼精品视频在线观看播放| 精品91在线| 亚洲一区二区三区四区视频| aaa日本高清在线播放免费观看| 色综合咪咪久久| 男女做爰猛烈刺激| 石原莉奈一区二区三区在线观看 | 日本日本19xxxⅹhd乱影响| 黄色欧美网站| 欧美中文在线观看国产| 午夜视频福利在线| 日韩欧美一区二区三区久久| 亚洲第一成人网站| 人人狠狠综合久久亚洲| 亚洲综合首页| 日韩在线亚洲| 久久久免费精品视频| 五月婷婷久久久| 色一区在线观看| 永久免费观看片现看| 国产资源精品在线观看| 美女黄色免费看| 日韩中出av| 国产精品十八以下禁看| 欧美jizz18性欧美| 日韩欧美国产不卡| 精品国产免费观看| 亚洲国产精品传媒在线观看| 污视频网址在线观看| 狠狠入ady亚洲精品| 久久青青草原| 欧美aaa级| 久久久久久网址| 成人av毛片| 日韩欧美一区二区三区在线| 免费日韩一级片| 国产精品美女久久久久久久网站| 在线观看日本www| 一本色道久久综合亚洲精品不卡 | 五月天久久网站| 国产精品日韩一区二区| 激情亚洲影院在线观看| 久久影视电视剧免费网站清宫辞电视 | 国产精品制服诱惑| 亚洲爱爱视频| 久久久久久久久久久久久久久久久久av | 日韩精品免费视频| 国产一区二区波多野结衣| 亚洲成人第一页| 男人的午夜天堂| 99久久久精品免费观看国产蜜| 日韩av卡一卡二| 国产欧美亚洲一区| 水蜜桃在线免费观看| 日日狠狠久久偷偷综合色| 92国产精品视频| 国产成人免费9x9x人网站视频 | 亚洲精品国产精品久久| 97一区二区国产好的精华液| 国产精品亚洲一区二区三区| а√在线中文在线新版| 久久视频国产精品免费视频在线| 经典三级在线| 亚洲国产精品系列| 国产成人毛毛毛片| 欧美亚洲日本国产| 看片网址国产福利av中文字幕| 成人欧美一区二区三区视频网页| 在线免费观看日韩av| 国产99久久精品| 色网站在线视频| 日韩国产精品久久久| 欧美大片在线播放| 欧美日韩三级电影在线| 亚洲最新免费视频| 国产一区二区三区四区| 久久99精品久久久久久秒播放器 | 国产亚洲精品久久久久久无几年桃 | 日韩黄色中文字幕| 国产偷国产偷精品高清尤物| 精品中文字幕在线播放| 国产98色在线|日韩| 国产精品自在自线| 麻豆国产精品官网| 污视频免费在线观看网站| 久色成人在线| 免费在线观看日韩视频| 国产一区二区三区成人欧美日韩在线观看 | 国产精品视频一区国模私拍| 日本免费久久| 日本a级片电影一区二区| 涩涩涩在线视频| 69久久夜色精品国产69乱青草| 成人高潮aa毛片免费| 欧美人与性动交| 日本无删减在线| 欧美激情视频播放| 欧美hdxxx| 欧美高清不卡在线| √天堂8资源中文在线| 久久久久久久久久久网站| 69av成人| 91av国产在线| a欧美人片人妖| 国产精品jvid在线观看蜜臀| 高清电影一区| 国产精品激情av在线播放 | 精品电影一区| 国产极品尤物在线| 午夜在线a亚洲v天堂网2018| 国产免费黄视频| 日韩国产欧美在线视频| 国产主播中文字幕| 精品一区二区三区视频| 中文字幕一区二区三区四| 国产成人精品免费| 国产伦精品一区二区三区88av| av成人免费在线| av网在线播放| 亚洲日本在线a| 国产中文字幕免费| 日本高清视频一区二区| 国产一区二区波多野结衣| 精品国产91乱码一区二区三区| 天堂网在线观看视频| 国产小视频国产精品| 精品国产丝袜高跟鞋| 欧美极品美女电影一区| 色偷偷色偷偷色偷偷在线视频| 国产精品久久久久久久天堂| 91精品视频一区二区| 国产区欧美区日韩区| av中文一区| 成人短视频在线观看免费| 国产一区二区三区成人欧美日韩在线观看 | 欧美一区二区三区在线| 欧美亚洲精品在线观看| 国产一区二区三区在线观看网站 | 色呦哟—国产精品| 国产毛片久久久久久国产毛片| 久久激情综合| 91亚洲一区二区| 91麻豆免费观看| 亚洲综合视频网站| 狠狠久久亚洲欧美专区| 国产精品久久久久久免费| 亚洲国产天堂久久综合网| 在线免费观看黄色网址| 久久久免费精品视频| 日韩黄色在线| 久久综合一区二区三区| 亚洲人成免费网站| 国产熟人av一二三区| 成人黄色777网| 东京热无码av男人的天堂| 亚洲777理论| 国产精品人人爽| 亚洲小视频在线| 国产精品国精产品一二| 91精品综合视频| 精品久久不卡| 97成人在线免费视频| 国产91丝袜在线播放九色| 在线观看天堂av| 欧美性猛交xxxx乱大交蜜桃| 亚洲黄色小说网址| 久久精品国产亚洲7777| 亚洲第一会所001| 欧美人xxxxx| 99国产精品视频免费观看一公开| 日韩精品xxx| 亚洲日本乱码在线观看| 97人妻精品视频一区| 亚洲美女性视频| 91制片在线观看| eeuss一区二区三区| 天天av综合| 九九热精品国产| 国产精品电影一区二区| 国产suv精品一区二区33| 亚洲精品久久久久久久久久久久久| 国产高清一区二区三区视频| 国产剧情日韩欧美| 精品欧美激情在线观看| 欧美一级片中文字幕| 91色porny| 国产精品21p| 亚洲欧美日韩综合| 婷婷午夜社区一区| 日本精品免费| 三级不卡在线观看| xxx在线播放| 在线视频亚洲一区| 国产区视频在线播放| 国产成人精品久久二区二区91| 九九久久精品| 亚洲性生活网站| 国产精品女主播av| 911美女片黄在线观看游戏| 色婷婷综合成人av| 亚洲日本中文| 青青视频免费在线观看| 粉嫩av一区二区三区在线播放| 国产黄色的视频| 精品欧美乱码久久久久久| 精灵使的剑舞无删减版在线观看| 国产成人成网站在线播放青青 | 久久久爽爽爽美女图片| 国产乱论精品| 日韩av综合在线观看| 91麻豆精品在线观看| 亚洲av无码不卡| www.亚洲免费视频| 一区视频网站| 黄色网页免费在线观看| 久久久久久久综合日本| 欧美三级网站在线观看| www.亚洲成人| 北条麻妃在线一区二区免费播放| 激情伊人五月天| 国产亚洲精品中文字幕| 国产在成人精品线拍偷自揄拍| 欧美成人一区二区三区电影| 国产伦精品一区二区三区在线播放| 日韩欧美国产免费| 欧美激情中文不卡| 99久久精品国产色欲| 97在线看福利| 日韩久久综合| 秘密基地免费观看完整版中文 | 久久在线电影| 乱码一区二区三区| 色婷婷av一区二区| 成人国产免费电影| 久久久99国产精品免费| 美腿丝袜亚洲综合| 精品午夜福利在线观看| 亚洲日本aⅴ片在线观看香蕉| 日本成人在线网站| 91好吊色国产欧美日韩在线| 国产精品久久久久久久久果冻传媒| wwwav在线播放| 日韩暖暖在线视频| 欧美激情91| 日本精品久久久久中文| 欧美不卡一二三| 成人亚洲免费| 自拍日韩亚洲一区在线| 国产精品福利影院| 欧美日韩在线精品一区二区三区激情综|