#include "stdafx.h" #include "string.h" char szDomain[256]; int iSuffix; char *szSuffixes[] = { "dyndns.org", "yi.org", "dynserv.com", "mooo.com", "dyndns.org", "yi.org", "mooo.com", "com", "cc", "net", NULL }; void GenName(unsigned long seed, char* szResult) { int counter; char szName[256]; int i; memset(szName, 0, 256); __asm { mov i, 0 mov eax, 0 mov edi, 12435 mov esi, 32767 mov ebx, seed imul ebx, 41C64E6Dh add ebx, edi mov eax, ebx mov edx, eax imul eax, 41C64E6Dh add eax, edi mov ecx, eax imul eax, 41C64E6Dh ror edx, 8 and edx, esi ror ecx, 8 and ecx, esi imul ecx, edx add eax, edi mov ebx, eax ror eax, 8 and eax, esi add eax, ecx push 6 cdq pop ecx idiv ecx add edx, 7 test edx, edx jle short quit_the_loop mov counter, edx loop_generate_next_character: imul ebx, 41C64E6Dh add ebx, edi mov eax, ebx ror eax, 8 and eax, esi push 26 pop ecx cdq idiv ecx add dl, 97 push eax push ebx lea eax, szName mov ebx, i add eax, ebx mov byte ptr[eax], dl pop ebx pop eax add i, 1 dec counter jnz short loop_generate_next_character quit_the_loop: } strcpy(szResult, szName); return; } int main(int argc, char* argv[]) { unsigned long seed = 1600000; char szTemp[256]; iSuffix = 0; for (int i = 0; i < 100000; i++) { GenName(seed, szDomain); seed++; seed++; sprintf(szTemp, "%s.%s\r\n", szDomain, szSuffixes[iSuffix]); printf(szTemp); iSuffix++; if (szSuffixes[iSuffix] == NULL) { iSuffix = 0; } } return 0; }