使用dnspy修改一个dll文件保存后,使用出现异常,找不到思路,求指导
这个dll文件名为WinSrtpTCP,我用dnspy在IL代码中,按需要做了简单修改:一个条件判断,我把条件改成了一直为true。保存模块后,在winform使用中,出现如下异常:
System.TypeInitializationException
HResult=0x80131534
Message=“<Module>”的类型初始值设定项引发异常。
Source=TcpClient
StackTrace:
在 TcpClient.Form1..ctor() 在 D:\DotNet_Decompile\WinSrtpTCP V32\TcpClient C#2010\Form1.cs 中: 第 29 行
在 TcpClient.Form1.get_Default() 在 D:\DotNet_Decompile\WinSrtpTCP V32\TcpClient C#2010\Form1.cs 中: 第 41 行
在 TcpClient.My.MyApplication.OnCreateMainForm() 在 D:\DotNet_Decompile\WinSrtpTCP V32\TcpClient C#2010\Properties\Application.Designer.cs 中: 第 45 行
在 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
在 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
在 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
在 TcpClient.My.MyApplication.Main() 在 D:\DotNet_Decompile\WinSrtpTCP V32\TcpClient C#2010\Properties\Application.Designer.cs 中: 第 29 行
此异常最初是在此调用堆栈中引发的:
lHjB9Vy1QOoUU6UJMk.PJZV3XpvvQEUI0ZVFh.TnqRDCsNoM()
<Module>.<Module>()
内部异常 1:
Exception: WinSrtpTCP is tampered.
详见如下图片
原dill文件和winform源码见下网盘地址
链接:https://pan.baidu.com/s/10XVZbP913p1VrrBktYlsYA?pwd=xxp1
提取码:xxp1
--来自百度网盘超级会员V6的分享
请大神们指导我,多谢!!!
本帖最后由 3yu3 于 2024-6-9 19:47 编辑
WinSrtpTCP is tampered
程序用NET Reactor加壳,修改后触发了壳的antiTamper保护 第一次见直接修改代码的 啥字体啊,看起来还不错。 hl301 发表于 2024-6-9 22:24
啥字体啊,看起来还不错。
正好相反,我感觉这个字体就像是墨迹未干,看着很难受 SoftCracker 发表于 2024-6-9 23:20
正好相反,我感觉这个字体就像是墨迹未干,看着很难受
这个字体我之前使用过,在IDE里面看起来还不错,这样看就差点意思了。 从提供的信息来看,出现异常的原因很可能是你对 WinSrtpTCP 这个 DLL 文件的修改导致了其内部逻辑出现错误。
具体来说,你将一个条件判断修改为一直为 true ,这可能破坏了该模块正常的初始化流程或运行逻辑,从而引发了类型初始值设定项异常。并且从内部异常提示“WinSrtpTCP is tampered”(WinSrtpTCP 被篡改)也可以看出,系统检测到了这个文件被修改且这种修改导致了问题。
举例来说,假设原本的条件判断是用于确保某些关键资源的正确加载或配置,如果将其改为一直为 true ,可能导致在不应该执行某些操作或使用某些不正确配置的情况下进行了操作,进而引发一系列异常。要解决这个问题,你需要仔细检查你的修改是否合理,并确保没有破坏文件原有的关键逻辑和功能 遗城落梦Ω 发表于 2024-6-10 21:10
从提供的信息来看,出现异常的原因很可能是你对 WinSrtpTCP 这个 DLL 文件的修改导致了其内部逻辑出现错误 ...
一本正经,胡说八道。防篡改检测跟你是修改哪个条件判断有什么关系?难不成加壳后还每个函数复制一份来比较你是否修改了特定代码?还说“将一个条件判断改为true,这可能破坏了该模块正常的初始化流程或运行逻辑”,这不是胡扯嘛,异常是在被修改的代码被执行之前就已经引发了!
几乎所有壳的防篡改功能的实现方式都差不多:计算文件(一般是文件的一部分)的哈希值,用加壳时保存的数据来验证,不对就引发异常。跟你具体修改的是哪个函数或者哪个条件判断有何关系? 遗城落梦Ω 发表于 2024-6-10 21:10
从提供的信息来看,出现异常的原因很可能是你对 WinSrtpTCP 这个 DLL 文件的修改导致了其内部逻辑出现错误 ...
你的这个思路我考虑过,所以我在IL代码中修改的时候,只增加了一条NOP指令(无任何效果的空指令)。保存模块后,使用修改后的dll,还是报那个异常。如果直接修改反编译的C#代码,编译无法通过。我把反编译的保存为C#项目,发现有太多错误无从下手。所以就从IL层面改了。改的那个逻辑,屏蔽了为false的语句执行,为false时是弹出对话框提示该dll的试用时间到了联系开发者之类的。改这个逻辑应该是没问题的。 3yu3 发表于 2024-6-9 19:37
WinSrtpTCP is tampered
程序用NET Reactor加壳,修改后触发了壳的antiTamper保护
如果这样的话,这就难搞了
页:
[1]
2