File Type: EXECUTABLE IMAGE FILE HEADER VALUES 8664 machine (X64) 6 number of sections 5F1EDE1B time date stamp Mon Jul 27 07:00:59 2020
0 file pointer to symbol table 0 number of symbols F0 size of optional header 22 characteristics Executable App can handle >2gb addresses
OPTIONAL HEADER VALUES 20B magic # 14.26 linker version E00 size of code 1800 size of initialized data 0 size of uninitialized data 1470 address of entry point 1000 base of code ----- new ----- 00007ff682f10000 image base 1000 section alignment 200 file alignment 3 subsystem (Windows CUI) 6.00 operating system version 0.00 image version 6.00 subsystem version 7000 size of image 400 size of headers 0 checksum 0000000000100000 size of stack reserve 0000000000001000 size of stack commit 0000000000100000 size of heap reserve 0000000000001000 size of heap commit 8160 DLL characteristics High entropy VA supported Dynamic base NX compatible Terminal server aware 0 [ 0] address [size] of Export Directory 28CC [ B4] address [size] of Import Directory 5000 [ 1E0] address [size] of Resource Directory 4000 [ 15C] address [size] of Exception Directory 0 [ 0] address [size] of Security Directory 6000 [ 24] address [size] of Base Relocation Directory 2358 [ 70] address [size] of Debug Directory 0 [ 0] address [size] of Description Directory 0 [ 0] address [size] of Special Directory 0 [ 0] address [size] of Thread Storage Directory 23D0 [ 130] address [size] of Load Configuration Directory 0 [ 0] address [size] of Bound Import Directory 2000 [ 1B0] address [size] of Import Address Table Directory 0 [ 0] address [size] of Delay Import Directory 0 [ 0] address [size] of COR20 Header Directory 0 [ 0] address [size] of Reserved Directory
SECTION HEADER #1 .text name D4C virtual size 1000 virtual address E00 size of raw data 400 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 60000020 flags Code (no align specified) Execute Read
SECTION HEADER #2 .rdata name FA4 virtual size 2000 virtual address 1000 size of raw data 1200 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 40000040 flags Initialized Data (no align specified) Read Only
SECTION HEADER #3 .data name E0 virtual size 3000 virtual address 200 size of raw data 2200 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0000040 flags Initialized Data (no align specified) Read Write
SECTION HEADER #4 .pdata name 15C virtual size 4000 virtual address 200 size of raw data 2400 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 40000040 flags Initialized Data (no align specified) Read Only
SECTION HEADER #5 .rsrc name 1E0 virtual size 5000 virtual address 200 size of raw data 2600 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 40000040 flags Initialized Data (no align specified) Read Only
SECTION HEADER #6 .reloc name 24 virtual size 6000 virtual address 200 size of raw data 2800 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 42000040 flags Initialized Data Discardable (no align specified) Read Only
透過 dq 去看記憶體裡面的hex
這就是 Windows 版的GOT,問題在於說,這些 address 個別是指向哪個 function 呢?
SECTION HEADER #1 .text name D4C virtual size 1000 virtual address E00 size of raw data 400 file pointer to raw data 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 60000020 flags Code (no align specified) Execute Read
最後還忘了要找 Name 儲存的地方…
因為我有 source code, 所以我知道 main call 的第七個 function 會是一個 read, 這個 read 會把我們輸入的字串存入 Name
因為我們有了 .text 區段的 offset, 所以也可以很輕易地透過 objdump 取得 main address