XCTF EasyHook
无壳,使用IDA直接分析主函数
逻辑很简单,问题的关键是Hook,题目也是EasyHook,
会发现在生成文件后,文件内容是被加密后的,那就怀疑加密函数参与Hook
动态调试一步步来看,先进入401220函数
发现这里有获取writefile函数地址的操作,初步怀疑可能进行hook操作
然后又进行一系列操作计算sub_401080函数和writefile函数的地址偏移,就进一步确认了这个想法
最后进入sub_4010D0
发现这里对内存进行了修改,成功实现了Hook操作,也就是说当执行writefile函数的时候,不再是写文件,而是跳转到sub_401080函数
进入sub_401080函数查看具体干了什么
进入加密函数
发现判断函数,如果都成立就返回1,调用它的函数里面有一个全局变量也会置1,这样就会输出正确
而之前发现的主函数里的奇怪的函数明显就是个幌子,并无实际作用
写脚本计算flag
res=[
0x61,0x6A, 0x79, 0x67, 0x6B, 0x46, 0x6D, 0x2E, 0x7F, 0x5F, 0x7E,0x2D, 0x53, 0x56, 0x7B, 0x38, 0x6D, 0x4C, 0x6E, 0x00
]
flag=list("1234567891234567890")
for i in range(0,18):
if i%2==1:
flag[i]=chr((res[i]^i)+i)
else:
flag[i+2]=chr(res[i]^i)
print("".join(flag))
print(res[18]^0x13)
### 来源:CSDN YenKoc
参考:https://blog.csdn.net/Plus_RE/article/details/78039696?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-6-78039696.nonecase&utm_term=easyhook%20%E6%94%BB%E9%98%B2%E4%B8%96%E7%95%8C
https://blog.csdn.net/YenKoc/article/details/105631031?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-4-105631031.nonecase&utm_term=easyhook%20%E6%94%BB%E9%98%B2%E4%B8%96%E7%95%8C