1、无壳,VB
2、VB Decompiler
慢慢追。
还原C流程:
int main(){
int i, t;
char serial[20] = {0};
char res[20] = {"VeiajeEjbavwij"};
char tmp[20] = {0};
char key[20] = {"20002000200020002"};
scanf("%s", serial);
t = serial[3];
for(i=0; i<strlen(serial); i++){
tmp1[i] = t ^ serial[i];
}
for(i=0; i<strlen(serial); i++){
tmp2[i] = key[i] ^ tmp1[i];
}
// printf("%s\n", tmp2);
if(strcmp(tmp2, res) == 0)
"Yes!"
else
"NO!"
return 0;
}
3、逆向
①得到tmp2
>>> [ord(res[i])^ord(key[i]) for i in range(len(res))]
[100, 85, 89, 81, 88, 85, 117, 90, 80, 81, 70, 71, 91, 90]
②爆破还原Serial
>>> c = '0123456789abcdefghijklmn...'
>>> for i in c:
for j in tmp2:
print(chr(j^ord(i)), end='')
print('\n', end='')
TeiaheEj`avwkj
Udh`idDka`wvjk
VgkcjgGhbctuih
WfjbkfFicbuthi
PamelaAnderson
Q`ldm`@oedsrno
RcogncClfgpqml
SbnfobBmgfqplm
\mai`mMbhi~cb
]l`halLcih~bc
48094;10'&:;
7;3:7823$%98
6:2;6932%$89
......
Serial: PamelaAnderson