.Net官方的MSIL工具,你學(xué)會(huì)了嗎?
前言
很多人用第三方工具修改(實(shí)際上修改了也沒用,現(xiàn)代化加密工具是直接hook JIT)MSIL
比如dnspy/ilspy/dotpeek/Reflector 等等,這些工具看似不錯(cuò),實(shí)際上完全不經(jīng)打,如果把程序集進(jìn)行虛擬化,這些工具完全無法展示出來。本篇還是來看下比較能打的ILDASM和ILASM.它是微軟官方工具。
概念
ILDASM可以把托管的DLL反編譯成IL代碼,把它導(dǎo)出.IL后綴名的文件,修改這些IL文件之后,通過ILDASM把IL文件重新編譯成DLL或者Exe。
1.路徑:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe
ilasm的路徑
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe
2.操作
打開ILDASM之后,把DLL拖進(jìn)去。然后點(diǎn)擊菜單欄-》文件-》轉(zhuǎn)儲(chǔ)-》轉(zhuǎn)出選項(xiàng)不要?jiǎng)?》確定-》選擇路徑填寫導(dǎo)出名稱(注意這里的后綴名是.il)。
在導(dǎo)出之后的路徑,它會(huì)生成.il和.res兩個(gè)后綴名的文件。把.il的后綴名文件通過記事本把它打開,然后修改下。修改了之后就可以用ilasm通過如下命令重新組裝成DLL或者Exe:
比如路徑是:C:\Users\Administrator\Desktop\dnguard_iltest導(dǎo)出名稱是:test。
運(yùn)行如下命令:
D:\Visual Studio\IDE>ilasm "C:\Users\Administrator\Desktop\dnguard_iltest\test.il" "C:\Users\Administrator\Desktop\dnguard_iltest\test.res" /output="C:\Users\Administrator\Desktop\dnguard_iltest\test.dll"
Microsoft (R) .NET Framework IL Assembler. Version 4.8.9105.0
Copyright (c) Microsoft Corporation. All rights reserved.
Assembling 'C:\Users\Administrator\Desktop\dnguard_iltest\test.il' to EXE --> 'C:\Users\Administrator\Desktop\dnguard_iltest\test.dll'
Source file is UTF-8
ilasm后面帶上.il和.res文件的路徑 /output后面帶上輸出的dll或者exe文件的路徑即可。