本文主要是介绍HGAME 2022 ezvm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
无壳 放入ida分析
妥妥的vm题
调试可得需要输入32个字母
既然flag是输入的所以一定有比较函数
在操作码15处有一个比较函数
知道了谁和谁比接下去就是动调
断点下在switch就可以知道vm做了什么
输入h * 32观察
第二次比较时加密了
结合刚才调试的操作码可以在原h的位置下写入断点判断加密方式
可得加密为异或与移位
无pie可以轻松从寄存器找到相对应的加密数组和加密之后的数
s=[94, 70, 97, 67, 14, 83, 73, 31, 81, 94, 54, 55, 41, 65, 99, 59, 100, 59, 21, 24, 91, 62, 34, 80, 70, 94, 53, 78, 67, 35, 96, 59]
en=[142, 136, 163, 153, 196, 165, 195, 221, 25, 236, 108, 155, 243, 27, 139, 91, 62, 155, 241, 134, 243, 244, 164, 248, 248, 152, 171, 134, 137, 97, 34, 193]
flag = ''
for i in range(32):en[i] ^= s[i]en[i] = en[i]//2flag += chr(en[i])
print(flag)
这篇关于HGAME 2022 ezvm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!