标签:为什么 div += elf 函数 直接 com 脚本 错误
ELF文件 拖进ida 震惊:
这一堆堆都是什么神仙函数呀!!
f5看一下伪代码
可以看出来 其实看起来函数很多 但是真正管用的函数也就那么几个
如果sub_4017E6的值是0 那么就会输出flag 点进去发现是检查比对a1+16和a1+32是否相同,相同返回0。
再向上可以找到 sub_4015DC 是对v23进行处理的函数 是将FLAG23456912365453475897834567存到了v23+32里面 将输入的v18存到了v23+16里面
还可以看到
sub_4016BA函数 是将v23+16进行一顿操作的函数 这也就是我们解题的重点!
可以根据它的逻辑直接写出反推的脚本:
string = ‘FLAG23456912365453475897834567‘ flag = ‘‘ for i in string: flag += chr((((ord(i) - 9) ^ 0x10 )- 20) ^ 0x50) print (flag)
但是 如果去掉(ord(i) - 9) ^ 0x10外面的括号(如下面代码) 我认为是没有任何问题的 但是就是会报错 我也不知道为什么。。还是太菜了自己
#错误代码:
string = ‘FLAG23456912365453475897834567‘ flag = ‘‘ for i in string: flag += chr(((ord(i) - 9) ^ 0x10 - 20) ^ 0x50) print (flag)
标签:为什么 div += elf 函数 直接 com 脚本 错误
原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/10618848.html