buu Youngter-drive
查壳,有壳,upx脱壳(upx.exe -d )
进ida看主函数
又是这种粉色的没见过的函数,速查
CreateMutexW可以创建或打开命名的或未命名的互斥体对象。
简单来说就是后面的多线程同时只会同时运行一个线程
CreateThread就是创建线程来运行
CloseHandle就是关闭线程
在这道题中就是StartAddress和sub_41119F两个函数交替进行
首先就是这个sub_4110FF,进去之后是下图,主要是读取输入的36个字符
然后就是StartAddress,倒数第三层是这个函数,可以看到一个循环,每次418008都会自减,这个值是1D,即29。
最后一层函数,传进去a1就是source的首地址,a2就是29
看函数内容就是大写字母一个操作,小写字母一个操作,把source字符串中的字符进行操作后的字符当作索引,在418000字符中找到位置并返回给source。
然后就是另一个线程,可以看到就是单纯的递减,没有操作
所以总结就是单数操作,双数不变
最后有个检验函数
写个EXP
text1 = 'TOiZiZtOrYaToUwPnToBsOaOapsyS' text2 = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm' flag = '' for i in range(len(text1)): if i % 2 == 0: flag += text1[i] else: if text1[i].islower(): flag += chr(text2.find(text1[i]) + 38) else: flag += chr(text2.find(text1[i]) + 96) print(flag)
得到结果ThisisthreadofwindowshahaIsES
网上看到这题flag后面还要加个E,不懂为什么,没看到为什么是30位
flag{ThisisthreadofwindowshahaIsESE}
本文作者:yee-l
本文链接:https://www.cnblogs.com/yee-l/p/18303749
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步