实战逆向RUST语言程序

实战为主,近日2024年羊城杯出了一道Rust编写的题目,这里将会以此题目为例,演示Rust逆向该如何去做。

题目名称:sedRust_happyVm

题目内容:unhappy rust, happy vm

关于Rust逆向,其实就是看汇编,考验选手的基础逆向能力。在汇编代码面前,任何干扰都会成为摆设。

1、初步分析

64为程序,使用IDA 64打开

image

通过字符串定位分析点

image

image

现在我们知道 inputflag的长度大于 0x15

image

接下来在汇编层面下一个断点,输入假flag,去观察相关寄存器的值

image

image

image

好像并没有什么内容

image

继续单步 步过,直到发现下一个要注意的地方!

image

image

字符串长度:0x28

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

我们继续单步步过跟踪

image

开辟空间的时候,说明快到真正函数处理过程了。

image

image

image

image

2、分析加密流程

2.1 base64分割模块

这里简单将 3 字节变成4字节的操作,称之为 base64分割模块

这里举个例子

输入的:"111"
->二进制字符串 001100010011000100110001
经过base64分割模块
->001100 010011 000100 110001

image

发现程序执行完后正好是这样的结果

image

2.2 组合

image

举个例子:

假如分割之后的4字节为:

0xC、0x13、0x4、0x31

那么组合后的字符串

rax = 0xC
rcx = 0x1300
edx = 0xB1130C18 

image

2.3 VM处理模块

image

发现func3 非常乱

并且频繁调用sub_40A800()

image

发现这是一道VM类型的题,那么VM的题加密应该会很简单,基本是异或之类。

image

在 sub_40A800 里面找到 异或,下断点

image

image

image

image

这个al每经过两次就是秘钥

image

image

解题脚本

int main() {//提取的密文unsigned char s1[] = { 0x00,0x82,0x11,0x92,0xa8,0x39,0x82,0x28,0x9a,0x61,0x58,0x8b,0xa2,0x43,0x68,0x89,0x4,0x8f,0xb0,0x43,0x49,0x3a,0x18,0x39,0x72,0xc,0xba,0x76,0x98,0x13,0x8b,0x46,0x33,0x2b,0x25,0xa2,0x8b,0x27,0xb7,0x61,0x7c,0x3f,0x58 };//提取的秘钥unsigned char s2[] = { 0x18,0xb1,0x9,0xa4,0xa6,0x2a,0x9e,0x1b,0x96,0x57,0x5d,0xad,0xae,0x75,0x65,0xac,0x9,0x8c,0xa0,0x76,0x47,0x2c,0x10,0x1,0x7c,0xf,0xba,0x47,0x95,0x30,0x9b,0x74,0x3f,0x2d,0x2d,0x9a,0x87,0x31,0xba,0x43,0x70,0x2c,0x4c };unsigned char s3[128] = { 0 };for (int i = 0; i < 43; i++) {s3[i] = s1[i] ^ s2[i];}//还原base64分割模块char s4[128] = { 0 };int j = 0;for (int i = 0; i < 44; i += 4, j += 3) {s4[j] = (s3[i] << 2) | (s3[i + 1] >> 4);s4[j+1] = (s3[i+1] << 4) | (s3[i + 2] >> 2);s4[j+2] = (s3[i+2] << 6) | s3[i + 3];}printf("%s", s4);return 0;
}

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

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

相关文章

太阳诱电电感选型方法及产品介绍

功率电感在电子电路中被广泛应用&#xff0c;太阳诱电的功率电感从原材料开始进行研发&#xff0c;生产和销售。 本次研讨会将带领大家更加了解功率电感的选型方法&#xff0c;以及各种功率电感的种类和特征。 此外&#xff0c;也将介绍太阳诱电的最新产品阵容。本次研讨会预计…

边学边用docker-为什么要进到容器里面修改权限

在 Docker 容器中修改文件夹权限&#xff0c;通常需要进入容器内部来执行命令&#xff0c;这是因为 Docker 容器提供了一个隔离的环境&#xff0c;其内部的文件系统与宿主机是隔离的。 1. 隔离性&#xff1a;Docker 容器设计为轻量级的隔离环境&#xff0c;每个容器都有自己的…

如何在表中设置主键约束?

主键约束是数据库表设计中的一种完整性约束&#xff0c;用于唯一标识表中的每一行。 每个表只能有一个主键&#xff0c;且主键值必须是唯一的&#xff0c;并且不能为NULL。主键可以由一个字段或多个字段组成。 主键的存在有助于提高数据检索的速度和确保数据的完整性和一致性…

vue2和vue3中的组件间通信知识点总结

vue2中组件间通信 在Vue2中&#xff0c;组件间的通信是构建复杂应用的关键。以下是一些常见的Vue2组件间通信方式&#xff0c;并附有详细说明和示例&#xff1a; 1. Props&#xff08;父子组件通信&#xff09; Props是Vue中用于父子组件通信的一种机制。父组件通过属性&…

社工字典生成工具 —— CeWL 使用手册

GitHub - digininja/CeWL: CeWL is a Custom Word List GeneratorCeWL is a Custom Word List Generator. Contribute to digininja/CeWL development by creating an account on GitHub.https://github.com/digininja/CeWL/ 0x01&#xff1a;CeWL 简介 CeWL&#xff08;Cust…

openmmlab实现图像超分辨率重构

文章目录 前言一、图像超分辨率重构简介二、mmmagic实现图像超分 前言 超分辨率重构技术&#xff0c;作为计算机视觉领域的一项重要研究课题&#xff0c;近年来受到了广泛关注。随着科技的飞速发展&#xff0c;人们对图像质量的要求越来越高&#xff0c;尤其是在智能手机、监控…

【算法】链表:24.两两交换链表中的节点

目录 1、题目链接 2、题目介绍 3、解法 4、代码 1、题目链接 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 3、解法 引入伪头节点&#xff1a; 为了处理头节点可能被交换的情况&#xff0c;我们引入一个伪头节点&#xff08;dummy no…

AI助力农作物自动采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物&#xff0c;专家设计出来了很多用于采摘不同农作物的大型机械&#xff0c;看着非常震撼&#xff0c;但是我们国内农业的发展还是相对比较滞后的&#xff0…

快速生成单元测试

1. Squaretest插件 2. 依赖 <dependency><groupId>junit</groupId>

Mysql和Oracle使用差异和主观感受

这两种常用的关系型数据库有何差异&#xff1f; 支持和社区 MySQL&#xff1a;有一个活跃的开源社区&#xff0c;用户可以获取大量的文档和支持。 Oracle&#xff1a;提供了专业的技术支持&#xff0c;但通常需要额外的费用。 易用性 MySQL&#xff1a;通常被认为是更易于学…

新赚米渠道,天工AI之天工宝典!

新赚米渠道&#xff0c;天工AI之天工宝典&#xff01; 引言 随着人工智能和数字创作工具的发展&#xff0c;内容创作的门槛不断降低&#xff0c;为普通用户提供了更多的赚钱机会。在这样的背景下&#xff0c;天工AI应运而生&#xff0c;凭借其强大的创作能力和最新更新的“天…

JZ2440开发板——异常与中断

以下内容源于韦东山课程的学习与整理&#xff0c;如有侵权请告知删除。 一、中断概念的引入与处理流程 1.1 中断概念的引入 这里有一个很形象的场景比喻&#xff1a;假设一位母亲在大厅里看书&#xff0c;婴儿在房间里睡觉&#xff0c;这位母亲怎样才能知道这个孩子睡醒了&a…

ESP32-C3实现GPIO输出高低电平

1. 定义 GPIO 管脚 首先&#xff0c;定义你将要使用的 GPIO 管脚号。 #define GPIO_OUTPUT_PIN 2 // 定义一个 GPIO 管脚作为输出2. 初始化 GPIO 在 setup() 函数中&#xff0c;配置该 GPIO 管脚为输出模式。 void setup() {pinMode(GPIO_OUTPUT_PIN, OUTPUT); // 设置 GPIO …

【MODIS处理工具】MRT(MODIS Reprojection Tool) 下载及安装

【MODIS处理工具】MRT下载及安装教程 MRT软件下载MRT软件使用参考1999年12月,中分辨率成像光谱仪MODIS搭载美国宇航局NASA对地观测系统EOS平台的Terra卫星发射到太空。2002年5月,第二个MODIS传感器搭载Aqua卫星发射。MODIS的主要任务是对地球陆地、海洋和大气进行连续的全面观…

《Linux从小白到高手》理论篇:Linux的系统环境管理

List item 值此国庆佳节&#xff0c;深宅家中&#xff0c;闲来无事&#xff0c;就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下&#xff0c;如果你下载并安装了应用程序&#xff0c;很有可能在键入它的名称时出现“command not found”的提示…

【PPT工具】三维绘图神器ThreeD Tools插件安装及使用

【PPT工具】三维绘图神器ThreeD Tools插件安装及使用 1 ThreeD Tools插件安装及加载1.1 ThreeD Tools插件安装1.2 ThreeD Tools插件加载 2 ThreeD Tools插件使用绘制渐变箭头 参考 ThreeD Tools是一款Microsoft PowerPoint的第三方插件&#xff0c;是“只为设计”为“般若黑洞”…

代码与财富:程序员如何利用技术优势投资金融?

最近A股很火热啊&#xff0c;根据最新统计&#xff0c;超过70%的程序员表示对金融投资感兴趣&#xff0c;但只有不到20%的人真正了解如何利用他们的技术优势。今天&#xff0c;我们将打破这一局面。在数字时代&#xff0c;程序员不仅是代码的创造者&#xff0c;更是财富的探索者…

众智OA办公系统 Account/Login SQL注入漏洞复现

0x01 产品简介 众智OA办公系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台。它凭借先进的技术和人性化的设计理念,实现了信息的快速传递和自动化处理,帮助企业和机构实现信息化、自动化、智能化和标准化的办公管理。 0x02 漏洞概述 众智OA办公系统 Acc…

【C语言】使用结构体实现位段

文章目录 一、什么是位段二、位段的内存分配1.位段内存分配规则练习1练习2 三、位段的跨平台问题四、位段的应用五、位段使用的注意事项 一、什么是位段 在上一节中我们讲解了结构体&#xff0c;而位段的声明和结构是类似的&#xff0c;它们有两个不同之处&#xff0c;如下&…

【重学 MySQL】四十四、相关子查询

【重学 MySQL】四十四、相关子查询 相关子查询执行流程示例使用相关子查询进行过滤使用相关子查询进行存在性检查使用相关子查询进行计算 在 select&#xff0c;from&#xff0c;where&#xff0c;having&#xff0c;order by 中使用相关子查询举例SELECT 子句中使用相关子查询…