日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Reflector.FileDisassembler反编译DLL

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Reflector.FileDisassembler反编译DLL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自http://www.cnblogs.com/wuliangbo

Reflector for .NET 下載地址:http://www.aisto.com/roeder/dotnet/

Reflector.FileDisassembler.dll cs文件的工具下載地址 : http://www.denisbauer.com/Downloads/Reflector.FileDisassembler.zip

1.下載Reflector.FileDisassembler.zip,解壓后得到一些文件,其中Reflector.FileDisassembler.dll是已經編譯好的,其它是它源碼;

2.打開Reflector,在view菜單下的Add-Ins,將Reflector.FileDisassembler.dll添加到里面;

3.open一個dll,exe,或mcl為后綴的文件,當然要支持.net的

4.選擇要反編譯的dll(會在列表中顯示),選擇Tools->File Disassembler,在右窗口會出現設置存放源碼位置的路徑,點擊產生就可以了!

但是使用FileDisassembler編譯成CS文件會有一個Bug, 就是變量、類和名稱空間有時會重命名。

幸好FileDisassembler發布的時候帶有源代碼,也就省得去Reflect一把了,畢竟機器生成的臨時變量名看起來還是很不爽的。修復這個bug很簡單,修改了一下CreateFile方法,同時添加了一個GetUniqueFileName方法,源代碼如下:

private?StreamWriter?CreateFile(string?directory,?string?fileName)?
{?
????directory?
=?directory.Replace("<",?"_");?
????directory?
=?directory.Replace(">",?"_");?
????directory?
=?directory.Replace(":",?"_");?
????directory?
=?directory.Replace("|",?"_");?
????directory?
=?directory.Replace("?",?"_");?
????directory?
=?directory.Replace("*",?"_");?
????directory?
=?Path.Combine(this.outputDirectory,?directory);?
?
????ILanguage?language?
=?this.LanguageManager.ActiveLanguage;?
????
string?fileExtension?=?language.FileExtension;?
?
????fileName?
=?fileName.Replace("<",?"_");?
????fileName?
=?fileName.Replace(">",?"_");?
????fileName?
=?fileName.Replace(":",?"_");?
????fileName?
=?fileName.Replace("|",?"_");?
????fileName?
=?fileName.Replace("?",?"_");?
????fileName?
=?fileName.Replace("*",?"_");?
????fileName?
=?Path.Combine(directory,?fileName);?
????fileName?
=?Path.ChangeExtension(fileName,?fileExtension);?
?
????fileName?
=?GetUniqueFileName(fileName);?
????
this.WriteLine(fileName);?
?
????directory?
=?fileName.Substring(0,?fileName.LastIndexOf('""'));?
????
if?(!Directory.Exists(directory))?
????
{?
????????Directory.CreateDirectory(directory);?
????}
?
?
????StreamWriter?writer?
=?new?StreamWriter(fileName);?
????
return?writer;?
}
?
?
private?Hashtable?fileNames?=?new?Hashtable();?
?
private?string?GetUniqueFileName(string?fileName)?
{?
????
string?strExtension?=?Path.GetExtension(fileName);?
????fileName?
=?fileName.Replace(strExtension,?"");?
?
????
string?_fileName?=?fileName.ToLower();?
????
bool?bFirstRename?=?true;?
????
while(fileNames.Contains(_fileName))?
????
{?
????????
string?existFileName?=?(string)fileNames[_fileName];?
????????
string?[]?efnParts?=?existFileName.Split(new?char[]?{?'""'?});?
????????
string?[]?fnParts?=?fileName.Split(new?char[]?{?'""'?});?
????????
for?(int?i?=?0;?i?<?fnParts.Length;?++i)?
????????
{?
????????????
if?(efnParts[i]?!=?fnParts[i])?
????????????
{?
????????????????
if?(bFirstRename)?
????????????????
{?
????????????????????fnParts[i]?
+=?'_';?
????????????????????bFirstRename?
=?false;?
????????????????}
?
????????????????fnParts[i]?
+=?'x';?
????????????????
break;?
????????????}
?
????????}
?
????????fileName?
=?string.Empty;?
????????
for?(int?i?=?0;?i?<?fnParts.Length;?++i)?
????????
{?
????????????fileName?
+=?'""'?+?fnParts[i];?
????????}
?
????????fileName?
=?fileName.Substring(1);?
????????_fileName?
=?fileName.ToLower();?
????}
?
????fileNames[_fileName]?
=?fileName;?
????
return?fileName?+?strExtension;?
}

轉載于:https://www.cnblogs.com/ceci/archive/2009/08/21/1551703.html

總結

以上是生活随笔為你收集整理的使用Reflector.FileDisassembler反编译DLL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。