首先,查个壳没壳,32bit,直接丢进ida32中进行反编译,,然后shift+f12搜索字符串,如下找个关键词,然后双击进入进入之后,选中这一串,ctrl+x交叉引用,直接进入引用该字符串的函数打上注释,逐一分析,总的逻辑大概就是多个字符串连接起来组成flag,其中source为未知,搞出source,flag就出来了,进入关键函数_itoa搞出source注意参数的传递,最好在旁边写上,再进入函数xtoa查看根据这个,写出c语言的脚本,从而求出source,一定要对应好参数!!!
#include<iostream>
using namespace std;
int main()
{
char source[123];
int v6,a1=123,a3=10,i=0;
do{
v6=a1%a3;
a1/=a3;
if(v6<=9){
source[i]=v6+48;
} else {
source[i]=v6+87;
}
cout<<source[i];
++i;
} while(a1);
return 0;
}
这个我只写了一半,运行结果为321,还有一半代码的意思是将求得的值倒序,也就是把321变成123,我看懂了,就没写了,这段代码要好好静下心分析的,注意指针的引用,得到source为123,最后再将那些字符串拼接起来,得到flag{123_Buff3r_0v3rf|0w}。