A15.B105版大背包下线丢东西怎么改“Assembly-CSharp.dll”

A15.B105版大背包下线丢东西怎么改“Assembly-CSharp.dll”,第1张

反编译netdll自己公司的程序,年代久了,没有源代码,修改一些小地方,只能反编译,还好当时没有混淆。先ildasm反编译。删除publickey=()这段,去原来签名。然后再用找要改的IL,这个看IL的水平了,这些以前都弄过,不过自己程序有pfx签名,cs的在vs上关联下编译的时候自动弄。一直不知道ilasm怎么弄,网上介绍的都是老的snk签名法,和含有cer的pfx签名。终于在网上找到了SN-pMyCertificatepfxMyCertificate-publickeysnkILASMASQLServiceil/dll/resource=ASQLServiceres/key=MyCertificate-publickeysnkSN-RASQLServicedllMyCertificatepfx大致是先把pfx签一个公钥的snk,然后生成dll,最后签入原来key改好后用ILSPY或者Reflector看看。--------------------------------------------------------------------------------------------------------Reflector的reflexil16的时候改了,保存后有时候运行不起来。方便成cs的再编译还要引用一堆dll有点烦~还是il编译好,一个文件搞定也不用引用什么。

不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没有开发环境,紧急情况下,可以用reflector + reflexil 临时直接修改dll代码,然后重编译,替换原来的文件(当然:代码未混淆的情况下,这个也可以用来搞破解,这不在本文讨论之列)

反编译net dll
自己公司的程序,年代久了,没有源代码,修改一些小地方,只能反编译,还好当时没有混淆。
先ildasm 反编译。
删除 publickey = ( ) 这段,去原来签名。

然后再用找要改的IL,这个看IL的水平了,这些以前都弄过,不过自己程序有pfx签名,cs的在vs上关联下编译的时候自动弄。
一直不知道ilasm怎么弄,网上介绍的都是老的snk签名法,和含有cer的pfx签名。
终于在网上找到了

>NET 三种反编译方式
这里顺便介绍下我所知道的三种反编译回去的方式:
直接修改IL代码(当然,这比较难,需要熟悉IL汇编,但是也是最实用的。也许我会在以后的文章详细阐述)
使用Reflector进行整个代码项目的导出,然后用VS进行修改后编译(在大型项目中,如果有很多其他的dll引用,也许会让你寸步难行,无法使用VS编译通过,所以大型项目直接用IL汇编反编译关键代码即可)
使用Reflexil插件进行直接反编译(似乎这种要比第二种方法要好的多,至少很省事。其实实际使用起来也不是特别的方便,本文会进行一个稍微详细的使用介绍)
Reflexil 安装
在此之前你需要先去下载Reflector和Reflexil插件,这些你可以去百度或谷歌上面下载到。(如果你不会…那下面的文章不用看了)
下载好之后首先安装Reflector程序,安装完毕后在把Reflexil插件放到Reflector程序目录下面(其实是个dll文件而已),如下图所示
Reflexil_Install
然后打开Reflector,在工具栏依次点击 Tools -> Add-Ins ,如下图所示
Reflexil_Install2
然后在d出的界面中点击+号选择刚刚拷贝到Reflector中的Reflexil插件的dll文件,如下图所示
Reflexil_Install3然后点击Close ,此时程序的 Tools 栏目下已经有了 Reflexil 插件选项。
要反编译的示例项目
本文反编译一个Winform程序(当然,你也可以反编译NET 的其他 dll 文件),程序如下所示:

Reflector Winform
代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnTest_Click(object sender, EventArgs e)
{
MessageBoxShow("你好");
}
}
我们把这个exe程序进行反编译吧
开始反编译工作
首先在Reflector工具栏中依次点击 Tools -> Reflexil 打开 Reflexil 的窗口,如下图所示
Open Reflexil然后打开你要反编译的程序集,我们编译自己写的Winform的exe程序作为测试吧,如下图所示。
Reflector Winform2然后我们选中我们要反编译的方法,在Reflexil插件中进行反编译,如下图所示。
Reflector Winform3可以直接在“你好”的那一栏进行点击右键选择 “Edit” 进行直接的编辑
也可以在图中的这个选项卡( Instructions ) 中的表的任意一栏点击右键选择,如下图所示
Reflexil Edit你可以直接Edit编辑单个文本,也可以Replace all with code 编辑整个class的内容。
如果你选择的是Replace all with code 来编辑整个内容的话,你需要在编辑完成后,在界面的左下角点击Complile 做编译 *** 作。
但是似乎这个插件的编辑整个class的功能有缺陷,有些代码识别不出来。所以还是看情况使用吧,如果Replace all with code不行,就直接选 Edit 编辑我们所选的内容即可。
Reflexil Edit2修改完成后,就万事俱备 只欠东风了。
最后一步 *** 作,依次在Reflector项目中点击右键 -> 选择 Reflexil -> 选择 Save as
保存即可,这样就完成了修改代码,编译成功。如图
Reflexil Save然后就ok了,运行看看:
Reflector Result其实很简单,只是我写的可能稍微太细了点儿。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12612886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存