问题标签 [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.
c# - 如何在 dnlib 中使用 valuetype 以插入 Console.ReadKey()
我正在使用 dnlib,我想在另一个可执行文件中的 Console.WriteLines 末尾插入 Console.ReadKey()。
下面的代码部分有效。虽然问题是。它产生 MSIL:
当我希望它生产时
代码
c# - 生成了无效的 IL 代码
我正在尝试将两种方法合并在一起(一种来自我的项目,一种来自 dll)并将它们写入 dll。原始代码如下所示:
我想在此代码中添加一个简单的 Console.WriteLine,我最终得到以下内容:(来自反编译器)
我的反编译器无法反编译(dotPeek),所以我假设我生成的 IL 无效。但是,我不确定我生成的 IL 有什么问题。
我使用dnlib
C# 来获取方法的 IL 代码,然后将两个代码块连接在一起(我剥离了nop
andret
语句(最后一个除外))。为了重新编译我使用该ModuleDef#Write(String)
函数的代码,我在编写自己的 IL 语句时已经成功,但在合并现有语句时却没有。
(以下 IL 都是从控制台打印的,而不是从反编译器打印的)
原始部分 1 IL:
原始第 2 部分 IL:
合并的 IL:
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 写入程序集就好了。
c# - C# dnlib / IL 代码 - 创建一个新字典
我正在创建自己的程序来通过 dnlib 更改 .exe 代码。
然后我想通过 IL 和 Dnlib 代码创建一个字典。
但是两者的教程都不多,所以很难。
它编写了错误的字典代码并使 DnSpy 崩溃。
我的代码:
任何帮助都非常感谢,谢谢!
.net - 从加载的程序集中执行方法
我想从加载的程序集中执行一个方法,我看到了这个 Dnlib - 从加载的程序集中执行 IL MethodBody
而且,我也想做同样的想法,感谢 RVA 地址(硬编码),我搜索了我的函数,它很好地找到了,我已经尝试按照你说的方式导入它:
但它失败了,执行了 classInstance.GetMethod 但变量importedMethod 始终为空。你知道我在哪里犯了错误吗?
谢谢
c# - 如何使用 dnlib 添加对 MessageBox.Show() 的调用?
我正在尝试从 dnlib 调用 MessageBox.Show。我有这个函数可以找到 Show 方法:
这就是我使用它的方式:
当我运行它时,当它尝试将模块写入文件时出现此异常。任何人都可以看看并解释我做错了什么吗?
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
c# - dnlib - 如何更改应用程序 .NetFramework 版本
你能告诉我是否可以.NetFramework
使用 dnlib 库更改另一个应用程序的版本?
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