XCTF攻防世界逆向-IgniteMe.exe
本帖最后由 yaoyao7 于 2019-5-14 09:04 编辑# IgniteMe.exe逆向分析
## 初步分析
1. 查看文件信息和有无加壳
![](https://i.postimg.cc/rFhjwkT8/Ignite-Me-File-Information.png)
---
并没有经过特殊处理,而且也没有进行加壳操作。
## 静态分析
1.直接拖进IDA,注意位数
2.首先查看字符串,寻找关键信息:
![](https://i.postimg.cc/0N5JM60F/Strings-Information.png)
3. 跳转到可疑字符串处,发现关键跳转:
![](https://i.postimg.cc/fbbJWGwh/KeyJump.png)
F5查看代码:
![](https://i.postimg.cc/T2tNpmqM/JumpCode.png)
在该部分代码中,最关键的部分是图中所指示出的flag的相关信息,可以知道flag以“EIS{”开头且以“}”结尾,然后经过某个函数的处理和判断,根据函数处理结果输出flag正确还是错误。
4. 进入flag处理函数查看处理过程:
![](https://i.postimg.cc/87yvcGY7/String-Convert.png)
很明显看出,这里就是主要的对flag进行处理的地方,首先对flag中的字符进行大小写转换,然后进入下一步操作:
![](https://i.postimg.cc/bSjDWwZB/String-Convert1.png)
经过转换后的字符进行简单的运算操作,最后回到上个函数与固定字符串“GONDPHyGjPEKruv{{pj]X@rF”进行比较,相同则flag正确。
## 脚本
根据静态分析,已经可以理清程序的执行思路,直接进行算法逆向,脚本编写:
`
import string
str1 = "\x0d\x13\x17\x11\x02\x01\x20\1d\x0c\x02\x19\x2f\x17\x2b\x24\x1f\x1e\x16\x09\x0f\x15\x27\x13\x26\x0a\x2f\x1e\x1a\x2d\x0c\x22\x04"
str2 = "GONDPHyGjPEKruv{{pj]X@rF"
x = 0
tmp= str()
n = int()
for char in str2:
n = ord(char) ^ ord(str1)
n -= 72
n ^= 0x55
tmp += chr(n)
x += 1
print(tmp.swapcase())
` 感谢楼主分享 学习下,感谢楼主! 向大佬学习。 向大佬学习。 谢谢楼主分享,学习一下 尽管看不懂,但是感觉好厉害 向大佬学习了 不知道为什么,md写的内容,图片加载不出来。。。。 学习 一下谢谢大婶分享
页:
[1]