type
status
date
slug
summary
tags
category
icon
password
[HGAME 2023 week1]test your IDA
打开IDA直接看到flag(多一眼就会爆炸)
[HGAME 2023 week1]encode
加密逻辑是将input的每个字节分别拆分为第四位和高四位
直接将cipher dump下来,写个脚本将其合起来就行
[HGAME 2023 week2]before_main
加密逻辑为变表的base64加密
直接在线base64
[HGAME 2023 week1]easyasm
直接读汇编,加密是将每个数据异或0x33
exp
[HGAME 2023 week1]easyenc
逻辑是将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
直接跑
得到flag
[HGAME 2023 week2]math
找到加密逻辑
-368是错误数据,不用管
z3直接跑
[HGAME 2023 week3]kunmusic
dll文件是关键
.net用dnSpy分析
进入入口函数
将Resources.data中的数据全部异或104
将其异或后写成二进制文件
同样是.net文件,再次用dnSpy进行解析
找到加密逻辑
z3
exp:
[HGAME 2023 week2]VidarCamera
找到加密逻辑
魔改的tea加密
exp:
[HGAME 2023 week3]cpp
[HGAME 2023 week3]patchme
发现是smc自解密
打个IDCpython
找到加密逻辑
exp:
vm(复现)
复现这道题,学到蛮多的,可算理解了一点vm了
找到vm_start、opcode和dispatcher(调度器)
因为opcode == 0xff退出,所以opcode提取到0xff即可
再看看调度器里的函数
a1[6]应该就是作为rip(指令指针)
推测前面是六个通用寄存器
有++a1[7],那就是rsp(栈指针)
(char *)(a1 + 32)可以看作标识符zf
ok,下面创建一下结构体
再重新来分析函数
这个实现的应该就是mov指令
这个实现的应该就是push指令
这个应该就是pop指令
这个函数在做一些运算
这个函数比较R0和R1寄存器是否相等,相等则zf=0,反之等于1
更改rip的值来实现jmp跳转
为0跳转,实现jnz
最后一个函数实现jz
ok,分析完了,下一步就是恢复加密逻辑了
得到
存在四十段大致相同的操作,推测是循环了四十次的循环,从input[0]开始每次对一位进行了加密
最后用input[150]和input[39]进行比较,推测比较成功,则会比较
input[151]和input[38]
exp
- Author:Albert1x
- URL:https://albert-1x.top//article/1f903e77-5f45-44ac-b454-9559c8e87386
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!