查壳:
有个壳,脱一下,upx脱壳方法讲过了,(这里注意,低版本的upx是脱不掉壳的,换高版本哈)可以去:https://www.cnblogs.com/TFOREVERY/p/17366210.html
不赘述了:64位进IDA老思想进主函数:
对输入flag进行一个方法加密sub_4009AE:跟进:
emm。menu优秀:简单的做一个逆运算就好了,这里有一个小坑,仔细看会发现没有al[6],所以说在我们解出来的flag中会在第七个字符上缺失。
上个脚本先:
int main(){
string flag = "";
flag += 166163712 / 1629056;
flag += 731332800 / 6771600;
flag += 357245568 / 3682944;
flag += 1074393000 / 10431000;
flag += 489211344 / 3977328;
flag += 518971936 / 5138336;
flag += 406741500 / 7532250;
flag += 294236496 / 5551632;
flag += 177305856 / 3409728;
flag += 650683500 / 13013670;
flag += 298351053 / 6088797;
flag += 386348487 / 7884663;
flag += 438258597 / 8944053;
flag += 249527520 / 5198490;
flag += 445362764 / 4544518;
flag += 981182160 / 10115280;
flag += 174988800 / 3645600;
flag += 493042704 / 9667504;
flag += 257493600 / 5364450;
flag += 767478780 / 13464540;
flag += 312840624 / 5488432;
flag += 1404511500 / 14479500;
flag += 316139670 / 6451830;
flag += 619005024 / 6252576;
flag += 372641472 / 7763364;
flag += 373693320 / 7327320;
flag += 498266640 / 8741520;
flag += 452465676 / 8871876;
flag += 208422720 / 4086720;
flag += 515592000 / 9374400;
flag += 719890500 / 5759124;
cout << flag << endl;
return 0;
}