Post on: 2024-5-13Last edited: 2024-5-29Words 00 min

type
status
date
slug
summary
tags
category
icon
password

[HGAME 2023 week1]test your IDA

打开IDA直接看到flag(多一眼就会爆炸)

[HGAME 2023 week1]encode

notion image
加密逻辑是将input的每个字节分别拆分为第四位和高四位
直接将cipher dump下来,写个脚本将其合起来就行

[HGAME 2023 week2]before_main

notion image
加密逻辑为变表的base64加密
直接在线base64
notion image

[HGAME 2023 week1]easyasm

notion image
直接读汇编,加密是将每个数据异或0x33
exp

[HGAME 2023 week1]easyenc

notion image
逻辑是将input异或0x32后再减去86
逻辑很简单,为了方面,这里用C语言来逆

[HGAME 2023 week1]a_cup_of_tea

tea加密
exp:
得到hgame{Tea_15_4_v3ry_h3a1thy_drln
再加上最后两位k}

[HGAME 2023 week2]stream

先pyinstxtracotr解包,再pycdc将pyc文件转py文件
加密逻辑是rc4后再进行标准的base64
解密逻辑就先base64解密后再rc4得到flag
直接跑
notion image
得到flag

[HGAME 2023 week2]math

找到加密逻辑
notion image
-368是错误数据,不用管
z3直接跑

[HGAME 2023 week3]kunmusic

dll文件是关键
notion image
.net用dnSpy分析
进入入口函数
notion image
将Resources.data中的数据全部异或104
将其异或后写成二进制文件
notion image
同样是.net文件,再次用dnSpy进行解析
找到加密逻辑
z3
exp:

[HGAME 2023 week2]VidarCamera

找到加密逻辑
魔改的tea加密
exp:

[HGAME 2023 week3]cpp

 

[HGAME 2023 week3]patchme

notion image
发现是smc自解密
打个IDCpython
notion image
找到加密逻辑
exp:

vm(复现)

复现这道题,学到蛮多的,可算理解了一点vm了
 
notion image
找到vm_start、opcode和dispatcher(调度器)
notion image
因为opcode == 0xff退出,所以opcode提取到0xff即可
再看看调度器里的函数
notion image
a1[6]应该就是作为rip(指令指针)
推测前面是六个通用寄存器
notion image
有++a1[7],那就是rsp(栈指针)
notion image
(char *)(a1 + 32)可以看作标识符zf
ok,下面创建一下结构体
再重新来分析函数
notion image
这个实现的应该就是mov指令
notion image
这个实现的应该就是push指令
notion image
这个应该就是pop指令
notion image
这个函数在做一些运算
notion image
这个函数比较R0和R1寄存器是否相等,相等则zf=0,反之等于1
notion image
更改rip的值来实现jmp跳转
notion image
为0跳转,实现jnz
notion image
最后一个函数实现jz
ok,分析完了,下一步就是恢复加密逻辑了
得到
存在四十段大致相同的操作,推测是循环了四十次的循环,从input[0]开始每次对一位进行了加密
最后用input[150]和input[39]进行比较,推测比较成功,则会比较
input[151]和input[38]
exp
 

hgame2024re

🗒️hgame2024re

hgame2024re


polar rev2024春季赛

🗒️polar rev2024春季赛

polar rev2024春季赛