reverse ez_xor writeup

本文详细介绍了如何使用IDA Pro分析一个64位EXE文件,通过查找字符串、反汇编并解读关键异或代码,指导读者使用Python脚本来解密旗面。过程涉及字符串搜索、代码解析和C语言转换,适合初学者了解逆向工程基本技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拿到ez_xor.exe附件直接丢进PE
在这里插入图片描述

可以看到是64位exe文件,丢进ida64
Shift+F12查看字符串(如果是笔记本电脑的话,F12自带热键,先按Fn,即Fn+Shift+F12)
在这里插入图片描述
一般在这里找有没有和flag相关的字符串,可以看到这里是有的,双击进入
在这里插入图片描述
找到该字符串,点击上图所示,进入main方法
会进入流程图界面,按空格进入文本界面
可以看到汇编代码了,按F5(同理如果是笔记本记得按Fn+F5)反汇编,转换成C语言
在这里插入图片描述
现在就可以分析代码了,这里的C语言可能数据类型之类的会和我们平时的有点不一样
比如说这里的v3=0i64,0i64表示int64_t类型的0,其实就基本上可以理解为0
这里代码可以看到关键异或代码while ( (char)(v3 ^ v5[v3]) == dword_403020[v3] )
在这里插入图片描述
在这里插入图片描述
可以看到该字符串每个字符对应的ASCII码(这里按R键即可看到对应的字符)
现在已知dword_403020和v3(v3就是0~31),逐个进行异或即可得到flag

写一个Python脚本

s=[0x35, 0x62, 0x37, 0x30, 0x33, 0x3D, 0x60, 0x63, 0x3F, 0x3D, 0x6C,0x69, 0x6D, 0x6F, 0x68, 0x6D, 0x72, 0x77, 0x20, 0x70, 0x76, 0x73,0x72, 0x2F, 0x2E, 0x21, 0x7E, 0x2B, 0x28, 0x25, 0x2C, 0x29]
flag=[0 for i in range(32)] #从给出的代码很容易看到flag是32位的
for i in range(32):
    flag[i]=i^s[i]
print(flag)

即可得出flag

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值