BABYRE 入土为安的第七

简介: BABYRE 入土为安的第七

关键的judge居然是数据不是函数,应该是SMC加密,自己取自己地址的数据进行加密,加密之后无法反汇编

第一次做题用IDApython,复现了两天

if ( v5 == 14 && (*(unsigned int (__fastcall **)(char *))judge)(s) )

点进去judge,点着judge,shift+f2

from idc_bc695 import *
addr = 0x600b00
for i in range(182):
    PatchByte(addr+i,Byte(addr+i)^0xc)

按 C 生成新汇编

选中600B00到600BB5,按P生成judge函数

再查看judge函数反编译代码

__int64 __fastcall judge(__int64 a1)
{
  char v2[5]; // [rsp+8h] [rbp-20h] BYREF
  char v3[9]; // [rsp+Dh] [rbp-1Bh] BYREF
  int 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;
}

分析逆向得出脚本。

s = 'fmcd\x7Fk7d;V`;np'
flag = ''
for i in range(14):
    flag += chr(ord(s[i]) ^ i)
print(flag)

flag{n1c3_j0b}


目录
相关文章
|
数据安全/隐私保护
[羊城杯 2020]easyre 1题解
buuctf-[羊城杯 2020]easyre 1题解
572 0
[羊城杯 2020]easyre 1题解
|
算法 安全 C语言
使用C语言实现DES算法代码
使用C语言实现DES算法代码
535 0
[HDCTF2019]Maze(初识逆向)
[HDCTF2019]Maze(初识逆向)
541 1
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
437 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
前端开发 rax 网络协议
x64汇编语言与逆向工程基础指南(一)
x64汇编语言与逆向工程基础指南(一)
967 0
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
570 1
|
关系型数据库 MySQL Linux
【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学
【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学
540 0
|
算法 数据安全/隐私保护 C++
RC4加密算法
RC4加密算法
287 0
|
设计模式 网络协议 Java
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
285 0