diakla

导航

攻防世界 reverse-for-the-holy-grail-350

放进IDA看main,发现比较函数:



根据意思写个脚本就行了
这里有个错误,就是查看三个数组值的时候是这样的

下面的2是高位,我一开始没注意直接删了就老是不对……

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int ans[30],a[30];
int fir[]={0x41,0x69,0x6E,0x45,0x6F,0x61};
int thi[]={0x2EF,0x2C4,0x2DC,0x2C7,0x2DE,0x2FC};
int mas[]={0x1D7,0x0C,0x244,0x25E,0x93,0x6C};
int main()
{
    for(int i=0,v7=666;i<18;i++)
    {
        a[i]=v7;
        v7+=v7%5;
    }
    for(int i=0;i<6;i++)
        ans[3*i+2]=thi[i]^a[3*i+2],ans[3*i]=fir[i];
    for(int i=0;i<6;i++)
    {
        for(int j=1;j<128;j++)
            if((fir[i]^a[3*i])*(j^a[3*i+1])%thi[i]==mas[i])
            {//cout<<i<<endl;
                ans[3*i+1]=j;
                break;
            }
    }
    for(int i=0;i<18;i++)
        printf("%c",ans[i]);
    return 0;
}

posted on 2020-12-28 23:05  diakla  阅读(68)  评论(0)    收藏  举报