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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部