C#之反编译之路(一)

news2024/11/20 3:24:10

本文将介绍微软反编译神器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.coloradmin.cn/o/1358505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis (三)

1、redis复制 简单的概括就是主从复制,master以写为主,Slave以读为主,当master数据发生变化的时候,自动将更新的数据异步同步到其他的slave是数据库。 使用这种机制的话,可以做到读写分离,可以减轻主机负担…

DDoS攻击的多种方式

DDOS攻击指分布式拒绝服务攻击,即处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务…

大数据毕设分享 flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计:每小时成交量2.2.1 创建 es 结果表, 存放每小时的成交量2.2.2 执行 sql &#x…

提升网络安全重要要素IP地址

在数字化时代,网络安全已经成为人们关注的焦点。本文将深入探讨网络安全与IP地址之间的紧密联系,以及IP地址在构建数字世界的前沿堡垒中的关键作用。 网络安全是当今数字社会中不可忽视的挑战之一。而IP地址,作为互联网通信的基础协议&#…

震惊!原来这就是JavaScript闭包的秘密

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 CSS专栏:想学CSS的,冲这里 &#x1f4…

第一届能源电子产业创新大赛太阳能光伏赛道决赛及颁奖仪式在宜宾成功举办

在工业和信息化部电子信息司指导下,由工业和信息化部产业发展促进中心和宜宾市人民政府主办,宜宾市经济和信息化局、宜宾高新技术产业园区管理委员会承办的第一届能源电子产业创新大赛太阳能光伏赛道决赛及颁奖仪式于2024年1月3日-5日在宜宾市成功举办。…

DDIA 第十一章:流处理

本文是《数据密集型应用系统设计》(DDIA)的读书笔记,一共十二章,我已经全部阅读并且整理完毕。 采用一问一答的形式,并且用列表形式整理了原文。 笔记的内容大概是原文的 1/5 ~ 1/3,所以你如果没有很多时间…

2023年后,AI 还有什么研究方向有前景?

什么是AI ​ AI代表人工智能,它是指通过计算机科学技术使机器能够执行需要智力的任务的一种技术。这些任务包括学习、推理、问题解决和感知等,通常是人类智能的表现。人工智能的目标是使计算机系统能够执行需要人类智力的任务,而不需要人类的…

C语言实用第三方库Melon开箱即用之多线程模型

在之前的文章中(开发利器——C 语言必备实用第三方库),笔者介绍了一款Linux/UNIX下C语言库Melon的基本功能,并给出了一个简单的多进程开箱即用的例子。 本文将给大家介绍Melon中多线程的使用方法。 在Melon中有三种多线程模式&a…

点对点SDWAN组网:通过专线连接实现企业分支互联

点对点SDWAN是一种通过软件定义网络技术将企业分支互联的组网解决方案。在点对点SDWAN中,企业分支通过专线连接实现互联,以满足对网络性能和可靠性的要求。 传统的WAN架构通常使用MPLS(多协议标签交换)技术来实现企业分支的互联。…

TransmittableThreadLocal使用踩坑

背景:为了获取相关字段方便,项目里使用了TransmittableThreadLocal上下文,在异步逻辑中get值时发现并非当前请求的值,且是偶发状况(并发问题)。 发现:TransmittableThreadLocal是阿里开源的可以实现父子线程值传递的工…

鸿蒙系列--动态共享包的依赖与使用

一、前言 HarmonyOS的共享包相当于Android的Library,在HarmonyOS中,给开发者提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包 区别&…

记一次 .NET 某新能源材料检测系统 崩溃分析

一:背景 1. 讲故事 上周有位朋友找到我,说他的程序经常会偶发性崩溃,一直没找到原因,自己也抓了dump 也没分析出个所以然,让我帮忙看下怎么回事,那既然有 dump,那就开始分析呗。 二&#xff…

计算机创新协会冬令营——暴力枚举题目05

这道题挺基础但是挺多坑的。(•́へ•́╬) 题目 204. 计数质数 - 力扣(LeetCode) 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 示例 1: 输入:n 10 输出:4 解释:小于 10 的质…

具有大电流,双通道 12V,短地短电源保护等功能的国产芯片GC8549 可替代ONSEMI的LV8548/LV8549

GC8549 可以工作在 3.8~12V 的电源电压上,每 通道能提供高达 1.5A 持续输出电流或者 2.5A 峰值 电流,睡眠模式下功耗小于 1uA。具有 PWM(IN/EN)输入接口,与行业标 准器件兼容,并具有过温保护,欠压保护&…

信息系统项目管理师好考吗?知识点分析与讲解,码住!

科目一:综合知识考试 科目一考试是由选择题组成的,共有75道题目。考试时间为早上9点到11点半,可以提前交卷,通常11点左右就能离开考场。对于会做的题目,要及时解答,对于不会做的题目,花费过多时…

QC/PD快充电源产品MOS选型分析

• 原边650-700V SJ MOSFET采用低FOM值的ESM 技术,有利于提高系统效 率, 以及更佳的EAS和EMI等特性,对于一些不含PFC电路的系统更友好。 • 副边采用低FOM值的SGT同步整流电路,相比肖特基二极管整流能有更低的 损耗,有…

pinia 给 state 指定变量类型

pinia 给 state 指定变量类型 问题描述 自从用 vitetsvue3 以来,我一直有一个很大的疑问,就是 pinia 中的 state 变量类型该从哪定义,如何定义它? 因为我在使用未定义类型的 state 变量的时候一直会有一个提示,提示说…

JAVA集合框架总结

集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合就…

Unity之预制体与变体

PS:不用说了,我在写博客就是在摸鱼 一、预制体 不知道大家小时候有没有看过火影,记得剧情最开始的时候水木哄骗鸣人去偷封印之书,反而让鸣人学会了多重影分身之术: 好了,小编绞尽脑子终于想好怎么向大家介绍预制体了&a…