本文摘自 https://www.zhangshilong.cn/work/229504.html
今天帮人修改一个网站。asp.net的,遇到一个奇怪的问题,某个页面的title总是改不掉,以前遇到这种问题,一般是为了防止盗版,写在某段js里的混淆代码。或是发起请求从别的地方获取的title。
所以采用了两种方法调试:
文件搜索title名,如果写在js里肯定可以被搜索到,但是没有。查看页面请求,也没有异常请求。
由于刚入门.net,没有意识到可以静态调试,好方便。所以在cs文件里又修改了this.title。然后打了断点,调试发现断点没有起作用,然后提示文件中存在副本。果然有dll文件存在,果断删掉,删掉之后无法运行了,多处报错。我猜应该是生成dll后又修改了源码,把一些重要部分删掉了。这就很尴尬了,只好反编译dll文件。搜索了一下,需要几个工具。
反编译工具ILSpy.exe:是个很不错的反编译软件,而且是免费了;微软的工具ildasm.exe:这个是把DLL生成IL文件的一个软件,是微软自带了;可以在C:\Program Files\Microsoft SDKs\Windows\v7.0A\gxdxy找到该软件;
微机的工具ilasm.exe:这个是把IL文件重新生成DLL的功能,可以在C:\Windows\Microsoft.NET\Framework\v4.0.30319找到该软件;
使用第一个ILSpy.exe就可以查看dll文件内容了。
这个时候就可以手动copy下缺失的代码来了。
不过我打算试一下直接修改dll,所以继续
在C:\Program Files\Microsoft SDKs\Windows\v7.0A\gxdxy找到ildasm.exe,使用这个软件打开dll,然后生成il和res文件。
3.使用文本编辑器修改il文件,需要了解一点规律,因为我是修改title,所以copy了另一个title复制过去就好了 。
4.ilasm.exe 源文件名.il /output=生成文件名.dll /RESOURCE=源资源文件名.res /dll 若不存在资源文件则不需要/RESOURCE=源资源文件名.res