当前位置: 首页 > news >正文

re-BABYRE-攻防世界

有关花指令和异或加密

第一步查壳
image
可以看出是ELF文件,拖进IDA里面看一下,shift+F12查看字符串,双击“Please input flag:”或者“Right!"跳转到反汇编窗口
屏幕截图 2025-11-09 163910
进入mian函数并F5查看伪代码

点击查看代码
int __fastcall main(int argc, const char **argv, const char **envp)
{char s[24]; // [rsp+0h] [rbp-20h] BYREFint v5; // [rsp+18h] [rbp-8h]int i; // [rsp+1Ch] [rbp-4h]for ( i = 0; i <= 181; ++i )judge[i] ^= 0xCu;printf("Please input flag:");__isoc99_scanf("%20s", s);v5 = strlen(s);if ( v5 == 14 && (*(unsigned int (__fastcall **)(char *))judge)(s) )puts("Right!");elseputs("Wrong!");return 0;
}

代码中有个花指令:*(unsigned int (__fastcall **)(char *))judge)(input)
意思是:调用函数指针judge指向的函数,并传递回参数input,传递的值为unsigned int 类型,
为什么是花指令:因为judge在加密前为数组,加密后通过花指令被作为函数指针调用

现在双击judge跳转至数据界面
image
这一串是被异或加密的数据,现在进行解密,使用IDA python:

点击查看代码
import idc
s = 0x600B00
for i in range(182):idc.patch_byte(s+i,idc.get_bytes(s+i,1)[0]^0xc)

此时复选judge数据段,按下c(汇编),在复选按下P(function),此时在函数窗口会生成judge,双击进入并F5查看伪代码

点击查看代码
__int64 __fastcall judge(__int64 a1)
{char v2[5]; // [rsp+8h] [rbp-20h] BYREFchar v3[9]; // [rsp+Dh] [rbp-1Bh] BYREFint i; // [rsp+24h] [rbp-4h]qmemcpy(v2, "fmcd", 4);v2[4] = 127;qmemcpy(v3, "k7d;V`;np", sizeof(v3));for ( i = 0; i <= 13; ++i )*(_BYTE *)(i + a1) ^= i;for ( i = 0; i <= 13; ++i ){if ( *(_BYTE *)(i + a1) != v2[i] )return 0LL;}return 1LL;
}

解密,

点击查看代码
#include <iostream>
#include <cstring>using namespace std;int main() {char v2[5];char v3[9];char flag[15] = {0};// 初始化相同的密钥数组memcpy(v2, "fmcd", 4);v2[4] = 127;memcpy(v3, "k7d;V`;np", sizeof(v3));// 将v2和v3合并成一个14字节的数组char encrypted[15];memcpy(encrypted, v2, 5);memcpy(encrypted + 5, v3, 9);// 逆向异或操作得到原始flagfor (int i = 0; i <= 13; ++i) {flag[i] = encrypted[i] ^ i;}flag[14] = '\0';std::cout << "解密后的flag: " << flag << std::endl;return 0;
}

最终flag:flag{n1c3_j0b}

http://www.jsqmd.com/news/36773/

相关文章:

  • 二维数组去重
  • Pinely Round 5 (Div. 1 + Div. 2) A-D细解
  • 2025年三相滤波器源头厂家权威推荐榜单:EMI电源滤波器/防雷滤波器/电源滤波器源头厂家精选
  • UT010029: Stream is closed
  • 官宣上线!RocketMQ for AI:企业级 AI 应用异步通信首选方案
  • GD32VW553-IOT V2 测评和移植 - 实践
  • 什么是 FFmpeg:开源免费的多媒体处理框架 - 实践
  • AI元人文宪章:在缺陷中前行——价值权衡时代的协作体系
  • 2025年台湾铨盛仪表公司口碑推荐榜
  • 2025年靠谱的藤椒火锅底料口碑推荐榜单
  • 2025年离心管道风机定制厂家推荐排行榜
  • zed odoo lsp配置
  • Raylib 音乐和音效
  • oh-my-zsh又双叒叕出问题了......
  • 读书笔记:并行 DML:批量数据修改的“超级加速器”
  • 2025年镀锌钢格板品牌推荐排行榜单
  • 低代码高频实践场景系列之一——EHS系统
  • 高端UI设计公司的“审美模型”:如何让界面更有记忆点?
  • 2025年提分系统系统怎么选
  • 2025年智能中高考加盟电话供应商怎么选择
  • 2025年11月10日
  • 2025年想象力教育科技有限公司推荐口碑排行
  • 2025年肃宁双十一眼镜品牌权威推荐榜单:眼镜/眼睛价格/眼镜店品牌精选
  • 2025年半导体封装锡膏定制厂家口碑推荐
  • 线性特征和非线性特征
  • 2025年锡熔液抗氧化还原粉厂家排行榜
  • 详细介绍:【mysql】in 用到索引了吗?
  • 算法系列教程:1. BFS求无向无权图最短路径
  • ESP-IDF引用自定义组件头文件失败
  • 2025年靠谱的装修品牌权威推荐