首页 > 编程语言 >.Net 7 的AOT的程序比托管代码更容易破解?

.Net 7 的AOT的程序比托管代码更容易破解?

时间:2022-12-31 08:45:07浏览次数:39  
标签:00 修改 AOT World Net UltraEdit 破解

楔子

.Net 7的一个重要功能是把托管的源码编译成Native Code,也就是二进制文件。此举看似增加了程序反编译难度,实际上是减少了程序的破解难度。本篇在不触及整个程序架构的前提下,以简单的例子来修改Native AOT exe文件的输出字符串。



例子

Console.WriteLine("Hello, World!");
Console.ReadLine();

搞一个简单的HelloWorld example,来举例下非常简单的破解之道。



UltraEdit

这里需要用到一个16进制的编辑器工具:UltraEdit.这个东西可以去搜索引擎搜索下就可以得到。
把以上简单的代码编译成Native AOT文件之后,生成一个exe文件。把这个exe文件拖到UltraEdit里面去。



破解

image

下拉UltraEdit到地址0046F09C处,可以看到:48 00 65 00 这四个byte。十六进制的0x48和0x65是上面.Net程序输出的语句的Hello, World! 前面的He两个字符串的ASSIC码。

右键UltraEdit修改,把48 00 66 00修改成:49 00 66 00,如上图所示。然后再打开native AOT的exe文件发现本来的Hello, World!变成了Ifllo, World!。如下图所示。

没修改前:
image

修改后
image



原理

它的原理也非常简单,只要看下.Net 程序的Console.WriteLine函数的参数地址是多少,一般在汇编层面是用RCX寄存器来表示。所以你只要找到RCX寄存器的地址,注意它在哪个Section,进行相应的计算就可以找到字符串Hello World在二进制文件里面的地址。进而进行修改。



结尾

这种修改还有很多地方,比如修改函数的跳转,修改功能性的缺失,修改整个程序的架构。整个程序像个筛子。

作者:江湖评谈
image

标签:00,修改,AOT,World,Net,UltraEdit,破解
From: https://www.cnblogs.com/tangyanzhi1111/p/17015708.html

相关文章

  • the nineth——2022.12.30
    C语言中一共有两种定义变量的方法:1.宏定义:再#include下面紧跟#define例如: #include<stdio.h>#defineSUN_FLOWER100;#defineIPHONE_146200; 2.CONSTINT......
  • Gender differences in cortical morphological networks
    文献阅读笔记留存信息起始日期终止日期2022.12.292022.12.30基本信息期刊影响因子/分区题目年份作者标签类型重要性原文链接BrainImagi......
  • 大白话5分钟带你走进人工智能-第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回
                                        第十五节L1和L2正则几何解释和Ridge,Lasso,ElasticNet回归上一节中我们讲解了L1和L2正则的概念......
  • Kubernetes-Pod常用字段
    必选字段字段名说明apiVersionapi版本号kind资源类型。如Pod、Deploymentmetadata对象的元数据metadata.name元数据名称(唯一的)。如pod名称......
  • Kubernetes性能分析
    背景在kubernetes环境中进行开发时,需要了解不同node或者不同pod的资源使用情况,方便进行性能优化。本篇将整理一些常用的性能分析命令,方便查阅~ 命令node查看所有node的......
  • 深入探究ASP.NET Core读取Request.Body的正确方式
    前言常用读取方式同步读取异步读取重复读取源码探究前言相信大家在使用ASP.NETCore进行开发的时候,肯定会涉及到读取Request.Body的场景,毕竟我们大部分的POST请求......
  • Siamese Network
    一、背景除了以前的基础需要经常复习之外,常见的几类场景的算法也要学习一下(想了一下,文本相似度、图片相似、精准营销、生存分析)。这次来学习一下计算图片相似度的一种......
  • Kubernetes自动化一键部署脚本
    Kubernetes简介Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规......
  • 使用kubeadm在CentOS 7上部署kubernetes1.18
    一、Kubernetes简介Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的......
  • arpspoof、driftnet工具使用
    一、arpspoof、driftnet工具安装: 在kaliliux中:安装命令:aptinstalldsniff     aptinstalldriftnet二、使用arpspoof工具进行断网攻击  ①目标IP:192.168.1......