检查
查壳
运行
就一个光光的刮开有奖,拖入
ida分析
查看伪c代码
进入函数DialogFunc
由67可知此函数为关键分析代码
由35,36可知string为输入字符串并且长度为8,进入sub_4010F0函数观察,入口参数已知,可直接粘贴修改数组部分就可用编译器编译其中代码
#include <iostream>
using namespace std;
//v7,0,10
int sub(char a1[],int a2,int a3){
int result;
int i;
int v5;
int v6;
result = a3;
for ( i = a2; i <= a3; a2 = i )
{
v5 = i;
v6 = a1[i];
if ( a2 < result && i < result )
{
do
{
if ( v6 > a1[result] )
{
if ( i >= result )
break;
++i;
a1[v5] = a1[result];
if ( i >= result )
break;
while ( a1[i]<= v6 )
{
if ( ++i >= result )
goto LABEL_13;
}
if ( i >= result )
break;
v5 = i;
a1[result] = a1[i];
}
--result;
}
while ( i < result );
}
LABEL_13:
a1[result] = v6;
sub(a1, a2, i - 1);
result = a3;
++i;
}
return result;
}
int main(int argc, const char *argv[]) {
char a[30]={90, 74, 83, 69, 67, 97, 78, 72, 51, 110, 103};
sub(a,0,10);
cout<<a<<endl;
return 0;
}
此处得到的答案为 3CEHJNSZagn
继续分析51行,双击观察v23
可知v23为string[5],快捷键N依次修改
继续分析sub_401000函数
由上图可知此函数为base64加密,返回关键函数
由64行,65行可知有两段字符串加密后得到ak1w,V1Ax,解密得 jMpWP1
由上图可知具体顺序为UJWP1jMp