c#调用dll,创建实例时报实列为空
本帖最后由 kelin123 于 2023-2-18 10:32 编辑我逆向拿到c#编写的dll中的类,然后在引入该dll文件创建类的实例时报为null,有没有大佬帮忙看看{:301_977:}{:301_977:}
kelin123 发表于 2023-2-18 14:58
对的啊,就new实例的时候就是空的了
排查排查依赖项看看,有可能构造函数那里有某个变量是空的 :rggrg 大概率就是你用的这个DLL又引用了其他的,或DLL里的类自身初始化的时候 有些数据拿不到或者初始配置不对。
你有耐心可以看看堆栈或者用dnspy去调你写出来的程序,单步进去跟一跟 看看哪儿初始化出问题 有没有可能,这个DLL里又引用了其他DLL? weikun444 发表于 2023-2-18 12:31
有没有可能,这个DLL里又引用了其他DLL?
我已经全部引入进来了{:301_977:} 引用路径对吗,全局搜索能找到这个类吗 asasascao 发表于 2023-2-18 14:32
引用路径对吗,全局搜索能找到这个类吗
对的啊,就new实例的时候就是空的了{:301_983:} pjy612 发表于 2023-2-18 23:10
大概率就是你用的这个DLL又引用了其他的,或DLL里的类自身初始化的时候 有些数据拿不到或者初始配置 ...
应该是这个问题了,感谢大佬{:301_997:} asasascao 发表于 2023-2-19 17:46
排查排查依赖项看看,有可能构造函数那里有某个变量是空的
好的好的,感谢大佬{:301_997:} kelin123 发表于 2023-2-19 21:53
应该是这个问题了,感谢大佬
当然 也不排除 是 dll 脱壳或反混淆之后 内部实现有地方出了问题。比如有的dll de4dot 之后 可能属性 的 get set 识别会有问题。
如果你开刀的是nuget的dll,方便调试 可以改完后直接替换 本地 nuget目录对应里面的 文件(当然记得备份原版)。
或者用 FrameWork 环境 引用相关 dll 然后 编译后不复制DLL 把自己改好的DLL放到 debug。
当然 最好的 先是 正常引用原版。然后 能成功之后 再逆向替换掉。
这样 绕的圈少一点。。。
页:
[1]
2