新手一枚,如有錯誤(不足)請指正,謝謝!!
題目鏈接: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