反编译 c#遇到 unmanaged 的代码还能继续下去吗?

2021-07-14 09:45:40 +08:00
 xzpjerry731

用 ILSpy 反编译一个 dll 遇到这样一段代码

long num = *(long*)((ulong)(nint)ptr + 8uL);
int num2 = *(int*)ptr;
CFile* file;
CFile.Open(&file, some_path, 36898u, null);

// 以下我猜是调用了一个函数
(
    (delegate* unmanaged[Cdecl, Cdecl]<IntPtr, void*, uint, void>)
    (*(ulong*)(*(long*)file + 136))
)(
    (nint)file, (void*)num, (uint)num2
);

🙏

1391 次点击
所在节点    C#
1 条回复
7v9TEc53
2021-07-14 10:13:59 +08:00
调用了 CFile 结构体 136 偏移的一个函数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX