jinguwangtian 发表于 2019-9-12 01:43

[莫塔之子]使用dnSpy修改DLL文件的方法

首先感谢原贴作者cafeguest的帖子,详细的数值修改请参考此贴内容↓
已知几个dll修改位置,攻速,攻击力,掉率,金币,技能点,经验

因为并没有详细说明使用步骤,为免有人需要,在这里发一篇详细的图文教程.

1.我们需要准备dnSpy软件,这个软件度娘一下到处都有下载.


2.下载好之后,打开软件,左上角 文件→打开,选择游戏目录下的Assembly-Csharp.dll文件
例如:..\ChildrenOfMorta\ChildrenOfMorta_Data\Managed


3.然后就可以看到左侧程序集资源管理器下出现相关内容



4.然后我们就可以参考上面链接中的帖子,来进行修改了.
例如:我们找到Zyklus.Stat下的StatStaticDataContainer下的AddXPDirect


找到需要修改的行



右键选择"编辑IL指令",将目标数值改为100即可


5.改好之后,直接保存退出.然后进入游戏,开爽.


PS:
我完全不懂汇编,只是给出一个简单的修改教程,不要提问我也没办法回答.
相关的具体数据修改请参考文首的帖子.


wab6234033 发表于 2019-9-12 20:52

你是怎么在xp_gain后面加*100F的,编辑IF怎么添加内容

devilen 发表于 2019-9-13 11:59

右键点编辑。

冥王の涙 发表于 2019-9-13 15:24

右键点了编辑之后出现了一个编辑方法体,求大神说的再详细点

jinguwangtian 发表于 2019-9-13 23:14

简单说一下使用IL编译修改的方法.抱歉由于出门旅游,身上只带了笔记本,没游戏没工具没办法截图.
某些需要修改添加的语句,无法使用C#直接编译.
可以使用IL指令的方法解决,方法如下:
1.在你需要进行修改的语句上,鼠标右键,选择IL指令.这个时候,会发现代码以汇编的形式展示
2.这个时候,你选择的语句,是背景高亮状态,能够清晰的看出语句在汇编下的范畴.
3.找到包含类似"value"的语句,例如1楼例子中,我们可以在汇编语句中找到xp_value或者xp_gain这行
4.然后鼠标右键,选择在此命令行下添加行, 命令选择ldc.r4,数值为100
5.继续鼠标右键,选择此命令下添加行,选择mul
6.这个时候,就相当于添加了一个 * 100 倍的命令.
大致显示格式例子为:
行61 ........xp.value
行62 ldc.r4   100
行63 mul
行64 这里是原本行62的信息.....

大致上以这种方法就可以了.

a335048334 发表于 2019-9-14 13:04

大佬还需要详细的步骤图演示下,,,一脸懵逼,或者有什么视频教学没,自己学也行。

lhtbiycajj 发表于 2019-9-15 11:12

3.找到包含类似"value"的语句,例如1楼例子中,我们可以在汇编语句中找到xp_value或者xp_gain这行

lhtbiycajj 发表于 2019-9-15 11:13

我是找不到这句……我大概被自己蠢死

jinguwangtian 发表于 2019-9-15 19:45

1.首先,我们找到一些本身没有办法直接用C#添加倍率修改的数值项.
比如掉率的配置.
zuklus.LootLootDropperComponent
if (RandomUtility.TryChance(this.drop_paramters_chance_.pItem2.GetValue() * 10f))

我们会发现使用直接编辑的方法会报错,但是IL指令编辑又没有明确的直接修改数值的方法,所以,我们就要自己去添加汇编代码,来实现添加一个乘法的语句.

2.在需要修改的行上,我们右键选择IL编辑打开.会发现此行代码的汇编是背景高亮显示的.
并且,我们可以从里面找到pItem2.GetValue()对应的代码



3.在我截图中标记的位置可以单独选中这行,然后右键选择"在选区后添加指令"



4.如图所示,我们需要添加两行新指令



5.将第一行的"操作码"改为ldc.r4,"操作符"数值添加30
将第二行的"操作码"改为mul,然后确定即可
顺便说一下,mul的意思就是乘法,而ldc的作用是放置一个数据,所以合起来就是乘以这个数值了



6.这个时候,我们就会发现在代码后面有了*30f的数据了,此后,保存即可.

L1102 发表于 2019-11-5 14:15

太感谢楼主了!!!,那个贴没有IL修改的方法,看的我一头雾水!,感谢~~~

wojiaoyu13 发表于 2020-6-4 13:18

谢谢各位大佬分享

泪不曾干 发表于 2020-7-2 22:10

jinguwangtian 发表于 2019-9-15 19:45
1.首先,我们找到一些本身没有办法直接用C#添加倍率修改的数值项.
比如掉率的配置.
zuklus.LootLootDroppe ...

求大佬修改一个最新的,修改金钱和爆率就好

念着倒才狗小 发表于 2020-8-25 21:18

现在用 dnSpy 直接编辑(右键代码 - 编辑方法)不会报错了。
不清楚当初 报错 是游戏的原因,还是 dnSpy 的原因,但是现在没事了。

szbiao218 发表于 2020-8-28 01:36

学习了,感谢分享

玄罡正气 发表于 2021-2-22 17:00

学习了,学会了。

lwq13207905375 发表于 2022-11-21 21:36

请教个问题,我修改的另外一个游戏,我修改assembly内数值后原版游戏可以玩,mod版本进入就闪退是什么原因

xuanxinhun 发表于 2023-4-7 23:22

6666666666666666666666666666666666
页: [1]
查看完整版本: [莫塔之子]使用dnSpy修改DLL文件的方法