C#之反编译之路(一)

本文将介绍微软反编译神器dnSpy的使用方法

c#反编译之路(一)
dnSpy.exe区分64位和32位,所以32位的程序,就用32位的反编译工具打开,64位的程序,就用64位的反编译工具打开(个人觉得32位的程序偏多,如果不知道是32位还是64位,就先用32位的打开试试)
在这里插入图片描述
目前只接触到wpf和winform的桌面程序,其他项目还没有接触到,有的项目dnSpy也没办法反编译,比如c++的,还望各路大佬指点

启动软件

双击dnSpy.exe→文件→打开→选择自己需要反编译的程序→确定
在这里插入图片描述
这个时候,如果你的项目是完整的,点击启动就能启动程序了
在这里插入图片描述
中断于修改为入口点,就可以断点整个程序,启动后你就会发现进入main方法了.这里还有一个作用,如果你的程序双击运行没有反应或者闪退,也可以用这个方法来调试,一步一步的f11到达报错的地方.特别是生产上,没办法装编译器的时候,简直就是神器,而且它的信息会更全,步骤会更详细,甚至有些地方比vs断点更好用
在这里插入图片描述

断点

如果你试过了从入口点断点启动,你就会发现它断点调试的强大.
需要调试的地方打上断点,启动程序,中断方式选择不要中断,运行到断点处程序会自动停下来
在这里插入图片描述
可以看到他和开发环境一样方便,断点在程序排错过程中是巨好用的,一分钟定位bug,特别是生产环境,免安装的dnSpy,又不需要环境配置,打开即使用,谁能不爱

修改代码

修改代码通过编辑方法或编辑类方式进行,具体方式是右键:编辑类/方法,后边具体说说这两个的区别和藏的坑
在这里插入图片描述
比如我们要在一份找不到代码的程序里边默认勾选记住密码和自动登录
在这里插入图片描述
我们先找到登录界面(首先你得从反编译的代码项目结构中区分是wpf还是winform代码,wpf界面是以baml格式的方式存放在资源下,winform则是存在于cs代码中)
在这里插入图片描述
代码中搜索中文关键字,获得勾选框
在这里插入图片描述
转到cs代码,我们看到构造器方法里边有load方法于是我们选择在这里修改代码(如果没有load方法,我们也可以自行添加)
在这里插入图片描述
右击,编辑方法,在代码中添加以下代码,编译

				this.cb_automatic_login.IsChecked = true;
				this.cb_remember_password.IsChecked = true;

点击文件→全部保存→启动
在这里插入图片描述
这个时候就会发现,原本没有勾选的选择框,进入登录界面就已经勾选了
在这里插入图片描述

注意事项

1.反编译之后的代码,方法内的局部变量会被系统自动命名,如:text,text1…text10,且重新dnSpy重新加载程序,系统变量可能会变;
2.编辑代码时,如果有报错,需要先处理错误,比如这种,你需要添加相应的引用
在这里插入图片描述
3.断点只能在没有被反编译修改的程序下进行,被修改后的代码无法再被断点
4.代码无法被二次反编译!!!(保存代码后,将程序从dnSpy移除,再重新打开叫做二次反编译)
软件下载地址

下一章将介绍一些更高级的玩法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/296280.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法每日一题:在链表中插入最大公约数 | 链表 | 最大公约数

hello,大家好,我是星恒 今天的题目是有关链表和最大公约数的题目,比较简单,核心在于求解最大公约数,我们题解中使用辗转相除法来求解,然后我们会在最后给大家拓展一下求解最大公约数的四个方法,…

码云Gitee复制 GitHub 项目

码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载。 1.新建仓库 2.导入仓库 3.强制同步 如果 GitHub 项目更新了以后,在码云项目端可以手动重新同步,进行更新!

odoo16 连接postgresql错误

odoo16 连接postgresql错误 odoo16 用odoo15的环境出错,看到是psycopg2.OperationalError分析是postgresql版本问题,安装了13版本,还是出错,多版本共存问题如下: Traceback (most recent call last):File "D:\o…

数一下 1到 100 的所有整数中出现多少个数字9并输出这些数字

分析: 我们知道 1-100的整数 i 中,9会出现在十位和个位上,数9出现的次数可以通过以下来实现: 个位是9 // i % 10得到整数 i 个位上的数十位是9 // i / 10得到整数 i 除了个位数的数字 这也是做这道题之后,我们需要…

MySQL基础笔记(5)DCL数据控制语句

数据控制语句,用来管理数据库用户、控制数据库的访问权限~ 目录 一.用户管理 1.查询用户 2.创建用户 3.修改用户密码 4.删除用户 二.权限管理 1.查询权限 2.授予权限 3.撤销权限 一.用户管理 1.查询用户 use MySQL; select * from user; 2.创建用户 crea…

MySQL——视图

目录 一.视图介绍 二.基本使用 三.视图规则和限制 一.视图介绍 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。 二.基本使用 创…

深入理解MySQL索引底层数据结构

听课问题(听完课自己查资料) 什么是二叉树 二叉树是怎么存储数据的一个链表是一个集合的数据结构 List是怎么便利找到指定下标元素为什么会快?什么是红黑树 红黑树是怎么存储数据的什么是B TREE 是怎么存储数据的什么是BTREE 是怎么存储数据的 疑惑答案 a. 二叉树…

用通俗易懂的方式讲解:结合检索和重排序模型,改善大模型 RAG 效果明显

最近出现了在构建聊天机器人方面的应用浪潮,这主要得益于LlamaIndex 和 LangChain 这样的框架。许多这类应用都采用了用于检索增强生成(RAG)的标准技术栈,其中包括以下关键步骤: 向量存储库: 使用向量存储库…

状态机(有限状态机(Finite State Machine, FSM)、推进自动机(Pushdown Automata)、并发状态机、分层状态机)

文章目录 状态机(State Machine)定义与组成定义组成状态(States)事件(Events)转换(Transitions)初始状态(Initial State) 状态机的类型有限状态机&#xff08…

网络调试 UDP1,开发板用静态地址-入门6

https://www.bilibili.com/video/BV1zx411d7eC?p11&vd_source109fb20ee1f39e5212cd7a443a0286c5 1, 开发板连接路由器 1.1,烧录无OS UDP例程 1.2,Mini USB连接电脑 1.3,开发板LAN接口连接路由器 2. Ping开发板与电脑之间通信* 2.1 根据…

某金属加工公司的核心人才激励体系搭建项目纪实

【客户行业】金属加工行业 【问题类型】薪酬体系/激励体系 【客户背景】 某大型金属加工企业位于河北地区,成立于2000年,隶属于某大型有色金属集团,是一家集科研、开发、生产、销售于一体的国有企业,人员达到1000人。经过多年…

【Redis端口】通过修改端口一个计算机上可以运行两个redis

一个计算机上可以运行多个Redis实例。每个Redis实例都会监听一个特定的端口,所以只要确保每个实例使用的端口不冲突,就可以在同一台计算机上运行多个Redis实例。例如,你可以配置一个Redis实例监听6379端口,另一个Redis实例监听638…

阿里云服务器配置jupyter(新手入门,详细全面)

设置安全组 1.租好服务器后在阿里云服务器平台上打开控制台(右上角) 2.点开自己的云服务器控制台,在左栏“安全组”部分添加安全规则,点击“管理规则” 单击“手动添加”,将安全组设为如下格式,端口范围…

Java经典框架之Dubbo

Dubbo Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Dubbo概述 2. Dubbo基本应用 3…

React基础应用及常用代码

目录 基础知识 babel.config.js js,html,css,Vue,react,angular,nodejs,webpack,less,ES6,commonjs等的关系 ECMAScript 6(ES6) let、const、var 的区别 Webpack、npm、node关系 props和state区别 通用框架类 ES 6 export React React.Fragm…

【LLM】大型语言模型:2023年完整指南

Figure 1: Search volumes for “large language models” 近几个月来,大型语言模型(LLM)引起了很大的轰动(见图1)。这种需求导致了利用语言模型的网站和解决方案的不断开发。ChatGPT在2023年1月创下了用户群增长最快…

thinkphp学习04-控制器定义

控制器,即 controller,控制器文件存放在 controller 目录下; 如果想改变系统默认的控制器文件目录,可以在 config 下 route.php 配置: 将controller修改为controller123,就会报错,说明这个配置…

【大数据进阶第三阶段之Hive学习笔记】Hive安装

【大数据进阶第三阶段之Hive学习笔记】Hive安装-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive基础入门-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化-CSDN博客 …

Linux与安全

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全 前言 Linux 文件系统解释应该知道的 18 个最常用的 Linux 命令HTTPS如何工作? 数据是如何加密和解密的?为什么HTTPS在数据传输过程…

【AIGC-图片生成视频系列-6】SSR-Encoder:用于主题驱动生成的通用编码器

目录 一. 贡献概述 二. 方法详解 a) 训练阶段 b) 推理生成阶段: 三. 综合结果 四. 注意力可视化 五. 选择性主题驱动图像生成 六. 人体图像生成 七. 可推广到视频生成模型 八. 论文 九. 个人思考 稳定扩散(Stable Diffusion)模型可…