tìm hiểu, phân tích virus

75 1.5K 6
tìm hiểu, phân tích virus

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

::[ARTeam Tutorial]:: PORTABLE EXECUTABLE FILE FORMAT Category : Relates to cracking, unpacking, reverse engineering Level : Intermediate Test OS : XP Pro SP2 Author : Goppit Translated by : kienmanowar (REA - cRaCkErTeAm) Tool s Used: Hexeditor (any will do) PEBrowse Pro http://www.smidgeonsoft.prohosting.com/download/PEBrowse.zip PeiD http://www.secretashell.com/codomain/peid/download.html LordPE http://mitglied.lycos.de/yoda2k/LordPE/LPE - DLX.ZIP (get DLX - b update also) HexToText http://www.buttuglysoftware.com/HexToTextMFC.zip OllyDbg http://home.t - online.de/home/Ollydbg/odbg110.zip ResHacker http://delphi.icm.edu.pl/ftp/tools/ResHack.zip BaseCalc included in this archive and metioned in the text: Snippet Cr eator http://win32assembly.online.fr/files/sc.zip First_Thunk Rebuilder http://www.angelfire.com/nt/teklord/FirstThunk.zip IIDKing http://www.reteam.org/tools/tf23.zip Cavewriter http://sandsprite.com/CodeStuff/cavewriter.zip 1 L i m u : Bài vi t n ày nh m m c ích i chi u thông tin t nhi u ngu n khác nhau v à trình bày nó theo m t ph ng pháp mà nh ng ng i m i b t u có th ti p c n d d àng nh t.M c d ù bài vi t c tr ình bày m t cách t m trong nhi u ph n, tuy nhi ên nó c nh h ng theo m c ích reverse code engineering cho nên các thông tin không c n thi t s c b qua. B n s nh n th y r ng trong bài vi t này tôi ã vay m n r t nhi u t các b ài vi t khác nhau ã c công b , ph bi n v à t t c các tác gi c a nh ng b ài vi t ó ã c tôi nh c n v i l òng c m n sâu s c trong ph n t ài li u tham kh o phía cu i c a b ài vi t n ày. PE là nh d ng file ri êng c a Win32. T t c các file có th th c thi c tr ên Win32 (ngo i tr các t p tin VxDs và các file Dll s 16 bit) u s d ng nh d ng PE. Các file Dlls 32 bit, các file COMs, các i u khi n OCX , các ch ng tr ình ng d ng nh trong Control Pannel (.CPL files) v à các ng d ng .NET t t c u là nh d ng PE. Th m chí các ch ng tr ình i u khi n Kernel mod e c a các h i u h ành NT c ng s d ng nh d ng PE. T i sao chúng ta l i c n ph i t ìm hi u v nó? Có 2 lý do chính nh sau : Th nh t chúng ta mu n th êm các o n code v ào trong nh ng file th c thi (ví d : k thu t Keygen Injection ho c th êm các ch c n n g) và th hai l à th c hi n công vi c unpacking b ng tay (manual unpacking) các file th c thi. H u h t m i s quan tâm u d n v lý do th hai, ó là vì ngày nay h u nh các ph n m m shareware nào c ng u c Packed l i v i m c ích l à làm gi m kích th c c a file ng th i cung c p th êm m t l p b o v cho file. b ên trong m t file th c thi ã b Packed th ì các b ng import tables th ng th ng là ã b thay i, l àm m t hi u l c v à ph n d li u th ì luôn b m ã hóa. Các ch ng tr ình packer s ch èn thêm mã l nh (code) unpack file trong b nh v ào lúc th c thi và sau ó nh y t i OEP (original entry point) ( ây là n i mà ch ng tr ình g c th c s b t u th c thi, thi h ành.). N u chúng ta t ìm c cách (dump) k t xu t vùng nh này sau khi mà ch ng trì nh packer hoàn t t c quá tr ình unpacking file th c thi, ng th i thêm vào ó chúng ta c ng c n ph i ch nh s a l i Section v à b ng import tables tr c khi m à ng d ng c a chúng ta s run. Làm th nào chúng ta có th th c hi n c i u n ày n u nh ch úng ta không có hi u bi t tí t o n ào v nh d ng PE file ? Ch ng tr ình th c thi c tôi s d ng l àm ví d xuy ên su t to àn b bài vi t n ày là BASECALC.EXE , m t ch ng tr ình r t h u ích t trang Web c a Fravia, nó cho phép tính toán v à chuy n i gi a c ác s h decimal, hex , binary và octal. Ch ng tr ình này c tác gi c a nó coded b ng ngôn ng Borland Dephi 2.0 , chính vì th m à nó là m t file lý t ng tôi l y l àm ví d minh h a l àm th n ào trình biên d ch Borland cho OriginalFirstThunks null . (Chi ti t h n s c c p ph n sau). 2 1. C u trúc c b n (Basic Structure) : Hình minh h a d i ây s cho chúng ta th y c c u trúc c b n c a m t PE file. m c t i thi u nh t th ì m t PE file s có 2 Sections : 1 cho o n m ã (code) và 1 cho ph n d li u (data). M t ch ng tr ình ng d ng ch y tr ên n n t ng Windows NT có 9 sections c xác nh tr c có t ên là .text , .bss , .rdata , .data , .rsrc , .edata , .idata , .pdata , và .debug . M t s ch ng tr ình ng d ng l i không c n t t c nh ng sections này, trong khi các ch ng tr ình khác có th c nh ngh a v i nhi u sections h n phù h p v i s c n thi t ri êng bi t c a chúng. Nh ng sections m à hi n th i ang t n t i v à xu t hi n thông d ng nh t trong m t file th c thi l à : 1. Executable Code Section, có tên là .text (Micro$oft) ho c l à CODE (Borland). 2. Data Sections, có nh ng tên nh .data, .rdata ho c .bss (Micro$oft) hay DATA (Borland) 3. Resources Section, có tên là .rsrc 4. Export Data Section, có tên là .edata 5. Import Data Section. có tên là .idata 6. Debug Information Section, có tên là .debug Nh ng cái t ên này th c s l à không thích h p khi chúng b l i b i h i u h ành (OS) và chúng là tài li u ph c v cho l i ích c a các l p tr ình viên. M t i m quan tr ng khác n a l à c u t rúc c a môt PE file trên a là chính xác , úng n gi ng h t nh khi nó c n p vào trong b nh v ì v y b n có th xác nh thông tin chính xác c a file trên a m à b n có th s mu n t ìm ki m nó khi file c n p vào trong b nh . Tuy nhiên nó không c sao chép l i m t cách chính xác bên trong b nh . Các windows loader s quy t nh ph n n ào c n c ánh x l ên b nh v à b qua nh ng ph n khác. Ph n d li u m à không c ánh x lên c t t i phía cu i c a file sau b t k ì ph n n ào mà s c ánh x l ên b nh ví d Debug Information. C ng v y v trí c a m t m c trong file trên a s luôn luôn khác bi t v i v trí c a nó khi c n p v ào trong b nh b i v ì s qu n lý b nh o d a tr ên các trang mà Windows s d ng. Khi các sections c n p v ào trong b nh RAM chúng c c n kh p v i 4KB memory Pages, m i section s b t u tr ên 3 môt Page m i. M t tr ng trong PE header s thông báo cho h th ng bi t có bao nhi êu b nh c n c ri êng ra cho vi c ánh x trong file. B nh o c gi i thích ph n d i ây. Thu t ng b nh o (virtual memory) thay th vi c cho Software truy c p tr c ti p l ên b nh v t lý (physical memory), b x lý v à h i u h ành t o ra m t l p vô h ình (invisible layer) gi a chúng. B t k l n n ào m t c g ng c t o ra truy c p t i b nh , b vi x lý s tra c u m t page table bi t xem có nh ng Process mà a ch b nh v t lý ang th c s c s d ng. Nó s không ph i l à m t vi c làm thi t th c có m t table entry cho m i byte c a b nh (Page table s l n h n t ng b nh v t lý), vì v y thay th vi c b vi x lý phân chia b nh thành các trang. i u n ày có m t s l i th nh sau : 1. Nó cho phép s t o th ành c a nh ng không gian a ch ph c t p. M t không gian a ch l à m t page table c cô l p ch cho phép truy c p t i b nh m à thích h p v i ch ng tr ình hi n t i ho c process. Nó m b o r ng nh ng ch ng tr ình b cô l p , cách ly ho àn toàn v i các ch ng trình khác và m t khi x y ra l i khi n cho m t ch ng tr ình b crash th ì nó s không th nh h ng , h y ho i t i không gian a ch c a các ch ng tr ình khác . 2. Nó cho phép b vi x lý áp t nh ng lu t l nào ó i v i vi c b nh c truy c p th nào.Nh ng sections c òi h i , y êu c u trong PE file b i v ì nh ng khu v c khác nhau trong file c i x m t cách khác bi t b i ch ng tr ình qu n lý b nh khi m t module c n p. T i th i i m n p , ch ng tr ình qu n lý b nh thi t l p nh ng quy n truy c p l ên các trang b nh cho các sections khác nhau d a tr ên nh ng thi t l p c a chúng trong Section header. i u n ày s quy t nh r õ m t section ã cho là có th c c (readable) , có th ghi c (writeable) hay có th th c thi c (executable). i u n ày có ngh a l à m i section ph i c b t u tr ên m t trang m i. Tuy nhiên , kích th c tr ang m c nh cho h i u h ành Windows là 4096 bytes (1000h) và nó s l à lãng phí s p các file th c thi v ào m t ranh gi i 4KB Page trên a khi m à i u n ày s l àm cho chúng tr n ên quá l n h n m c c n thi t. B i v ì i u n ày, PE header có hai tr ng align ment khác nhau là : Section alignment và file alignment . Section alignment là cách các sections c s p trong b nh nh ã nói tr ên. Còn File Alignment (s d ng 512 bytes hay 200h) là cách các section c s p trong file trên a và là kích th c c a n hi u sector t i u quá trình loading (loading process). 3. Nó cho phép m t file ánh s trang (paging file) c s d ng tr ên c ng l u tr các trang m t cách t m th i t b nh v t lý khi chúng không c s d ng. L y ví d nh sau, n u m t ng d ng ã c n p nh ng ang trong t ình tr ng r nh r i (idle) ,không gian a ch c a nó có th c ánh trang b ên ngoài a t o ra không gian cho các ng d ng khác c n c n p vàp trong b nh RAM. N u nh t ình hình o l n , h i u h ành có th n p m t cách d d àng ng d ng u tiên tr l i b nh RAM v à h i ph c l i s thi h ành t i n i mà nó b ng ng l i . M t ng d ng c ng có th s d ng nhi u b nh h n là không gian hi n có c a b nh v t lý b i v ì h 4 th ng có th s d ng c ng nh là m t n i l u tr th c p b t c khi n ào mà b nh v t lý không còn không gian l u tr . Khi PE file ã c n p v ào trong b nh b i windows loader, phi ên b n trong b nh này c bi t n nh là m t module . a ch b t u n i mà ánh x file b t u c g i l à m t HMODULE . M t module trong b nh bi u di n t t c o n m ã , d li u v à toàn b t ài nguyên t m t file th c thi mà i u n ày là c n thi t cho s thi h ành khi mà thu t ng Proccess v c b n tham chi u t i m t không gian a ch cô l p m à có th c s d ng running nh là m t module. 2. The DOS Header : T t c các file PE b t u b ng DOS Header , v ùng này chi m gi 64 bytes u ti ên c a file. Nó c dùng trong tr ng h p ch ng tr ình c a b n ch y tr ên n n DOS, do ó h i u h ành DOS có th nh n bi t nó nh là m t file th c thi h p l v à thi hành DOS stub , ph n mà ã c l u tr tr c ti p sau Header. H u h t DOS stub th ng s d ng h àm 9 c a ng t int 21h hi n ra m t chu i kí t thông báo t ng t nh sau : "This program must be run under Microsoft Windows" nh ng nó có th l à m t ch ng tr ình DOS ang phát tri n m nh (full- blown DOS program) (Nói tóm l i l à DOS Stub ch l à m t ch ng tr ình DOS EXE nh hi n th m t thông báo l i th ng là nh trên, chính do header này c t n m u c a file , ch o nên các virus DOS có th lây nhi m vào PE image chính xác t i DOS stub . Tuy nhiên ch ng tr ình DOS Stub v n c òn c gi l i v ì lí do t ng thích v i các h th ng Windows 16- bit ) . Khi xây d ng m t ng d ng phát tri n tr ên n n t ng Windows , ch ng trì nh linker liên k t m t stub program m c nh có t ên g i l à WINSTUB.EXE vào trong file th c thi c a b n. B n có th ghi è , ph quy t cách h ành s c a ch ng tr ình linker m c nh n ày b ng cách thay th m t ch ng tr ình MS - DOS - based c a ri êng b n thay cho WINSTUB và s d ng STUB: m t t ùy ch n c a ch ng tr ình linker khi liên k t file th c thi. DOS Header là m t c u trúc c nh ngh a trong các file windows.inc ho c winnt.h (N u nh b n có m t ch ng tr ình d ch h p ng ho c m t tr ình biên d ch ã c cài t tr ên máy , b n s t ìm th y các file này trong th m c \ include \ ). Nó có 19 thành ph n (members) mà trong ó thành ph n magic và lfanew là áng chú ý. Trong PE file , ph n magic c a DOS Header ch a giá tr 4Dh, 5Ah ( ó chính là các kí t MZ , vi t t t c a Mark Zbikowsky m t trong nh ng ng i sáng t o chính c a MS- DOS), các giá tr n ày là d u hi u 5 thông báo cho chúng ta bi t ây l à DOS Header h p l . MZ là 2 bytes u ti ên mà b n s nh ìn th y trong b t k ì m t PE file nào , khi file ó c m b ng m t ch ng trình Hex editor. (Xem hinh minh h a phía d i). Nh b n ã nhìn th y trong h ình minh h a phía tr ên, b n th y r ng ph n lfanview là m t giá tr DWORD (t c l à m t Double Word = 4bytes) v à nó n m v trí cu i c ùng c a DOS Header và ng tr c c a n i b t u DOS Stub. Nó ch a offset c a PE Header, có liên quan n ph n u file (file beginning). Windows Loader s t ìm ki m offset n ày vì v y nó có th b qua Dos Stub và i tr c ti p t i PE Header. Hình minh h a trên ã giúp ích cho chúng ta r t nhi u khi nó ch cho ta th y r õ kích th c c a t ng ph n t . i u n ày cho phép chúng ta truy xu t nh ng thông tin m à chúng ta quan tâm d a tr ên vi c m s l ng các bytes t i m b t u c a section ho c m t i m có th nh n bi t c. Nh chúng ta ã n ói tr ên, DOS Header chi m 64 bytes u ti ên c a file ví d 4 hàng u c nh ìn th y trong m t ch ng tr ình Hex Editor trong hình minh h a d i ây.Giá tr DWORD cu i cùng tr c i m b t u DOS Stub ch a nh ng giá tr 00h 01h 00h 00h . ý n vi c re verse tr t t byte , i u n ày s giúp chúng ta bi t 00 00 01 00h là nh ng offset n i mà PE Header b t u. PE Header b t u v i ph n signatures c a nó l à 50h, 45h, 00h, 00h (Các kí t PE c i k èm b i các giá tr t n c ùng là 0) N u t i tr ng Signatu re c a PE Header , b n t ìm th y m t NE signature ó ch không ph i l à PE , thì lúc này b n ang l àm vi c v i môt file NE Windows 16- bit. C ng t ng t nh vây, n u b n th y l à LE n m t i Signature field th ì có ngh a l à nó cho ta bi t ó l à m t tr ình i u khi n thi t b o Window 3.x (VxD). Còn t i ó l à m t LX thì ó là d u hi u c a m t file cho OS/2 2.0 OKi t m ngh chút xíu !! Chúng ta s ti p t c th o lu n trong ph n ti p theo c a b ài vi t này. : ) 3. The PE Header : PE Header là thu t ng chung i di n cho m t c u trúc c t t ên là IMAGE_NT_HEADERS . C u trúc này bao g m nh ng thông tin thi t y u c s d ng b i loader. IMAGE_NT_HEADERS có 3 thành ph n và c nh ngh a trong file windows.inc nh sau : 6 Signature là m t DWORD ch a nh ng giá tr nh sau 50h, 45h, 00h, 00h (Các kí t PE c i k èm b i các giá tr t n cùng là 0). FileHeader bao g m 20 bytes ti p theo c a PE file ,nó ch a thông tin v s b trí v t lý v à nh ng c tính c a file. Ví d : s l ng các sections. Opti onalHeader luôn luôn hi n di n và c t o th ành b i 224 bytes ti p theo . Nó ch a thông tin v s Logic b ên trong c a m t file PE. Ví d : AddressOfEntryPoint . Kích th c c a nó c qui nh b i m t th ành ph n c a FileHeader. Các c u trúc c a nh ng th ành ph n n ày c ng c nh ngh a trong file windows.inc FileHeader c nh ngh a gi ng nh h ình minh h a d i dây : H u h t nh ng th ành ph n n ày không còn h u ích i v i chúng ta nh ng chúng ta ph i thay i th ành ph n NumberOfSections n u nh ch úng ta mu n th êm ho c xóa b t k ì sections nào trong m t PE File. Characteristics bao g m các c m à các c này xác nh nh ng th hi n chúng ta bi t c PE File m à chúng ta làm vi c l à m t file có th th c thi (executable) hay l à m t file DLL. Quay tr l i ví d c a chúng ta trong màn hình HexEditor, chúng ta có th t ìm th y NumberOfSections b ng vi c m m t DWORD và m t WORD (6 bytes) t ch b t u c a PE Header (T c l à giá tr DWORD chính l à Signature còn giá tr WORD chính l à Machine ) (note : tr ng NumberOfSections c s d ng b i viruses vì nhi u lí do khác nhau. L y ví d , tr ng n ày có th b thay i b ng cách viruses s gia t ng nó lên th êm m t section m i vào PE image và t o n virus body vào section ó Các h th ng Windows NT có th ch p nh n t i 96 sections trong m t PE file . Trên h th ng s d ng Win95 th ì không ki m tra k ph n section number ). . Xem hình minh h a d i ây : 7 i u n ày có th c ki m tra l i b ng cách s d ng b t c m t công c PE n ào. Ví d : Công c PEBrowse Pro Ho c s d ng m t công c khá n i ti ng l à LorDPE : 8 Ho c th m chí n u b n ang s d ng PEiD b n c ng có th ki m nghi m c i u n ày b ng cách nh n vào button là Subsystem : Chú ý : PEiD là m t công c c c k ì h u ích Ch c n ng chính c a nó là dùng scan Executable files và ch cho chúng ta bi t c lo i Packer mà File này c s d ng cho vi c nén và protect file. Ngoài ra i kèm v i PEiD l à m t Plugin không kém ph n quan tr ng, ó chính l à Krypto ANALyser . Khi b n s d ng Plug- in này thì nó s cho chúng ta bi t c file ó có s d ng nh ng m t m ã (cryptography) gì. Ch ng h n : CRC, MD4, MD5 ho c SHA v v Th m chí công c n ày c ng s d ng các danh sách c ng i dùng nh ngh a v các Packer signatures. Tóm l i PEiD l à công c u tiên c s d ng khi chúng ta b t tay v ào công vi c unpacking. Chúng ta ti p t c nghi ên c u t i thành ph n ti p theo l à OptionalHeader , nó chi m 224 bytes , trong ó 128 bytes cu i c ùng s ch a thông tin v Data Directory . Nó c nh ngh a gi ng nh hình minh h a d i ây : 9 AddressOfEntryPoint RVA ( a ch o t ng i) c a câu l nh u ti ên mà s c th c thi khi ch ng tr ình PE Loader s n sàng run PE File (thông th ng nó tr t i section .text hay CODE) . N u nh b n mu n làm thay i lu n g c a th t th c hi n , b n c n ph i thay i l i giá tr trong tr ng n ày thành m t RVA m i và do ó câu l nh t i giá tr RVA m i n ày s c th c thi u tiên. Các ch ng trình Packer th ng thay th giá tr n ày b ng giá tr decompression stub c a chúng, sau ó s thi h ành s nh y tr v i m b t u c a ch ng tr ình hay còn g i v i t ên thông d ng l à OEP. M t l u ý thêm n a là ch b o v StarForce thì CODE section s không có m t , hi n di n trong file trên a nh ng l i c ghi l ên b nh o tro ng quá trình th c thi. V ì th m à giá tr trong tr ng n ày là m t VA (xem th êm ph n ph l c s c c p bên d i). (note : ây th c s l à m t tr ng c t y u v à c c k ì quan tr ng b i v ì tr ng n ày s b thay i b i h u h t các ki u lây nhi m virus tr t i i m th c thi th c s c a virus code) ImageBase a ch n p c u tiên cho PE File. L y ví d : N u nh giá tr trong tr ng n ày là 400000h, PE Loader s c g ng n p file vào trong không gian a ch o m à b t u t i 400000h. T c u tiên ây có ngh a l à PE Loader không th n p file t i a ch ó n u nh có m t module n ào khác ã chi m gi vùng a ch này. 99 % các tr ng h p giá tr c a ImageBase luôn là 400000h SectionAlignment Ph n li ên k t c a các Sections trong b nh . . Khi f ile th c thi c ánh x v ào trong b nh , th ì m i section ph i b t u t i m t a ch o m à là m t b i s c a giá tr n ày. Giá tr c a tr ng n ày nh nh t là 0x1000(4096 bytes), nh ng trình các trình linkers c a Borland th ng s d ng các giá tr m c n h l n h n, ví d nh là 0x10000(64KB). L y ví d nh sau : N u giá tr t i tr ng n ày là 4096 (1000h), thì m i section ti p theo s ph i b t u t i v trí mà section tr c ó c ng v i 4096 bytes. N u section u ti ên là t i 401000h và kích th c c a nó l à 10 bytes, v y section ti p theo l à t i 402000h [...]... ng giá tr trong tr ng này tìm ki m ph n data trong section là âu trong file Characteristics - Bao g m các c ví d nh section này có th ch a executable code, initialized data , uninitialized data , có th c ghi ho c c (Xem thêm ph n ph l c) NOTE : Khi b n ti n hành tìm ki m m t section c th nào ó , nó có th ph t l toàn b PE Header và b t u phân tích section headers b ng cách tìm ki m section name trong... AddressOfFunctions (EAT) và tr ng NumberOfFunctions ph i ch a 40 giá tr tìm ki m m t hàm t tên c a nó, H i u hành (OS) u tiên s tìm nh ng giá tr c a NumberOfFunction và NumberOfNames trong Export Directory Ti p theo nó s d o qua các m ng c tr b i AddressOfNames (ENT) và AddressOfNameOrdinals (EOT) m t cách ng th i, tìm ki m tên c a hàm N u nh tên c a hàm c tìm th y trong ENT, thì giá tr t ng ng v i ph n t trong EOT... y ví d , trong file Dll 40 hàm c a chúng ta trên chúng ta mu n tìm ki m hàm X N u chúng ta tìm tên hàm X(gián ti p thông qua con tr khác) t i ph n t th 39 trong ENT , chúng ta nhìn vào ph n t th 39 c a EOT và th y 5 giá tr Sau ó chúng ta xét ph n t th 5 c a EAT tìm ki m RVA c a hàm X N u nh b n ã s n có s th t c a m t hàm , b n có th tìm th y a ch c a nó b ng cách i tr c ti p t i EAT M c dù có c a... trong Export Address Table c a file DLL các hàm hi n có trong ó Tr ng này c s d ng b i trình PE Loader vì v y nó có th tìm ki m hàm trong Export Address Table c a DLL m t cách nhanh chóng Tên t i ó mà ch m c c dùng , và n u nó không t ng ng thì m t phép tìm ki m nh phân c th c hi n tìm ki m tên Thông th ng giá tr này không c n thi t và m t vài trình linker t tr ng này là 0 Name1 bao g m tên c a imported... m t ch s c a hàm xác nh a ch c a nó và quy t nh nó có c forward hay là không M t khác nó g i LdrpNameToOrdinal s d ng m t phép tìm ki m nh phân trên export table xác nh ch s m t cách nhanh chóng N u hàm không c tìm th y thì nó tr v STATUS_ENTRYPOINT_NOT_FOUND, ng c l i n u tìm th y thì nó thay th entry trong IAT b ng entry point c a API và tr v cho LdrpSnapIAT khôi ph c l i memory protection nó ã thay... Disk N u nh các b n mu n tìm ki m thông tin v các hàm c imported t file DLL ("foo" from DLL "bar",), u tiên các b n tìm RVA c a Import Directory t Data Directory, tìm a ch ó trong ph n raw section data và bây gi b n có m t m ng c a các IMAGE_IMPORT_DESCRIPTORs L y thành viên c a m ng này mà liên quan t i bar.dll b ng cách ki m tra các strings c tr t i b i tr ng Name Khi b n ã tìm th y IMAGE_IMPORT_DESCRIPTOR... con tr hàm mà ch a a ch c a các exported functions Hai m ng th hai là (ENT và EOT) ch y song song theo th t s p x p t ng d n d a trên tên c a các hàm m t phép tìm ki m nh phân cho tên c a hàm có th c th c hi n và s ak t qu là s th t c a hàm ó c tìm th y vào trong m t m ng khác.S th t ch n gi n là m t ch s bên trong EAT i v i hàm ó Tr c ây m ng EOT t n t i nh là m t liên k t gi a tên và a ch , nó không... loader Trình loader l p l i thông qua m i con tr t i các hàm và tìm ki m a ch c a hàm mà m i c u trúc tham chi u t i Trình loader sau ó s vi t l i con tr t i IMAGE_IMPORT_BY_NAME b ng a ch c a hàm Các m ng c a nh ng RVAs trong Import Name Tables gi nguyên không b thay i vì v y n u c n thi t tìm tên c a các hàm imported , trình PE loader có th v n tìm th y chúng M c dù IAT c tr t i b i entry number 12 trong... Table xác nh c v trí c a m t directory c bi t, b n xác nh rõ a ch t ng i t data directory Sau ó s d ng a ch o xác nh section nào directory trong M t khi b n phân tích section nào ch a directory , thì Section Header cho section ó sau ó s c s d ng tìm ra offset chính xác 5 The Section Table : Section Table là thành ph n ti p theo ngay sau PE Header.Nó là m t m ng c a nh ng c u trúc IMAGE_SECTION_HEADER,... c thi M i section có m t Header và m t body (d li u thô raw data : là d li u ch a cx lý ho c ch a c nh khuôn th c, nó ch a c s p x p, biên t p s a ch a ho c ch a c bi u di n l i d i d ng d truy tìm và phân tích) Nh ng Section Headers thì c ch a trong Section Table nh ng nh ng Section Bodies l i không có m t c u trúc file c ng r n Chúng có th c s p x p h u nh theo b t kì cách nào khi m t trình linker . PEBrowse Pro http://www.smidgeonsoft.prohosting.com/download/PEBrowse.zip PeiD http://www.secretashell.com/codomain/peid/download.html LordPE http://mitglied.lycos.de/yoda2k/LordPE/LPE - DLX.ZIP. trong PE header s thông báo cho h th ng bi t có bao nhi êu b nh c n c ri êng ra cho vi c ánh x trong file. B nh o c gi i thích ph n d i ây. Thu t ng b nh o (virtual memory) thay th vi. (Các kí t PE c i k èm b i các giá tr t n c ùng là 0) N u t i tr ng Signatu re c a PE Header , b n t ìm th y m t NE signature ó ch không ph i l à PE , thì lúc này b n ang l àm vi c v i môt

Ngày đăng: 02/07/2014, 15:05

Từ khóa liên quan

Mục lục

  • Lời mở đầu

  • 1. Cấu trúc cơ bản

  • 2. The DOS Header

  • 3. The PE Header

  • 4. The Data Directory

  • 5. The Section Table

  • 6. The PE File Sections

  • 7. The Export Sections

  • 8. The Import Section

    • The Import Directory

    • Functions Exported by Ordinal Only

    • Bound Imports

    • The Bound Import Directory

    • 9. The Windows Loader

      • What The Loader Does

      • 10. Navigating Imports

        • Navigating Imports on Disk

        • Navigating Imports in Memory

        • 11. Adding Code to a PE File

          • Adding to an existing section

          • Enlarging an Existing Section

          • Adding a New Section

          • 12. Adding Imports to an Executable

            • Step 1 - Create space for a new IID

            • Step 2 - Add the new DLL and function details

Tài liệu cùng người dùng

Tài liệu liên quan