kelin123 发表于 2023-2-18 10:31

c#调用dll,创建实例时报实列为空

本帖最后由 kelin123 于 2023-2-18 10:32 编辑

我逆向拿到c#编写的dll中的类,然后在引入该dll文件创建类的实例时报为null,有没有大佬帮忙看看{:301_977:}{:301_977:}

asasascao 发表于 2023-2-19 17:46

kelin123 发表于 2023-2-18 14:58
对的啊,就new实例的时候就是空的了

排查排查依赖项看看,有可能构造函数那里有某个变量是空的

pjy612 发表于 2023-2-18 23:10

:rggrg 大概率就是你用的这个DLL又引用了其他的,或DLL里的类自身初始化的时候 有些数据拿不到或者初始配置不对。
你有耐心可以看看堆栈或者用dnspy去调你写出来的程序,单步进去跟一跟 看看哪儿初始化出问题

weikun444 发表于 2023-2-18 12:31

有没有可能,这个DLL里又引用了其他DLL?

kelin123 发表于 2023-2-18 13:18

weikun444 发表于 2023-2-18 12:31
有没有可能,这个DLL里又引用了其他DLL?

我已经全部引入进来了{:301_977:}

asasascao 发表于 2023-2-18 14:32

引用路径对吗,全局搜索能找到这个类吗

kelin123 发表于 2023-2-18 14:58

asasascao 发表于 2023-2-18 14:32
引用路径对吗,全局搜索能找到这个类吗

对的啊,就new实例的时候就是空的了{:301_983:}

kelin123 发表于 2023-2-19 21:53

pjy612 发表于 2023-2-18 23:10
大概率就是你用的这个DLL又引用了其他的,或DLL里的类自身初始化的时候 有些数据拿不到或者初始配置 ...

应该是这个问题了,感谢大佬{:301_997:}

kelin123 发表于 2023-2-19 21:54

asasascao 发表于 2023-2-19 17:46
排查排查依赖项看看,有可能构造函数那里有某个变量是空的

好的好的,感谢大佬{:301_997:}

pjy612 发表于 2023-2-19 22:05

kelin123 发表于 2023-2-19 21:53
应该是这个问题了,感谢大佬

当然 也不排除 是 dll 脱壳或反混淆之后 内部实现有地方出了问题。比如有的dll de4dot 之后 可能属性 的 get set 识别会有问题。

如果你开刀的是nuget的dll,方便调试 可以改完后直接替换 本地 nuget目录对应里面的 文件(当然记得备份原版)。
或者用 FrameWork 环境 引用相关 dll 然后 编译后不复制DLL 把自己改好的DLL放到 debug。
当然 最好的 先是 正常引用原版。然后 能成功之后 再逆向替换掉。
这样 绕的圈少一点。。。
页: [1] 2
查看完整版本: c#调用dll,创建实例时报实列为空