如何改变.net托管的入口main函数

有小伙伴问: .NET托管入口Main函数可以修改成别的函数,用来作为程序的入口吗?

答案:当然是可以的。这也算是.NET里面非常简单的骚操了。本篇来用最新的.NET8演示下,如何修改Main入口。

1.简单控制台例子:

namespace ConsoleApp1{    internal class Program    {        static void Main(string[] args)        {            Console.WriteLine("Call Main");        }        static void ABC()        {            Console.WriteLine("Call ABC");        }    }}

例子里面有两个函数:Main和ABC。Main函数是托管入口函数,这里演示下如何把托管入口函数改为ABC函数。结果是程序启动会直接打印出"Call ABC"字符串,而不是"Call Main"字符串。

以上代码运行之后在bin/Debug/net8.0目录下生成了ConsoleApp1.dll文件,比如我的当前目录如下:

2.修改

我们需要用到一个工具CFF Explorer_CN(本文底部有这个小工具的下载链接)解析下ConsoleApp1.dll托管动态链接库。它是类似于PE查看器的小工具,同时也兼具托管DLL的MSIL数据查看。如下图:

把ConsoleApp1.dll拖入到CFF Explorer_CN,展开.NET目录-》表-》Method表。如下图所示:

Method表里面有三个方法,我们只看前两个方法Main和ABC 。点击下Main,看到Main函数RVA的Value值是00002050

点击下ABC函数,它的RVA Value值是0000207C

知识点来了,JIT编译MSIL的时候根据RVA的值,进行定位函数头的位置。既然如此,把Main的RVA Value改成ABC的RVA Value,把ABC的RVA Value改成Main的RVA Value。即可进行Main函数和ABC函数的逻辑调换。

如何改呢?在Main的Value值处双击,把Value改成ABC的RVA Value值:0000207C。同样在ABC的Value值处双击,把Value值改成Main的RVA Value值:00002050。如下红框双击即可改动数据。

 

记得关闭ConsoleApp1.dll的时候保存下,不然改动不会生效。

最后cmd切换到ConsoleApp1.dll的目录,通过dotnet命令运行下下:

dotnet ConsoleApp1.dll

结果如下:

CFF Explorer简单介绍

CFF Explorer是一款优秀的PE资源工具,使用CFF Explorer可以方便地查看和编辑PE(EXE/DLL)资源,类似PE资源工具 

使用CFF Explorer可以查看和修改PE文件的资源,可以查看dll文件可供调用的函数,修改函数入口地址达到制造崩溃屏蔽功能的目的。

PE(Portable Execute)文件被称为可移植的执行体,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件 。

看到这了,如果您觉得我的文章对您有帮助,我强烈建议您,在能力所极时,给我发一元打赏买瓶水;您的支持将是我无线创作的动力。

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

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

相关文章

金融行业数字化人事管理:组织管理、风险管控、职级晋升一体化

目前,金融行业正在全面推进数字化转型,推动行业高质量发展。人力资源是组织发展的核心竞争力,数字化的人事管理能够为金融组织降本增效。 行业痛点 1、金融行业分支机构多、人员规模大,随着组织的快速发展,集团内组织…

Postman Tests:简介与示例

Postman 不仅是一个强大的 API 开发工具,它还提供了创建自动化测试脚本的能力,这些脚本可以用于检验API请求得到的响应是否符合预期。这些测试脚本被称为 “Tests”,支持使用 JavaScript 编程语言进行编写,并且 Postman 提供了一系…

图片录入设备、方式与质量对图片转Excel的影响

随着数字化时代的到来,图片已经成为人们日常生活中不可或缺的一部分。在各行各业中,图片的应用越发广泛,从而促使了图片处理技术的快速发展。然而,图片的质量对于后续数据处理和分析的准确性和可靠性有着至关重要的影响。本文将从…

IDEA 创建Spring Boot 项目整合jdbc详细步骤

IDEA 创建Spring Boot 项目&整合jdbc详细步骤 1、打开 IntelliJ IDEA 软件2、使用 "Spring Initializr" 作为项目类型,新建项目工程3、选择对应的SpringBoot版本和依赖4、Spring Boot 项目的结构5、创建一个TestController,并运行6、整合j…

用Python实现创建餐厅评分数据分析表

代码的功能是创建一个雷达图(Radar Chart),也称为蜘蛛网图(Spider Chart),用来展示不同餐厅在多个维度上的评分。雷达图是一种非常适合展示多维数据的图形,它能够清楚地显示每个数据点在多个变量…

发现了一个老师都该知道的成绩发布神器!

老师们,你们是不是还在为每次考试后的成绩发布而烦恼?手动整理、逐个通知,简直让人头疼不已! 想象一下,你只需将成绩整理成Excel表格,一键上传,立马就能生成一个专属的成绩查询小程序。是不是感…

《数据治理简易速速上手小册》第6章 数据访问与共享(2024 最新版)

文章目录 6.1 管理数据访问权限6.1.1 基础知识6.1.2 重点案例:金融公司的 RBAC 系统6.1.3 拓展案例 1:医疗保健机构的 ABAC 实现6.1.4 拓展案例 2:科技公司的最小权限策略 6.2 数据共享的策略和工具6.2.1 基础知识6.2.2 重点案例:…

Python海龟绘图:绘出最靓丽的景色

目录 一、引言 二、海龟绘图库的基本使用 三、绘制靓丽的景色 案例一:绘制日出或日落 案例二:绘制森林 四、总结与建议 五、展望未来 六、附录 一、引言 在Python编程中,除了强大的数据处理和逻辑运算能力,还有一项非常有…

NXP实战笔记(十一):32K3xx基于RTD-SDK在S32DS上配置DFLASH、MemAcc、Fee

目录 1、概述 2、RTD-SDK配置之Cache_Ip 3、RTD-SDK配置之Mem_43_InFls 4、RTD-SDK配置之MemAcc 5、RTD-SDK配置之Fee 6、代码示例 1、概述 S32K3目前安装的RTD普遍使用的是R22-11版本的AUTOSAR规范,作为一直使用AUTOSAR4.2.2的程序员来讲,属实迭代…

Connection模块类功能联调(整合三)

目录 概要 tcp_cli.cc tcp_srv.cc server.hpp 测试结果 第三次整合 概要 本主要是将以下模块进行整合测试 Connection管理类实现(模块六)-CSDN博客 EventLoop整合与TimerWheel联合调试(整合二)-CSDN博客 tcp_cli.cc #include "../source/server.hpp"int main…

在编教师要跨市调可以吗

经常看到有人问:“在编教师能否跨市调动?”这个问题看似简单,实则背后涉及了多重因素。今天,就让我来为大家揭秘在编教师跨市调动的可能性及其背后的那些关键因素。 教师作为事业单位的在编人员,其调动并不是一件随心所…

个人玩航拍,如何申请无人机空域?

我们在《年会不能停》一文中,有分享我们在西岭雪山用无人机拍摄的照片和视频,有兴趣可以去回顾。 春节的时候,趁着回老家一趟,又将无人机带了回去,计划拍一下老家的风景。 原本以为穷乡僻壤的地方可以随便飞&#xf…

手机厂商们,画了一张「AI大饼」

【潮汐商业评论/原创】 “未来世界,大部分人类可能是多余的。” 这是尤瓦尔赫拉利在《未来简史》中被大众最为争议的观点。如今,当AI正从二维空间“概念”走向多维世界“应用”时,人类社会的生产力重心也将随之向人工智能转移,人们…

配置用户通过IPv6方式上网

组网需求 运营商为企业分配了WAN侧的IPv6地址1111:2222:A0EE:6::2/64和LAN侧的IPv6地址1111:3333:E840:2::1/64,企业通过运营商提供的IPv6地址配置上网。 图1 配置用户通过IPv6方式上网 操作步骤 1、在IPS上的配置 interface GigabitEthernet0/0/4 ipv6 enable…

绿幕背景抠图SDK解决方案

随着影像技术的日益发展和普及,视频制作和图像处理已经成为众多行业不可或缺的一环。美摄科技,作为业内领先的影像技术提供商,针对企业需求,推出了全新的绿幕背景抠图SDK解决方案,旨在为企业提供更加高效、精准的影像处…

FMM 笔记:FMM(colab上执行)【官方案例解读】

在colab上运行,所以如何在colab上安装fmm,可见FMM 笔记:在colab上执行FMM-CSDN博客 fmm见:论文笔记:Fast map matching, an algorithm integrating hidden Markov model with precomputation_ubodt(upper bounded ori…

windows下将bat注册服务/卸载服务(nssm)

sc的方法我都试过了 不太行 nssm大家直接冲 1 下载nssm 1.1 下载 http://www.nssm.cc/download 1.2 解压 完成后解压,找到nssm.exe 1.3 拷贝 将exe文件拷贝到bat文件的路径下。 2 注册服务 2.1 cmd 路径下打开cmd输入nssm.exe install 服务名,完成…

Window系统本地搭建LightPicture网站并实现远程上传下载本地图片

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

Android基础进阶 - RecyclerView列表加载多类型视图

你是否会经常见到在同一个 RecyclerView 列表中加载多种不同的布局效果?最近写了一篇 ConcatAdapter 相关内容,发现虽然之前一直在使用多类型视图列表,但从未记录过,故重新记录于此 RecyclerView基础 Android进阶之路 - Recycler…

【Python笔记-设计模式】责任链模式

一、说明 旨在将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。 (一) 解决问题 将请求的发送者和接受者解耦,并使请求随着处理对象链传递,优化系统内部处理逻辑 (二) 使…