#include<stdio.h> #include<string.h> #include<windows.h>
DWORD Get_254D0(DWORD d254D0[20]) { int i = 0; DWORD d25050[20] = {0X1207,0X4CA0,0X4F21,0X39,0X1A523,0X23A,0X926,0X4CA7, 0X6560,0X36,0X1A99B,0X4CA8,0X1BBE0,0X3705,0X926,0X77D3, 0X9A98,0X657B,0X18,0X0B11}; for( i ; i < 20 ; i++) { d254D0[i] = d25050[i]; } }
DWORD Get_25520(DWORD d25520[20], DWORD d254D0[20],DWORD a[20]) { for ( int i = 0; ; ++i ) { int v2 = i; if ( v2 >= 20 ) break; int v3 = i; d25520[v3] = *(a + 20 - i - 1) ^ d254D0[i]; } }
DWORD sub_1124E(DWORD a1, DWORD a2) { unsigned int v3; v3 = 1; while ( a2 ) { if ( (a2 & 1) != 0 ) v3 *= a1; a1 = a1 * a1 % 1000; a2 >>= 2; } return v3; }
int main() { DWORD a[20] = {104,97,104,97,104,97,116,104,105,115,105,115,102,97,99,107,102,108,97,103}; DWORD d254D0[20] = {0}; DWORD d25520[20] = {0}; DWORD d25000[20] = { 0x07, 0x07, 0x07, 0x09, 0x05, 0x06, 0x07, 0x07, 0x07, 0x09, 0x07, 0x07, 0x05, 0x07, 0x07, 0x07, 0x05, 0x07, 0x09, 0x07}; DWORD Str[20]; DWORD v3; Get_254D0(d254D0); Get_25520(d25520,d254D0,a); for(DWORD p = 0 ; p < 20 ; p++) { for( DWORD k = 0 ; k < 127 ; k++) { Str[p] = k; if( d25520[p] == sub_1124E(Str[p], d25000[p]) ) { printf("%c",k); break; } } } }
|