如何从 CIL 指令判断某个字段是读取还是写入?

发布于 2024-08-16 17:19:40 字数 481 浏览 11 评论 0原文

我目前正在使用 Mono Cecil 从 C# 项目中提取数据。现在我需要检查每个方法中是否读取或写入了某个字段。

如何从 CIL 指令 正在读取或写入字段?

因为我怀疑 Mono Cecil 中有一个类似于 Eclipse JDT 中的赋值 允许我提取左侧和右侧。如果有的话,我就可以从那里开始工作。

I am currently using Mono Cecil to extract data from C# projects. Now I need to check whether a field is read or written to in each method.

How can tell from the CIL instruction that a field is being read or written to?

Because I doubt there a library in Mono Cecil similar to Assignment in Eclipse's JDT that allows me to extract the left hand side and right hand side. If there is, then I can just work from there.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

堇年纸鸢 2024-08-23 17:19:40

直接字段存储的指令是 stfld,因此您必须注意这一点。

请注意,字段也可以通过指针(*& 类型)间接写入,这在最一般的情况下是不可能检测到的(因为指针可以来自外面)。

The instruction for direct field stores is stfld, so you'll have to look out for that.

Note that fields can also be indirectly written to via pointers (both * and & kind), which is impossible to detect in the most general case (as pointer can come from the outside).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文