程序集的强命名的key丢失,再换了一个key以后,发现原有的程序依然保留了对原有程序集的依赖,请问怎么处理这种事情

burn3tt 2008-01-09 05:57:34
假设A是丢失强命名的程序集,B程序集在运行的时候并不能识别出更换key后的A,提示这个错误:
Could not load file or assembly 'MYASSEMBLY' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

整体的project是没办法再次编译了,因为原文件大都丢失,只剩dll了。
...全文
213 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lextm 2008-01-11
  • 打赏
  • 举报
回复
这种事情没法处理,只能找到源代码重新编译。你可以修改public key,人家黑客也可以修改的。所以报错也是为了安全起见。如果你找不到源代码,那就没办法了。
burn3tt 2008-01-11
  • 打赏
  • 举报
回复
@BlueDog,@Q_282898034 :
我已经生成了一个公钥,是在反编译出来的mainfest文件中的publickeytoken
公司上不了QQ,也没有外发邮件的权限:(
神奇的章鱼哥 2008-01-11
  • 打赏
  • 举报
回复
如果这样可以的话,强名称可以随便破译
burn3tt 2008-01-11
  • 打赏
  • 举报
回复
@Q_282898034
Thank you all the same~~i think i've find the way~~:-)
Q_282898034 2008-01-11
  • 打赏
  • 举报
回复
那我帮不了你了,说得话很麻烦,而且也不知道我所想象的和你的实际情况是否一样
BlueDog 2008-01-10
  • 打赏
  • 举报
回复
用SN.EXE可以生成一个public key token
Q_282898034 2008-01-10
  • 打赏
  • 举报
回复
你加我QQ,把程序传来我看看
burn3tt 2008-01-10
  • 打赏
  • 举报
回复
@BlueDog,Q_282898034:
我在其中找到了.publickeytoken,但是是类似于楼上那种2*8的key,B7 7A 5C 56 19 34 E0 89 ,类似于这种b77a5c561934e089怎么转换成.publickeytoken的格式?
Q_282898034 2008-01-09
  • 打赏
  • 举报
回复
这个有难度,你要不试试C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe
先读取程序集 A ,看 MANIFEST 程序集清单。
找到对程序集 B 的引用。
.assembly extern B
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}

修改公匙标记为现在的那个。

修改不了?转储(相当于另存为)il文件,然后用记事本修改,然后用ilasm.exe编译。
BlueDog 2008-01-09
  • 打赏
  • 举报
回复
一个程序集B调用程序集A有几种可能
A)B中引用A,然后调用A的类或方法,那么B中程序集清单一定会有A的程序集名称及public key
那么先提出的解决办法应该是可行的
B)如果B是采用load之类的,并指定A对应的完整名称,那么可能只能去修改代码了
你可以试一下Reflector的反编译工具,并下一个反编译工程生成器Reflector.FileDisassembler.zip
它可以生成对应C#或VB.net工程,然后重新编译B
burn3tt 2008-01-09
  • 打赏
  • 举报
回复
@BlueDog
在il中,我也查找不到A中的key值
BlueDog 2008-01-09
  • 打赏
  • 举报
回复
应该可以考虑修改B程序集的程序集清单,将A程序集的新KEY值,写入到B清单中,以替代原有的Key值
具体可以用ILDASM先查出原来A程序集的KEY值,然后用UltraEdit来直接在B中查找此KEY值进行修改

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧