首页 > 编程语言 >实战逆向RUST语言程序

实战逆向RUST语言程序

时间:2024-10-09 09:11:00浏览次数:8  
标签:实战 逆向 int base64 char s3 网安 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

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 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;
}

更多网安技能的在线实操练习,请点击这里>>

‍  

标签:实战,逆向,int,base64,char,s3,网安,RUST
From: https://www.cnblogs.com/hetianlab/p/18453517

相关文章

  • 鸿蒙 Next 实战: 烟花模拟器
    前言通过上一篇文章可以看出,要在鸿蒙应用中实现特别炫的特效还是比较复杂。动画固然重要,但如果在赶工期的情况下,大家都会优先业务,那有没有简单快速的方法呢?有的,也用像Android和iOS里WebView的方式,h5的特效现在是应有尽有,把他嵌入鸿蒙Next应用里就可以,那如何在鸿蒙Next......
  • 自动机器学习(AutoML):实战项目中的应用与实现
    自动机器学习(AutoML):实战项目中的应用与实现目录......
  • 第二节:基于.Net 链接Mongodb实战
     三. 实操(详见官网:https://www.mongodb.com/zh-cn/docs/drivers/csharp/current/quick-start/)1.相关程序集 【MongoDB.Driver2.17.1】  相关实体:加上如下特性,id值自动生成。publicclassShipInfo{///<summary>///自动生成id/......
  • 逆向 Virustotal 搜索接口 X-VT-Anti-Abuse-Header
    搜索示例搜索123,网页地址为:https://www.virustotal.com/gui/search/123/comments请求接口GET/ui/search?limit=20&relationships%5Bcomment%5D=author%2Citem&query=123HTTP/1.1Accept-Encoding:gzip,deflate,br,zstdAccept-Ianguage:en-US,en;q=0.9,es;q=0.8Accep......
  • Spring JdbcTemplate与NamedJdbcTemplate模板的实战案例与优化解析
    前言基于SpringJdbcTemplate来实现用户的增删改查案例,以及NamedJdbcTemplate模版的优化案例,和SpringJDBC相关支持类使用。 基本案例实现创建JavaWeb项目,使用JDBCTemplate对MySQL用户表进行增删改查操作。第一步:创建JavaWeb项目,创建数据库表,配置pom.xml文件t_user:......
  • Python 游戏开发实战:从入门到精通
    Python是一种功能强大的编程语言,也可以用于开发各种有趣的游戏。在这篇文章中,我们将介绍一些使用Python编写游戏代码的基础知识和示例,帮助你踏上游戏开发的征程。 Pygame库的介绍与安装Pygame是一个专门用于游戏开发的Python库,它提供了丰富的功能和工具,使得开发游戏变......
  • 鸿蒙开发教程实战案例源码分享-仿微信长按录音效果
    鸿蒙开发仿微信长按录音效果如果你项目有IM聊天,那么长按录音功能是必须的,最好是跟微信一样的效果,对不对。一、思路:自定义触碰事件二、效果图:鸿蒙开发教程实战案例源码分享-仿微信长按录音效果三、关键代码://联系:893151960@Entry@ComponentstructIndex{......
  • 文盘rust--使用 Rust 构建RAG
    作者:京东科技贾世闻RAG(Retrieval-AugmentedGeneration)技术在AI生态系统中扮演着至关重要的角色,特别是在提升大型语言模型(LLMs)的准确性和应用范围方面。RAG通过结合检索技术与LLM提示,从各种数据源检索相关信息,并将其与用户的问题结合,生成准确且丰富的回答。这一机制特别适用于需......
  • 鸿蒙 Next 实战: 电子木鱼
    前言正所谓:HelloWord是程序员学任何一门语言的第一个程序实践。这其实也是一个不错的正反馈,那如何让学习鸿蒙Next更有成就感呢?下面就演示一下从零开发一个鸿蒙Next版的电子木鱼,主打就是一个抽象! 实现要点页面布局木鱼点击木鱼音效动画特效自定义弹窗 开始实......
  • 鸿蒙 Next 实战: 环境搭建
    前言作为独立开发者,如果我们错过了传统移动App,和后起小程序的红利,那万物互联+AI的应用开发就得抓住了。虽然个人上架应用平台难易都差不多,但是鸿蒙生态当前正需要广大开发者参与,一旦上架,相比其他平台,流量扶持力度更大,变现能力也更容易。所以,我们可以先开发一些应用占个位置......