新手一枚,如有错误(不足)请指正,谢谢!!
题目链接:single
IDA64打开,找到main函数
这里判断出输入的字符串都为数字
这里对数据进行一定的处理
sub_400AD4()函数
emmmm不知道咋写脚本,,,看了cgctf RE Single By:xiaoyuyulala
才知道这是数独游戏……
好叭先把原来的数组打印出来
先提取原来的
然后使用数独求解器进行解密
最后是这样的字符串……
431657892695832147728491365746518923321479586589632147185374269964218753273956814
然后需要把原先数据中不是0的地方变成0
懒得手动改了……
#include <stdio.h>
int main()
{
int shuju[81] =
{
0, 3, 0, 6, 0, 0, 0, 0, 0, 6,
0, 0, 0, 3, 2, 4, 9, 0, 0, 9,
0, 1, 0, 7, 0, 6, 0, 7, 4, 6,
0, 0, 0, 0, 0, 0, 0, 1, 8, 0,
0, 0, 6, 3, 0, 0, 0, 0, 0, 0,
0, 1, 4, 7, 0, 8, 0, 9, 0, 4,
0, 7, 0, 0, 7, 4, 2, 1, 0, 0,
0, 6, 0, 0, 0, 0, 0, 3, 0, 1,
0
};
int i,j;
char str[] = "431695728657832491892147365746321589518479632923586147185964273374218956269753814";
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(shuju[i*9+j]!=0)
printf("0");
else
printf("%c",str[i*9+j]);
}
}
return 0;
}
出来结果……
401095728057800001802040305000321589500479002923586000105060203300008950269750804