[分析过程]
这是一道windows32下的逆向题目,题目链接分享在文末。
打开程序发现运行终止,在这里我们使用IDA进行静态分析。(注意:IDA的版本为该程序的运行版本,而不是操作系统的版本)
打开后我们点击main函数之后F5进行反汇编,看到flag字样
点击flag后我们在点击图片中红色部分
此时我们观察到了该程序的主要逻辑部分,MessageBoxA应该为输出flag的函数
经过分析,发现了该处是判断程序是否为Debug的状态(也就是是否在使用IDA或OD等软件)。
我们修改 jnz short loc_401096
为 jmp short loc_401096
.这样程序的走向就变成了如图所示
之后我们在修改 jmp short loc_4010EF
为 jmp short loc_4010B9
让其之后跳转到MessageBoxA函数这里
看到这里这里可能有的同学会问为什么不直接要到输出flag的地方,而是要经过sub_401000
,因为这里sub_401000
可能是一个类似解密的函数,不经过的话可能无法正常输出flag。
在汇编中 int 3
为暂停的意思,类似于断点,所以我们将此处填充为nop
保存修改后打开得到flag
[题目链接]
链接:https://pan.baidu.com/s/1uIFxt0OUH2ShPuNL6lR0kg
提取码:z1lx