re学习(26)攻防世界-re-BABYRE(IDA无法分析出函数-代码混淆)

题目链接:
https://adworld.xctf.org.cn/challenges/list

elf是一种对可执行文件,目标文件和库使用的文件格式,跟window下的PE文件格式类似。载入IDA后如果需要对此文件进行远程调试,需要用linux系统,比如说Ubuntu,kali等

一般应对策略:使用按键U,告诉IDA,这是一个数据(通常是一个字节就够了),然后在下一个位置,点击C告诉IDA又可以开始按照代码来解释

 然后下面就是看汇编代码了:

先恶补一下汇编知识吧(要不真的看不懂汇编指令......)

'rbp'寄存器是一个基址指针寄存器,用于指向函数的栈帧。栈帧是函数在执行时在栈上所创建的一块内存区域,用于存储局部变量,函数参数,返回地址等信息。在函数调用过程中,‘rbp‘用于维护栈帧的指针,以便在函数执行结束后能够恢复调用者的上下文。

在函数调用过程中,通常会先将返回地址和其他寄存器的值(如’rbx‘,'rdi','rsi','rdx'等)压入栈中,然后将’rbp‘的值压入栈中

汇编代码分析:输入值循环与i进行异或,然后与str进行比较,如果相等则成功!

public judge
.data:0000000000600B00 judge:                                  ; CODE XREF: main+80↑p
.data:0000000000600B00                                         ; DATA XREF: main+16↑r
.data:0000000000600B00                                         ; main+27↑w
.data:0000000000600B00                                         ; main+74↑o
.data:0000000000600B00 push    rbp
.data:0000000000600B01 mov     rbp, rsp
.data:0000000000600B04 mov     [rbp-28h], rdi
.data:0000000000600B08 mov     byte ptr [rbp-20h], 66h ; 'f'
.data:0000000000600B0C mov     byte ptr [rbp-1Fh], 6Dh ; 'm'
.data:0000000000600B10 mov     byte ptr [rbp-1Eh], 63h ; 'c'
.data:0000000000600B14 mov     byte ptr [rbp-1Dh], 64h ; 'd'
.data:0000000000600B18 mov     byte ptr [rbp-1Ch], 7Fh
.data:0000000000600B1C mov     byte ptr [rbp-1Bh], 6Bh ; 'k'
.data:0000000000600B20 mov     byte ptr [rbp-1Ah], 37h ; '7'
.data:0000000000600B24 mov     byte ptr [rbp-19h], 64h ; 'd'
.data:0000000000600B28 mov     byte ptr [rbp-18h], 3Bh ; ';'
.data:0000000000600B2C mov     byte ptr [rbp-17h], 56h ; 'V'
.data:0000000000600B30 mov     byte ptr [rbp-16h], 60h ; '`'
.data:0000000000600B34 mov     byte ptr [rbp-15h], 3Bh ; ';'
.data:0000000000600B38 mov     byte ptr [rbp-14h], 6Eh ; 'n'
.data:0000000000600B3C mov     byte ptr [rbp-13h], 70h ; 'p'
.data:0000000000600B40 mov     dword ptr [rbp-4], 0
.data:0000000000600B47 jmp     short loc_600B71
.data:0000000000600B47
.data:0000000000600B49 ; ---------------------------------------------------------------------------
.data:0000000000600B49
.data:0000000000600B49 loc_600B49:                             ; CODE XREF: .data:0000000000600B75↓j
.data:0000000000600B49 mov     eax, [rbp-4]
.data:0000000000600B4C movsxd  rdx, eax
.data:0000000000600B4F mov     rax, [rbp-28h]
.data:0000000000600B53 add     rax, rdx
.data:0000000000600B56 mov     edx, [rbp-4]
.data:0000000000600B59 movsxd  rcx, edx
.data:0000000000600B5C mov     rdx, [rbp-28h]
.data:0000000000600B60 add     rdx, rcx
.data:0000000000600B63 movzx   edx, byte ptr [rdx]
.data:0000000000600B66 mov     ecx, [rbp-4]                    ; ecx=i
.data:0000000000600B69 xor     edx, ecx                        ; input[i]^i
.data:0000000000600B6B mov     [rax], dl
.data:0000000000600B6D add     dword ptr [rbp-4], 1            ; i++
.data:0000000000600B6D
.data:0000000000600B71
.data:0000000000600B71 loc_600B71:                             ; CODE XREF: .data:0000000000600B47↑j
.data:0000000000600B71 cmp     dword ptr [rbp-4], 0Dh
.data:0000000000600B75 jle     short loc_600B49
.data:0000000000600B75
.data:0000000000600B77 mov     dword ptr [rbp-4], 0
.data:0000000000600B7E jmp     short loc_600BA9
.data:0000000000600B7E
.data:0000000000600B80 ; ---------------------------------------------------------------------------
.data:0000000000600B80
.data:0000000000600B80 loc_600B80:                             ; CODE XREF: .data:0000000000600BAD↓j
.data:0000000000600B80 mov     eax, [rbp-4]
.data:0000000000600B83 movsxd  rdx, eax
.data:0000000000600B86 mov     rax, [rbp-28h]
.data:0000000000600B8A add     rax, rdx
.data:0000000000600B8D movzx   edx, byte ptr [rax]
.data:0000000000600B90 mov     eax, [rbp-4]
.data:0000000000600B93 cdqe
.data:0000000000600B95 movzx   eax, byte ptr [rbp+rax-20h]
.data:0000000000600B9A cmp     dl, al
.data:0000000000600B9C jz      short loc_600BA5
.data:0000000000600B9C
.data:0000000000600B9E mov     eax, 0
.data:0000000000600BA3 jmp     short loc_600BB4
.data:0000000000600BA3
.data:0000000000600BA5 ; ---------------------------------------------------------------------------
.data:0000000000600BA5
.data:0000000000600BA5 loc_600BA5:                             ; CODE XREF: .data:0000000000600B9C↑j
.data:0000000000600BA5 add     dword ptr [rbp-4], 1
.data:0000000000600BA5
.data:0000000000600BA9
.data:0000000000600BA9 loc_600BA9:                             ; CODE XREF: .data:0000000000600B7E↑j
.data:0000000000600BA9 cmp     dword ptr [rbp-4], 0Dh
.data:0000000000600BAD jle     short loc_600B80
.data:0000000000600BAD
.data:0000000000600BAF mov     eax, 1
.data:0000000000600BAF
.data:0000000000600BB4
.data:0000000000600BB4 loc_600BB4:                             ; CODE XREF: .data:0000000000600BA3↑j
.data:0000000000600BB4 pop     rbp
.data:0000000000600BB5 retn
.data:0000000000600BB5

编写脚本:

ff=[0x66,0x6D,0x63,0x64,0x7F,0x6B,0x37,0x64,0x3B,0x56,0x60,0x3B,0x6E,0x70]
flag=''
for i in range(0xE):ff[i]=ff[i]^iflag+=chr(ff[i])#chr()函数与ord()函数用于ASCII与字符之间的转换
print(flag)
#flag{n1c3_j0b}

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

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

相关文章

【机器学习】西瓜书学习心得及课后习题参考答案—第3章线性模型

过了一遍第三章,大致理解了内容,认识了线性回归模型,对数几率回归模型,线性判别分析方法,以及多分类学习,其中有很多数学推理过程以参考他人现有思想为主,没有亲手去推。 术语学习 线性模型 l…

排序八卦炉之冒泡、快排

文章目录 1.冒泡排序1.1代码实现1.2复杂度 2.快速排序2.1人物及思想介绍【源于百度】2.2hoare【霍尔】版本1.初识代码2.代码分析3.思其因果 3.相关博客 1.冒泡排序 1.1代码实现 //插入排序 O(N)~O(N^2) //冒泡排序 O(N)~O(N^2) //当数据有序 二者均为O(N) //当数据接近有序或…

【多模态】ALIGN——使用噪声文本数据进行视觉语言感知预训练

ALIGN: A Large-scale ImaGe and Noisy-text embedding 目录 🍭🍭1.网络介绍 🍭🍭2.大规模噪声图像文本数据集 🐸🐸2.1图像过滤器 🐸🐸2.2文本过滤器 🍭&#x1f3…

Bean的实例化方法

目录 1.工厂模式通常有三种形态: 2.简单工厂 2.1 静态工厂 2.1通过factory-bean实例化 2.3通过FactoryBean接口实例化 3.测试 关于容器的使用 3.1获得spring文件方式 3.2getBean方式 4.关闭容器 1.工厂模式通常有三种: 第一种:简单工…

利用鸿鹄快速构建公司IT设备管理方案

需求描述 相信应该有一部分朋友跟我们一样,公司内部有很多各种各样的系统,比如资产管理、CRM、issue管理等等。这篇文章介绍下,鸿鹄是如何让我们的资产系统,按照我们的需求展示数据的。 我们的资产管理系统,是使用开源…

Go语音介绍

Go语言介绍 Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言。 Go是静态强类型语言,是区别于解析型语言的编译型语言。 解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。 编译型语言——源代码编…

Vue3描述列表(Descriptions)

😁 整体功能效果与 ant design vue 保持高度一致 😁 包含两种组件:Descriptions 和 DescriptionsItem(必须搭配使用!) 效果如下图:在线预览 APIs Descriptions 参数说明类型默认值必传title…

删除注释(力扣)

删除注释 题目 给一个 C 程序,删除程序中的注释。这个程序source是一个数组,其中source[i]表示第 i 行源码。 这表示每行源码由 ‘\n’ 分隔。 在 C 中有两种注释风格,行内注释和块注释。 字符串// 表示行注释,表示//和其右侧…

冒泡排序【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 比较前后相邻的两个数据,如果前面数据大于后面的数据,就将这两个数据互换。这样对数组的第0个数据到第 N - 1 个数据进行一次遍历后,最大的一个数据就 “沉” 到数组的第 N - 1 个位置。 N N - …

知识区博主转型——兼做知识区和改造区博主!!!!!

想脱单的进来,一起交流如何能脱单!!! 为什么——我太羡慕有对象的人了哭死!!!!!! 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好&#xff…

FPGA学习—通过数码管实现电子秒表模拟

文章目录 一、数码管简介二、项目分析三、项目源码及分析四、实现效果五、总结 一、数码管简介 请参阅博主以前写过的一篇电子时钟模拟,在此不再赘述。 https://blog.csdn.net/qq_54347584/article/details/130402287 二、项目分析 项目说明:本次项目…

RISCV 5 RISC-V调用规则

RISCV 5 RISC-V调用规则 1 Register Convention1.1 Integer Register Convention1.2 Floating-point Register Convention 2. Procedure Calling Convention2.1 Integer Calling Convention2.2 Hardware Floating-point Calling Convention2.3 ILP32E Calling Convention2.4 Na…

大数据课程F4——HIve的其他操作

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握HIve的join; ⚪ 掌握HIve的查询和排序 ⚪ 掌握HIve的beeline ⚪ 掌握HIve的文件格式 ⚪ 掌握HIve的基本架构 ⚪ 掌握HIve的优化; 一、jo…

想了解好用的翻译pdf的软件吗?

在全球化的时代背景下,跨国贸易越来越普遍,跨语言沟通也越来越频繁。小黄是一家跨国公司的员工,他梦想能在全球各地拓展自己的业务,奈何遇到了一个巨大的挑战:跨语言沟通。在这其中,pdf文件是他经常接收到的…

linux基本功系列之cd命令实战

文章目录 前言一. cd命令的介绍二. 语法格式及常用选项三. 参考案例总结 前言 居然发现了落下了CD命令,也不算落下把,主要是cd命令内容太少,撑不起一篇文章,今天也写一写,就当记个笔记吧 🏠个人主页&#…

ubuntu下,在vscode中使用platformio出现 Can not find working Python 3.6+ Interpreter的问题

有一段时间没有使用platformio了,今天突然使用的时候,发现用不了,报错: Ubuntu PlatformIO: Can not find working Python 3.6 Interpreter. Please install the latest Python 3 and restart VSCode。 上网一查,发现…

【Liux下6818开发板(ARM)】触摸屏

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

MacOS上用docker运行mongo及mongo-express

MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 前提 要求…

高校陆续拥抱chatgpt,人工智能会给学术带来什么变化会有什么影响

在当今信息爆炸的时代,人工智能在各行各业都发挥着越来越重要的作用,高校教育领域也不例外。最近,越来越多的高校开始陆续拥抱chatgpt(Chatbot GPT)这一人工智能技术,在学术领域会带来了怎样的变化与影响&a…

【RabbitMQ(day3)】扇形交换机和主题交换机的应用

文章目录 第三种模型(Publish/Subscribe 发布/订阅)扇型(funout)交换机Public/Subscribe 模型绑定 第四、第五种模型(Routing、Topics)第四种模型(Routing)主题交换机(To…