这节课的内容很简单,我在第四、第五课已经有讲过类似的内容了,那就是把一个软件的界面上的文字改一改。
如上图,花了三分钟写的软件。为了避免你们嫌弃我打广告,我把底图配的很小。如果你能完成今天这节课,那我想你应该能提取出文中的二维码从而实现扫描,当然我的知识星球是付费的,愿者自来。
这节课的目标是改掉软件的标题和"by:慕若曦"字样,基础操作而已,别怕。
查壳,没有壳,拖入 dnspy,直接运行。
报了一个错
字面上的意思,在 dnspy 的目录里找到 dnSpy.exe,打开后运行即可。
如果你调试某个软件报错请用 32 位 dnSpy 来调试,则使用 dnSpy-x86.exe 即可。
第七课我们说过,这种没有报错之类的可以帮助定位的时候,直接在窗口打开后暂停看堆栈,然后在对应的窗口代码里找关键点即可。
双击跟进 Main,如上图所示,Main 里三行代码,做了三件事。
初始化一个 App 对象,初始app 里的组件,运行 app。
点击 26 行的 InitializeComponent() 去看看它怎么初始化组件的。
载入了一个来自 MainWindow.xaml 文件的布局。
我们可以从资源里找到这个文件,值得一提的是你找到的是 mainwindow.baml 而不是 MainWindow.xaml,这是因为在写程序的时候 xaml 文件被编译成 baml 了,默认情况下 dnSpy 并不会主动反编译 baml。
那么我们在这个文件里已经能找到我们需要修改的字符串了,标题的名字叫做:"EP09 一个简单的WPF程序" 。我们右键编辑看看:
喵喵喵???没有我们常用的编辑方法……
特意写这一课是因为我在论坛看到了有人提问类似的问题。
原帖地址:https://www.xuepojie.com/thread-41482-1-1.html
我的回答在 7 楼,使用了 16 进制替换的方法。
以本课的文件为例子:
右键,打开 16 进制编辑器,Ctrl+F 搜索一下要改的内容:EP09 一个简单的 WPF 程序
数据类型为 String(Utf-8)
我比较建议的是你最好点搜索框旁边的箭头看看搜索到的结果有几个,乱修改可能导致你的软件异常。
编辑起来这个搜索结果可能有点麻烦,稍有不慎就出问题,所以我使用快捷键 Ctrl+H 来替换它
图中第二行最后两个按钮,一个是替换,一个是替换所有。
替换后保存模块。
运行可以看到结果,同样的方法你可以把 by:慕若曦 字样给替换掉。
当然这只是一个做法而已。
接下来我讲其他方法。
如图,我们可以把 baml 文件反编译成 xaml 文件然后修改。
需要注意的是,改完 xaml 文件后是无法执行被使用的,你需要自己创建一个 wpf 工程,把 xaml 编译成 baml 后再放回来。(好像很绕,不知道大佬们有啥好方法不,我是菜鸡)
当然你也可以把 baml 文件直接导出,然后使用任意二进制编辑软件去编辑它。
最后还有个简单的方法,按照我们在第五课讲的,直接将源码导出后,在 VS 里编辑它。
本章课件第九课:https://www.lanzous.com/i3wlnkj
感谢本文作者:慕若曦