修改.NET程序或DLL的几种方法.doc

修改.NET程序或DLL的几种方法.doc

ID:57307971

大小:70.00 KB

页数:2页

时间:2020-08-11

修改.NET程序或DLL的几种方法.doc_第1页
修改.NET程序或DLL的几种方法.doc_第2页
资源描述:

《修改.NET程序或DLL的几种方法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、修改.NET程序或DLL的几种方法本文目的是回答一个朋友关于修改程序集的留言,都是比较简单的修改方式,不涉及脱壳等。1:利用ILASM和ILDASM我们先建立如下测试程序:namespaceTest{classProgram{staticvoidMain(string[]args){strings="helloworld!";Console.WriteLine(s);Console.ReadKey();}}}编译之后得到Test.exe打开Visualstudio提供的命令行工具,它已经默认的设置好了相关的环境变量,输入如下命令:ildasmtes

2、t.exe/OUT=test.il将得到两个文件:test.il和test.res,用记事本打开test.il,将看到如下IL代码:IL_0000:ldstr"helloworld!"IL_0005:stloc.0IL_0006:ldloc.0IL_0007:callvoid[mscorlib]System.Console::WriteLine(string)IL_000c:callvaluetype[mscorlib]System.ConsoleKeyInfo[mscorlib]System.Console::ReadKey()IL_0011:p

3、opIL_0012:ret我们将第一行修改为:IL_0000:ldstr"helloworld!--hasbeenmodified"当然也可以增加一些函数的调用和删除我们不想要的函数,如果对IL不熟悉,可以先在VS中写好想要的代码,反编译为IL,然后直接拷贝过来。修改完后,点保存,在命令行运行如下命令:ilasm/OUT=test2.exetest.il如果语法没有错误,将看到如下提示SourcefileisANSIAssembledmethodTest.Program::MaAssembledmethodTest.Program::.cCreat

4、ingPEfileEmittingclasses:Class1:Test.ProgramEmittingfieldsandmethods:GlobalClass1Methods:2;Emittingeventsandproperties:GlobalClass1WritingPEfileOperationcompletedsuccessfully证明已经修改成功,我们可以直接运行test2.exe,发现程序已经按我们修改的输出了:helloworld!--hasbeenmodified.2.利用Reflector的插件Reflexil直接用IL修改

5、比较麻烦,不小心很容易出错,幸好我们有JbEvain编写的Reflexil。Reflexil基于Mono.Cecil,是一个强大的程序集编辑器。下载完后打开Reflector-->View-->Add-Ins-->Add-->选择Reflexil.dll,以后就可以直接用Reflector的Tools打开了。开始正式的修改,用Reflector打开test.exe,打开Reflexil,选择Main函数,可以发现IL代码显示在下方了,可以点击右键Edit,Delete,Create等操作,没错,你还发现了Replaceallwithcode,通过这

6、个可以直接用C#代码直接修改。其它的功能多试试就明白了,另外点击类的时候,还可以修改类的访问权限等,比如将private改成public。我们选中第0行,直接选择Edit,将Operand后面的文本修改为:helloworld!--modifiedbyreflexil.点击Update,在Reflector中选中Test.exemodule,Saveastest3.exe。执行test3.exe,就看到我们的修改生效了。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。