1. 程式人生 > >elf檔案中程式碼段有絕對地址但重定位表中無.text.rel

elf檔案中程式碼段有絕對地址但重定位表中無.text.rel

#include
int main()
{
        printf("hello\n");
        return 0;
}
                                                                                                                                    [email protected]:~/elffun.d$ readelf -S helloWorld.o
共有 30 個節頭,從偏移量 0x1800 開始:

節頭:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        08048154 000154 000013 00   A  0   0  1
  [ 2] .note.ABI-tag     NOTE            08048168 000168 000020 00   A  0   0  4
  [ 3] .note.gnu.build-i NOTE            08048188 000188 000024 00   A  0   0  4
  [ 4] .gnu.hash         GNU_HASH        080481ac 0001ac 000020 04   A  5   0  4
  [ 5] .dynsym           DYNSYM          080481cc 0001cc 000050 10   A  6   1  4
  [ 6] .dynstr           STRTAB          0804821c 00021c 00004a 00   A  0   0  1
  [ 7] .gnu.version      VERSYM          08048266 000266 00000a 02   A  5   0  2
  [ 8] .gnu.version_r    VERNEED         08048270 000270 000020 00   A  6   1  4
  [ 9] .rel.dyn          REL             08048290 000290 000008 08   A  5   0  4
  [10] .rel.plt          REL             08048298 000298 000018 08  AI  5  12  4
  [11] .init             PROGBITS        080482b0 0002b0 000023 00  AX  0   0  4
  [12] .plt              PROGBITS        080482e0 0002e0 000040 04  AX  0   0 16
  [13] .text             PROGBITS        08048320 000320 000192 00  AX  0   0 16
  [14] .fini             PROGBITS        080484b4 0004b4 000014 00  AX  0   0  4
  [15] .rodata           PROGBITS        080484c8 0004c8 00000e 00   A  0   0  4
  [16] .eh_frame_hdr     PROGBITS        080484d8 0004d8 00002c 00   A  0   0  4
  [17] .eh_frame         PROGBITS        08048504 000504 0000cc 00   A  0   0  4
  [18] .init_array       INIT_ARRAY      08049f08 000f08 000004 00  WA  0   0  4
  [19] .fini_array       FINI_ARRAY      08049f0c 000f0c 000004 00  WA  0   0  4
  [20] .jcr              PROGBITS        08049f10 000f10 000004 00  WA  0   0  4
  [21] .dynamic          DYNAMIC         08049f14 000f14 0000e8 08  WA  6   0  4
  [22] .got              PROGBITS        08049ffc 000ffc 000004 04  WA  0   0  4
  [23] .got.plt          PROGBITS        0804a000 001000 000018 04  WA  0   0  4
  [24] .data             PROGBITS        0804a018 001018 000008 00  WA  0   0  4
  [25] .bss              NOBITS          0804a020 001020 000004 00  WA  0   0  1
  [26] .comment          PROGBITS        00000000 001020 000052 01  MS  0   0  1
  [27] .shstrtab         STRTAB          00000000 001072 000106 00      0   0  1
  [28] .symtab           SYMTAB          00000000 001178 000430 10     29  45  4
  [29] .strtab           STRTAB          00000000 0015a8 000255 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)
[email protected]
:~/elffun.d$ gcc helloWorld.c -o helloWorld.o

相關推薦

elf檔案程式碼絕對地址定位.text.rel

#include int main() { printf("hello\n"); return 0; }

PE檔案格式學習(八):基址定位

1.簡介 基址重定位表位於資料目錄表中的第六個,它位於安全表的後面。 這個表的作用是用來索引那些需要重定位的資料的。當系統發現DLL的真實載入基址跟PE檔案中的ImageBase中的值不一樣時,就會啟用基址重定位表修復一些資料的地址。我們知道一個程式中可能包含多個DLL,因此有可

C# 檔案操作程式碼儲存

  C# 檔案操作大全 1.建立資料夾 //using System.IO; Directory.CreateDirectory(%%1); 2.建立檔案 //using System.IO; File.Create(%%1); 3.刪除檔案 //using System.

c#檔案操作程式碼儲存

1.建立資料夾 //using System.IO; Directory.CreateDirectory(%%1); 2.建立檔案 //using System.IO; File.Create(%%1); 3.刪除檔案 //using System.IO; File.

數據庫的數據類型與JAVA數據類型的對應關系

enter mes bigint mat datetime all double float style 類型名稱 顯示長度 數據庫類型 JAVA類型 JDBC類型索引(int) 描述 VARCHAR L+N VARCHAR java.

如何實現一個表字資料變化,另一張資料隨著變化

資料表1(db_integrityevent): 資料表2:(db_corporatecreditscore): navicat觸發器寫法: 可以實現表中相關資料變化,表中其他跟隨這變化。 mysql命令列寫法: delimiter $$ for each row B

將兩個查出的兩列信息放在同一個

i++ trade ear .cn select 一行 gdi record 企業 String sql_gd = "select * from TAX_INFO_GD where ID=‘"+gdid+"‘"; Record gdRecord = Db

如何把excel的資料匯入到oracle資料已有的

操作步驟如下: 準備資料:在excel中構造出需要的資料    2.將excel中的資料另存為文字檔案(有製表符分隔的)     3.將新儲存到文字檔案中的資料匯入到pl*sql中 &nb

Oracle 將一個幾個欄位更新到另一個

UPDATE  TEST_TABLE1 T1    SET  (T1.AA, T1.BB, T1.CC) =      

ExcelVlookup與index+match再另一個工作的使用方法

在同一個excel中,有一個工作表名為test,資料為上面圖片的格式,現在需要把資訊表增加銷量列,員工銷量需要匹配業績表中的銷量,通過Vlookupyuindex+match函式匹配出並且在另一個工作表中: 新建一個工作表,複製test工作表中資訊表的資料,在增加兩列銷量,通過工號匹配

Sql Server儲存過程從一個抓取資料填充到另一張

  set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:  <alex,,Name> -- Create

PE檔案解析-輸入、輸出定位

一、 輸入表 1、輸入表地址定位    PE檔案頭可選映像頭中資料目錄表的第二成員指向輸入表,輸入表以一個 IAMGE_IMPORT_DESCRITPTOR 陣列開始,每個被PE檔案隱式地連結進來的DLL都有一個IID,在這個陣列中沒有欄位指出該結構陣列的項數,但他最後一

[Scripts]一個存在另外一個不存在的SQL

一個表中存在但另外一個表中不存在的SQL,兩種寫法:NOT EXISTSSELECT ipFROM   login_log lWHERE  NOT EXISTS (   SELECT 1             -- it is mostly irrelevant what you put here   FR

PE檔案學習筆記(四):定位(Relocation Table)解析

1、重定位表的作用 重定位表(Relocation Table)用於在程式載入到記憶體中時,進行記憶體地址的修正。為什麼要進行記憶體地址的修正?我們舉個例子來說:test.exe可執行程式需要三個動態連結庫dll(a.dll,b.dll,c.dll),假設te

淺談sql server把一個查詢出來的資料插入到另外一個

1、 insertintoA([id], ids,[name], type, time) select[id],null,[name],'dd',getdate()fromBwheretype='dd' 2、 DECLARE @num int,@i int; SET @

PL\SQL如何將從一張選出的資料插入到另一張

 今天在做資料庫操作的時候,有一個需求是將A表中的前500000條資料查出來,然後插入到表B中.表A與表B具有同樣的欄位型別,資料庫為Oracle 10g,資料庫管理工具用的PL\SQL,由於資料庫不是特別的熟,於是在網上查到如下語法: insert into B se

利用SQL語句的case、when、sum實現將的一列變為多列

一、原表status的結構如圖所示:展示的主要欄位有addtime1(丟失時間)、addtime2(撿到時間)、status(狀態)1,表示成功;2 表示認領中;0表示未認領;二、現在報表設計的需求是統計一個月之內成功認領的個數、兩個月之內成功認領的個數、三個月之內成功認領以

用oracle查詢一個的一個欄位內容包含另一個的某個欄位的值

select *   from table1 where exists (select 1           from table2          where table1.columA like '%' || table2.columB || '%')

SQLunion的常用用法~~解決資料拼湊、兩列合併等問題

強大的union 和union all的方法,具體可檢視強大的W3SCHOOL裡的說明 union 博主只知道可以拿來拼資料,在二次開發資料來源中,經常在下拉框選項值時,比如 select '是' id,'是' label from dual u

從一張復制數據到另一張

server reat clas into 復制 from insert sqlserve rom 分為兩種情況,一種是目標表不存在,另一種是目標表已存在,語法是不同的。 分別以sqlserver和oracle為例,兩者略有不同。 sqlserver中,如果目標表不存在