实战逆向RUST语言程序

news2024/12/23 5:10:54

实战为主,近日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.coloradmin.cn/o/2203684.html

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

相关文章

制造业人工智能的场景应用落地现状、难点和建议

制造业应用人工智能可以提高制造业的生产效率&#xff0c;推动制造业高质量发展和竞争力提升&#xff0c;促进国民经济的持续稳定增长。近年来&#xff0c;制造业人工智能的场景化应用落地不断推进&#xff0c;但在落地过程中遇到一些难点。本文对于制造企业应用人工智能的场景…

AVL树如何维持平衡

1.AVL树的特性 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种…

【工具使用】使用Docsify搭建个人文档网站

检查Node.js安装状态 首先&#xff0c;打开命令提示符&#xff08;CMD&#xff09;&#xff0c;输入以下命令以验证Node.js是否已经安装在您的电脑上&#xff1a; node -v安装Docsify CLI工具 接下来&#xff0c;通过以下命令全局安装Docsify的命令行工具&#xff1a; npm …

保护企业知识产权!推荐十款源代码加密软件

在现代软件开发中&#xff0c;源代码是企业最重要的资产之一。然而&#xff0c;源代码的泄露可能导致巨大的经济损失和知识产权问题。为帮助企业保护其源代码安全&#xff0c;以下推荐十种源代码加密软件&#xff0c;确保你的知识产权不受侵犯。 1. Ping32 Ping32不仅是一款终…

Biomamba求职| 国奖+4篇一作SCI

转眼间我也要参加秋招啦&#xff0c;认真的求职帖&#xff0c;各位老师/老板欢迎联系~其它需要求职的小伙伴也欢迎把简历发给我们&#xff0c;大家一起找工作。 一、基本信息 姓名&#xff1a;Biomamba 性别&#xff1a;男 出厂年份&#xff1a;1998 籍贯&#xff1a;浙江…

FileLink文件摆渡系统应用场景深入分析(一文读懂)

在现代企业的运营中&#xff0c;文件传输与管理的效率直接影响业务的流畅性与安全性。FileLink文件摆渡系统凭借其强大的功能和灵活的应用场景&#xff0c;成为企业信息流动的重要工具。本文将深入分析FileLink文件摆渡系统的几种典型应用场景&#xff0c;展示其在各行业中的价…

【docker】要将容器中的 livox_to_pointcloud2 文件夹复制到宿主机上

复制文件夹 使用 docker cp 命令从容器复制文件夹到宿主机&#xff1a; docker cp <container_id_or_name>:/ws_livox/src/livox_to_pointcloud2 /path/to/host/folder sudo docker cp dandong_orin_docker:/ws_livox/src/livox_to_pointcloud2 /home

AI时代AI提示词学习路线

AI时代&#xff0c;万丈高楼平地起&#xff0c;AI提示词就是基石&#xff01; AI提示词是工具&#xff0c;你不应该先学各种技巧再开始用&#xff0c;而应该先用起来再学习各种技巧。 AI时代AI提示词学习路线&#xff1a; 1、养成习惯&#xff1a;遇事不决问AI。 2、带着问题…

2024.10月7~10日 进一步完善《电信资费管理系统》

一、新增的模块&#xff1a; 在原项目基础上&#xff0c;新增加了以下功能&#xff1a; 1、增加AspectJ 框架的AOP 异常记录和事务管理模块。 2、增加SpringMVC的拦截器&#xff0c;实现登录 控制页面访问权限。 3、增加 Logback日志框架&#xff0c;记录日志。 4、增加动态验…

代码随想录算法训练营第四十六天 | 647. 回文子串,516.最长回文子序列

四十六天打卡&#xff0c;今天用动态规划解决回文问题&#xff0c;回文问题需要用二维dp解决 647.回文子串 题目链接 解题思路 没做出来&#xff0c;布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0…

【JavaEE】——回显服务器的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;引入 1&#xff1a;基本概念 二&#xff1a;UDP socket API使用 1&#xff1a;socke…

zookeeper ——watcher

这应该不是目录 1.watcher定义和说明1.1定义1.2特性1.3watcher的通知状态Watcher.Event.KeeperState1.4watcher的事件类型Event.EventType1.5基本流程 1.watcher定义和说明 1.1定义 在ZooKeeper中&#xff0c;Watcher是一种机制&#xff0c;用于在节点&#xff08;znode&#…

2024百度云智大会|百度大模型内容安全合规探索与实践

9月25日&#xff0c;2024百度云智大会在北京举办。会上&#xff0c;百度智能云分别针对算力、模型、AI 应用&#xff0c;全面升级百舸 AI 异构计算平台 4.0、千帆大模型平台 3.0 两大 AI 基础设施&#xff0c;并升级代码助手、智能客服、数字人三大 AI 原生应用产品。 在大模型…

网络编程(17)——asio多线程模型IOThreadPool

十七、day17 之前我们介绍了IOServicePool的方式&#xff0c;一个IOServicePool开启n个线程和n个iocontext&#xff0c;每个线程内独立运行iocontext, 各个iocontext监听各自绑定的socket是否就绪&#xff0c;如果就绪就在各自线程里触发回调函数。为避免线程安全问题&#xf…

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果&#xff0c;作为提升用户体验的重要手段&#xff0c;在网页和应用开发中扮演着举足轻重的角色…

【笔记学习篇】一篇文章搞定Mybatis-快速回顾

概述 5.1.1 Mybatis简介 Mybatis是一款优秀的持久层框架&#xff0c;它以sql为中心&#xff0c;支持定制化sql、存储过程以及高级映射。 使用Mybatis框架&#xff0c;可以无需手动编写基础的JDBC代码、无需手动设置参数和转换结果集到对象。 Mybatis可以使用简单的xml或注解来…

App测试时常用的adb命令

adb 全称为 Android Debug Bridge&#xff08;Android 调试桥&#xff09;&#xff0c;是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。 adb 是一种功能强大的命令行工具&#xff0c;可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作&#xff0…

银发产业资讯丨蚂蚁集团、金城药业、百联集团、京东健康布局业务

银发经济『新趋势大数据』 AgeNews 每日银发产业大事件速览 2024-10-8 星期二 AgeClub整理 金融监管总局&#xff1a;鼓励险企提供更多养老保障服务 蚂蚁集团等签署合作协议&#xff0c;聚焦智慧医疗领域 金城医药等合作聚焦年长女性健康科技领域 京东健康助力四川发放…

Internet Download Manager6.42免费版下载神器新体验

&#x1f680; 开篇就燃&#xff01;你的下载速度被“TA”承包了 #### &#x1f31f; 初识IDM 6.42&#xff0c;下载界的“超跑”驾到 各位追求效率的小伙伴们&#xff0c;今天小红要来揭秘一款让我彻底告别“龟速”下载的神器——Internet Download Manager (简称IDM) 6.42版&…

日语学习零基础生活日语口语柯桥外语学校|股票用日语怎么说?

在日语中&#xff0c;“股票”可以说&#xff1a; • 株&#xff08;かぶ&#xff09; 这是最常用的表达方式&#xff0c;直接表示“股票”。 例如&#xff1a; 株を買う - 买股票 株を売る - 卖股票 • 株式&#xff08;かぶしき&#xff09; 这个词也是“股票”的意…