问题标签 [dnlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
202 浏览

c# - 如何在 dnlib 中使用 valuetype 以插入 Console.ReadKey()

我正在使用 dnlib,我想在另一个可执行文件中的 Console.WriteLines 末尾插入 Console.ReadKey()。

下面的代码部分有效。虽然问题是。它产生 MSIL:

当我希望它生产时

代码

0 投票
1 回答
334 浏览

c# - 生成了无效的 IL 代码

我正在尝试将两种方法合并在一起(一种来自我的项目,一种来自 dll)并将它们写入 dll。原始代码如下所示:

我想在此代码中添加一个简单的 Console.WriteLine,我最终得到以下内容:(来自反编译器)

我的反编译器无法反编译(dotPeek),所以我假设我生成的 IL 无效。但是,我不确定我生成的 IL 有什么问题。

我使用dnlibC# 来获取方法的 IL 代码,然后将两个代码块连接在一起(我剥离了nopandret语句(最后一个除外))。为了重新编译我使用该ModuleDef#Write(String)函数的代码,我在编写自己的 IL 语句时已经成功,但在合并现有语句时却没有。

(以下 IL 都是从控制台打印的,而不是从反编译器打印的)
原始部分 1 IL:

原始第 2 部分 IL:

合并的 IL:

0 投票
1 回答
818 浏览

c# - 合并两个方法的 IL 时出现 dnlib.DotNet.Writer.ModuleWriterException

我正在尝试合并两种方法的 IL:一种方法来自已经存在的程序集 ( MyAssembly.dll),另一种方法与我的 dnlib 代码在同一个项目中。我正在尝试阅读这两种方法,合并它们的指令,然后将其写入新程序集。这可行,但是当我将 if 语句(可能还有其他语句)添加到新方法(所以我的项目中的那个)时,在将指令写入新程序集时出现异常:

当原始代码(来自 MyAssembly.dll 的代码)包含 if 语句时,它不会引发异常。

MyAssembly.dll 的代码:

MyAssembly.dll 的 IL:

我的项目代码:

我的项目的 IL

合并 IL

合并后的 IL 看起来与我使用 dnSpy 生成的 IL 相同:https ://owo.whats-th.is/a0783e.png

但是,将合并的 IL 写入文件时会引发错误。我的代码:

我不知道是什么导致了这个问题。IL 中的所有标签似乎都是正确的。删除 if 语句时,dnlib 将 IL 写入程序集就好了。

0 投票
0 回答
422 浏览

c# - C# dnlib / IL 代码 - 创建一个新字典

我正在创建自己的程序来通过 dnlib 更改 .exe 代码。
然后我想通过 IL 和 Dnlib 代码创建一个字典。
但是两者的教程都不多,所以很难。
它编写了错误的字典代码并使 DnSpy 崩溃。
我的代码:

任何帮助都非常感谢,谢谢!

0 投票
0 回答
101 浏览

.net - 从加载的程序集中执行方法

我想从加载的程序集中执行一个方法,我看到了这个 Dnlib - 从加载的程序集中执行 IL MethodBody

而且,我也想做同样的想法,感谢 RVA 地址(硬编码),我搜索了我的函数,它很好地找到了,我已经尝试按照你说的方式导入它:

但它失败了,执行了 classInstance.GetMethod 但变量importedMethod 始终为空。你知道我在哪里犯了错误吗?

谢谢

0 投票
0 回答
595 浏览

c# - 如何使用 dnlib 添加对 MessageBox.Show() 的调用?

我正在尝试从 dnlib 调用 MessageBox.Show。我有这个函数可以找到 Show 方法:

这就是我使用它的方式:

当我运行它时,当它尝试将模块写入文件时出现此异常。任何人都可以看看并解释我做错了什么吗?

0 投票
1 回答
1378 浏览

c# - 使用 dnlib 注入带有方法的类

我正在尝试用文件中的方法注入一个类。我知道 ConfuserEx 的源代码中有一个可行的解决方案,但它有点需要编辑我想避免的 dnlib 代码。

在上面的代码片段中,我尝试通过类来做到这一点Importer,但它在注释行上引发了异常。

这是ConfuserEx的解决方案: https ://github.com/yck1509/ConfuserEx/blob/master/Confuser.Core/Helpers/InjectHelper.cs 这里是需要在dnlib中进行的修改:https ://github.com /yck1509/dnlib/blob/master/src/DotNet/Importer.cs#L72

0 投票
1 回答
274 浏览

c# - 使用 Mono.Cecil 或 dnlib 获取参数值

我想获得第一个参数值(它是一个字符串)。例如,我有以下说明:

指示

我有一个指令列表,有时可能有其他参数,也可能有其他字符串。我怎样才能只得到第一个论点?

我试图迭代指令,从我更高的调用开始,直到我遇到ldstr指令。但是如果传递了两个字符串参数,它将不起作用。有什么可能的解决方法吗?

0 投票
0 回答
80 浏览

c# - dnlib - 如何更改应用程序 .NetFramework 版本

你能告诉我是否可以.NetFramework使用 dnlib 库更改另一个应用程序的版本?

0 投票
0 回答
35 浏览

c# - 使用 dnlib 注入类型和方法时,父级不存在错误

我一直在尝试为美好的一天注入一种类型和方法,哈哈。嗯。这是一些代码:我基本上只是想用 Simpy.Simp 替换 System.Convert.FromBase64String 但我似乎无法让它工作......(我使用了来自https://github的 InjectHelper.cs .com/yck1509/ConfuserEx/blob/master/Confuser.Core/Helpers/InjectHelper.cs)和来自https://github.com/yck1509/dnlib/tree/532c767a9a4f6af51cd4eb5d1c0af750c8509c5d的修改后的 dnlib