[HGAME 2022 week1]easyasm-入土为安的第十八天

简介: [HGAME 2022 week1]easyasm-入土为安的第十八天

知识点汇编  asm

0x91, 0x61, 0x01, 0xC1, 0x41, 0xA0, 0x60, 0x41, 0xD1, 0x21, 0x14, 0xC1, 0x41, 0xE2, 0x50, 0xE1, 0xE2, 0x54, 0x20, 0xC1, 0xE2, 0x60, 0x14, 0x30, 0xD1, 0x51, 0xC0, 0x17

首先是将ax清零,然后从数据段中拿出数据,向左偏移4,压入栈中,再清零ax,再从数据段中拿出数据,再向右偏移4,将栈中的数据拿出给bx,ax+bx,再拿ax与 (十六进制的17)23进行异或

(左移使用的是 shl 指令,而右移使用的是 shr 指令)

string = [0x91, 0x61, 0x01, 0xC1, 0x41, 0xA0, 0x60, 0x41, 0xD1, 0x21, 0x14, 0xC1, 0x41, 0xE2, 0x50, 0xE1, 0xE2, 0x54, 0x20, 0xC1, 0xE2, 0x60, 0x14, 0x30, 0xD1, 0x51, 0xC0, 0x17]
flag = ""
for i in string:
    i = i ^ 0x17
    flag += chr(((i>>4)+(i<<4))%128)
print(flag)

hgame{welc0me_to_4sm_w0rld}

为什么需要 %128

  • 范围限制:在字符转换中,通常需要确保得到的值在有效的字符范围内,尤其是ASCII范围(0到127)或更大范围(0到255)。%128 操作是为了确保得到的结果在0到127范围内,适合ASCII字符。
  • 避免溢出:位移操作后,结果可能超出单字节范围(0到255),使用 %128 是为了保证结果在0到127的范围内,以防止在chr()函数中出现不合法的字符代码或导致错误。
目录
相关文章
|
5月前
|
机器人
week 0
这篇文章是关于机器人产业发展的介绍,以及一个以四足机器狗为平台的课程概览,课程内容包括机器人运动学、嵌入式开发和ROS等,旨在教授学生理解机器人系统的构成和工作原理,并进行项目实践。
31 0
week 0
|
5月前
[HNCTF 2022 WEEK2]getflag-入土为安的二十一天
[HNCTF 2022 WEEK2]getflag-入土为安的二十一天
53 0
|
OceanBase
to_date 和 sysdate
to_date 和 sysdate
872 0
|
Python
今天是今年的的第几天
今天是今年的的第几天
225 0
|
存储 JavaScript 前端开发
new Date(dateString)
new Date(dateString)
116 0
|
Go
New Year and Hurry
New Year and Hurry
111 0
New Year and Hurry
C#编程:用DateTime获取当前是星期几-5
C#编程:用DateTime获取当前是星期几-5
108 0
C#编程:用DateTime获取当前是星期几
C#编程:用DateTime获取当前是星期几
280 0