文章目錄
- 前言
- 過程
- dll/exe
- sys
- 代碼判斷
- 總結
前言
過程
dll/exe
參考MSDN IMAGE_FILE_HEADER
sys
參考MSDN optional_header
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQDOxEzX3xCZlhXam9VbsUmepNXZy9CXwJWZ3xCdh1mcvZ2Lc1zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsAzMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1AjNykjN0IWZ5EGO5kDNzYzXzEzMxEDM1EzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
代碼判斷
# 獲得pe檔案類型 dll/exe/sys等
def get_file_type(binary) :
file_type = -1
if binary.header.has_characteristic(lief.PE.HEADER_CHARACTERISTICS.DLL) == True:
# dll
print("dll")
else:
# sys
if binary.get_import("ntoskrnl.exe") \
and binary.optional_header.subsystem == lief.PE.SUBSYSTEM.NATIVE:
print("sys")
# exe
else:
print("exe")