一道简单的逆向题
程序员文章站
2022-05-12 13:52:36
...
一道简单的逆向
- 用ida打开查看伪代码
- 分析程序,找出关键点,以及如何获取flag
- 写出脚本得到flag
一. 用ida打开查看伪代码
二 .我们分析程序可知本题通过对比 buf[] 数组和 v0到v45 如果能够对比不成功就会执行 sys_exit,显然这不是解题的路径,所以我们试着使它匹配成功。
我们已知v0到v45,所以通过将这几句逆操作
for(i=0;i<=45;i++){
buf[i]+=2*i;
buf[i]^=i;
buf[i]-=i;
}
就可以得到匹配正确的buf[] 数组 即:
for(i=0;i<=45;i++){
buf[i]+=i;
buf[i]^=i;
buf[i]-=2*i;
}
就可以的到正确的buf[]数组
三.写出脚本得到flag
其实有了上面的逆向操作,将buf数组输出就是flag下面将脚本写出来
本题脚本没什么要求,我写的是c语言脚本
#include<stdio.h>
int main(){
int v[46]={102,110,...,113,120,111,99,-60,-126,-124,-66,-69,-51};
//由于数组较长只显示一部分
for(int i=0;i<=45;i++){
v[i]+=i;
v[i]^=i;
v[i]-=2*i;
printf("%c",v[i]);
}
return 0;
}
最后输出的buf数组就是flag。
上一篇: cdr画一个漂亮的心形红心图案