强命名相当是一种签名,可以保证软件的完整性;
一、识别强命名
使用dnspy打开软件,修改不了类的方法,且浏览发现有模块的文件头包含stringname的说明,就是使用了强命名验证;
二、解决方法
加密相关的一般都是调用系统的API,dll命令一般为cry | clr 开头的dll;
我们使用OD运行C#的程序,看看dll的载入记录,着重留意cry | clr 开头的dll ;
将所有怀疑的dll 和相应的导出函数都下断点,运行,一般都会有一个会断下来;
强命名验证一般是clr.dll 中的StringNameSignatureVerification() .
我们可以写一个hook,将此函数直接返回ture,这样强命令验证就能通过;
注意,去强命名的钩子函数最好在加载clr.dll 之前就勾上exe;