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

news2024/11/22 18:29:32

题目链接:
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

编写脚本:

 

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

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

相关文章

卡了大半天的联调问题

卡了大半天的联调问题 问题:别人dubbo总是调不通我的服务 问题:别人dubbo总是调不通我的服务 org.apache.dubbo.remoting.RemotingException: client(url: dubbo://192.168.56.1:28085/com.alibaba.cloud.dubbo.service.DubboMetadataService?actives1…

8.2day03 Redis入门+解决员工模块

概述 在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景&#xff0…

Jest和Mocha对比:两者之间有哪些区别?

目录 什么是单元测试? Jest和Mocha介绍 Jest Jest的特点: Jest的使用限制 Mocha Mocha的特点 使用Mocha的限制 Jest和Mocha的全面比较 我们应该使用哪个测试框架? 结论 什么是单元测试? 所谓单元测试,是对软…

LabVIEW开发多材料摩擦电测量控制系统

LabVIEW开发多材料摩擦电测量控制系统 摩擦电效应是两个物体摩擦在一起,电荷从一个物体转移到另一个物体的现象,从而导致两个物体携带相等和相反的电荷。接触和充电是主导该过程的两个关键因素。当静电荷累积到一定水平时,可能会出现放电现象…

Profile多环境配置以及结合Maven如何使用

文章目录 一、前言二、如何使用profile多环境配置2.1、编写各环境的配置文件2.2、如何让配置文件生效 三、结合Maven使用 一、前言 我们在开发项目的过程中,会遇到需要使用多套环境配置的情况,因为不同环境可能存在不同的配置,比如数据库连接…

eNSP 路由器启动时一直显示 # 号的解决办法

文章目录 1 问题截图2 解决办法2.1 办法一:排除防火墙原因导致 3 验证是否成功 1 问题截图 路由器命令行一直显示 # 号,如下图 2 解决办法 2.1 办法一:排除防火墙原因导致 排查是否因为系统防火墙原因导致。放行与 eNSP 和 virtualbox 相…

Shiro框架基本使用

一、创建maven项目&#xff0c;引入依赖 <dependencies><dependency><groupId>org.apache.directory.studio</groupId><artifactId>org.apache.commons.codec</artifactId><version>1.8</version></dependency><!-- …

A-LOAM安装与配置

GitHub https://github.com/HKUST-Aerial-Robotics/A-LOAM 依赖项 需要安装Ceres Slover和PCL PLC之前已经安装过&#xff0c;因此只需要安装Ceres Solver 编译安装Ceres Slover报错 官方的安装指南 http://ceres-solver.org/installation.html 一开始是git下来的最新版本的…

r一个高性能、无侵入的 Java 性能监控和统计工具

背景 随着所在公司的发展&#xff0c;应用服务的规模不断扩大&#xff0c;原有的垂直应用架构已无法满足产品的发展&#xff0c;几十个工程师在一个项目里并行开发不同的功能&#xff0c;开发效率不断降低。 于是公司开始全面推进服务化进程&#xff0c;把团队内的大部分工程…

官网下载历史版本Android studio

有时我们个更新到了最新版本的AndroidStudio&#xff0c;但发现最新版的有一些bug影响使用&#xff0c;这时我们需要将新版卸载安装到旧版本&#xff0c;本文便是记录如何在官网下载旧版本的android studio。 下载地址 1、查看Release notes 2、查看过往版本 3、点击下载旧版…

Jenkins持续集成实现过程(简易版)

我就用一台服务器模拟&#xff0c;gitlab用公司现成的&#xff0c;jenkins安装发版都是在同一台服务器上 安装Jenkins&#xff08;Docker&#xff09; 宿主机上创建数据映射目录 mkdir /data/jenkins给映射目录权限&#xff0c;不然jenkins用不了 chmod -R 777 /data/jenkin…

【es6】Promise实现

友情链接 关于promise的介绍&#xff0c;请看此篇水文 本篇文章只是介绍实现promise以及promise常用方法。 正文 Promise使用 let promise new Promise((resolve,reject)>{resolve(success); //这里如果是reject(fail) }); promise.then((res)>{console.log(res); …

企业AD域管理:ADManager Plus助您轻松掌控全局

在现代企业中&#xff0c;Active Directory&#xff08;AD&#xff09;域是一个至关重要的组成部分。它作为一种身份验证和授权机制&#xff0c;管理着企业网络中的用户、计算机、组和其他资源。然而&#xff0c;随着企业规模和复杂性的不断增长&#xff0c;AD域的管理变得越来…

深入挖掘地核和地幔之间的相互作用

一本新书介绍了我们在理解地核-地幔相互作用和共同进化方面的重大进展&#xff0c;并展示了提高我们对地球深层过程的洞察力的技术发展。 与地核-地幔共同演化相关的地球深层结构和动力学的图示。图片来源&#xff1a;白石千寻 Editors Vox是 AGU 出版部的博客。 地球深层内部很…

螺杆支撑座使用深沟球轴承和角接触球轴承的区别?

螺杆支撑座是连接丝杆和电机的轴承固定座&#xff0c;与滚珠螺杆搭配使用&#xff0c;能够获得高刚性、高精度的稳定的回转性能&#xff0c;因此被广泛应用在各行各业中。 使用螺杆支撑座之所以能够获得稳定的回转性能&#xff0c;主要是因为最佳轴承的使用&#xff0c;通俗点说…

IDEA中怎么将代码提交代码到远程仓库

假设代码已经写好,现在准备提交到远程仓库 git会自动帮我们在远程托管平台中创建一个仓库这里我选用的是gitee 如果还没有注册gitee 请先去注册,第一次使用需要登录gitee账号 登录我们自己的gitee账号,会发现git自动创建了一个仓库 如果我们又修改了 代码,想重新提交到远程仓库…

DreamBooth为何有能力让第一个应用创建者年赚2500万美金?

DreamBooth 是一种个性化的文本到图像生成模型&#xff0c;它可以通过向扩散模型&#xff08;比如Stable Diffusion&#xff09;中注入少量主体对象&#xff0c;从而达到对基础模型的微调。使用微调后的模型可以生成在不同的场景、姿势和视角中的该主体上下文图像。 Dreamboot…

单通道 6GSPS 16位采样DAC子卡模块--【资料下载】

FMC147是一款单通道6.4GSPS&#xff08;或者配置成2通道3.2GSPS&#xff09;采样率的12位AD采集、单通道6GSPS&#xff08;或配置成2通道3GSPS&#xff09;采样率16位DA输出子卡模块&#xff0c;该板卡为FMC标准&#xff0c;符合VITA57.4规范&#xff0c;该模块可以作为一个理想…

如何通过sqlplus连接oracle数据库

本文介绍如果通过sqlplus连接oracle数据库。如果用SQL Developer连接数据库服务器端&#xff0c;需要本地安装oracle客户端&#xff0c;而oracle客户端安装包比较大&#xff0c;安装配置也比较繁琐。这里推荐安装使用oracle的Instant Client。Instant Client是Oracle发布的轻量…

iMX6ULL驱动开发 | 让imx6ull开发板支持usb接口FC游戏手柄

手边有一闲置的linux开发板iMX6ULL一直在吃灰&#xff0c;不用来搞点事情&#xff0c;总觉得对不住它。业余打发时间就玩起来吧&#xff0c;总比刷某音强。从某多多上8块儿大洋买来一个usb接口的游戏手柄&#xff0c;让开发板支持以下它&#xff0c;后续就可以接着在上面玩童年…