lnk在Windows平臺下是快捷方式,能夠指向其餘目錄下的文件,而且能夠傳遞參數。如今有些惡意活動會惡意利用lnk,執行惡意代碼。shell
關於lnk的格式,能夠使用010 editor的模板功能,快速識別。code
若是鼠標右鍵建立快捷方式,能夠在目標中輸入執行的命令,可是字符串最長爲260字節。blog
能夠將過長的命令放在其餘位置去執行,也能夠對lnk自己進行修改,從而去除字符數限制。字符串
如今的lnk啓動命令很容易被攔截,不過能夠了解一下。it
能夠簡單粗暴地右鍵建立一個lnk文件,拖進010 editor,用模板跑一下。io
能夠看到實際上COMMAND_LINE_ARGUMENTS
的長度能夠支持到16-bit大小(0xffff),修改爲大於260的值,以後插入增大字節數量的2倍(由於支持的是Unicode格式字符)空白空間,在其中寫入命令。模板
也能夠在中間加大量空格,最後末尾加上惡意命令,這樣限於圖形窗口中的260顯示大小,能夠必定程度上隱藏自身。程序
假如不修改圖標的話,快捷方式的圖標將顯示爲指向的可執行程序的圖標,能夠在右鍵菜單中經過"更改圖標"。im
能夠選擇系統dll中攜帶的文件圖標,好比說%systemroot%\\system32\\shell32.dll
。img
在lnk文件中的變化主要體如今ShellLinkHeader
的LinkFlags
結構體中的HasIconLocation
標誌位置爲1;IconIndex
爲使用的icon在目標中的下標;最後是緊接在COMMAND_LINE_ARGUMENTS
後的ICON_LOCATION
字段,lnk使用的icon所在的文件,本文中是「%systemroot%\system32\shell32.dll」。