本帖最后由 unpWn4bL3 于 2022-6-28 01:39 编辑
题目链接:https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9D%AF%202020%20%E9%9D%92%E9%BE%99%E7%BB%84]singal
小弟自己吭哧吭哧动静结合一通分析也算是做出来了,就是倒着跑虚拟机指令,但是有个地方我不是很理解:
红框的部分应该是vm指令里检查变化后的用户输入与opcode是否相等的地方
但如果我用[Python] 纯文本查看 复制代码 Str_100 = [0x00000022, 0x0000003f, 0x00000034, 0x00000032, 0x00000072, 0x00000033, 0x00000018,0xffffffa7, 0x00000031, 0xfffffff1, 0x00000028, 0xffffff84, 0xffffffc1, 0x0000001e, 0x0000007a] 这个作为最终结果跑的话,求出来的结果对应原数组0xffffff几个数字的地方,算出来的值非常大无法转换为字符
但是如果我用[Python] 纯文本查看 复制代码 Str_100 = [0x00000022, 0x0000003f, 0x00000034, 0x00000032, 0x00000072, 0x00000033, 0x00000018,0xa7, 0x00000031, 0xf1, 0x00000028, 0x84, 0xc1, 0x0000001e, 0x0000007a] 这个数组跑的话,就能跑出正确答案!
最终比较部分的代码如下:
对汇编里数据传送和比较这块理解的不是很深入,难道是这时的比较仅传入了一个byte吗?望各位师傅指点!
|