• 010Editor注册机源码


    #include <Windows.h>
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    unsigned char k[8] = { 0x11,0x22,0x33,0x9c,0x55,0x66,0x77,0x88};
    //unsigned char kk[10] = { 0x11,0x22,0x33,0x9c,0x55,0x66,0x77,0x88,0x99,0xAA};

    //char a1[] = "mei";
    int x = 0;
    BYTE k0xork6 = 0;
    BYTE k1xork7 = 0;
    BYTE k2xork5 = 0;
    int eeddxx = 0;
    BYTE eeaaxx1 = 0;
    int eeaaxx2 = 0;
    int eessii1 = 0;

    void w9c1()
    {
         while (true)
         {
             BYTE k0 = rand() % 0xFF;
             __asm
             {
                 mov al, k0;
                 xor al, k[6];
                 mov k0xork6, al;

                movzx eax, al;
                 xor al, 0x18;
                 add al, 0x3D;
                 xor al, 0xA7;
                 movzx eax, al;
                 mov eeaaxx1, al;
             }
             if (eeaaxx1 != 0 && eeaaxx1 >= 10)
             {
                 k[0] = k0;
                 break;
             }

        }
    }

    void w9c2()
    {
         while (true)
         {
             BYTE k1 = rand() % 0xFF;
             BYTE k2 = rand() % 0xFF;
             __asm {
                 mov al, k1;
                 xor al, k[7];
                 movzx ecx, al;
                 mov eax, 0x100;
                 imul cx, ax;
                 mov al, k2;
                 xor al, k[5];
                 mov k2xork5, al;
                 movzx eax, al;
                 add cx, ax;
                 movzx esi, cx;
                 mov eessii1, esi;
                 mov eax, esi;
                 mov ecx, 0xB;
                 xor eax, 0x7892;
                 add eax, 0x4D30;
                 xor eax, 0x3421;
                 movzx eax, ax;
                 CDQ;
                 IDIV ecx;
                 mov eeddxx, edx;
                 mov eeaaxx2, eax;
             }
             //TEST edx, edx;
             if (eeddxx == 0 && eeaaxx2 != 0 && eeaaxx2 == 0x3E7)
             {
                 k[1] = k1;
                 k[2] = k2;
                 break;
             }
         }
    }




    int Encode[] = {
             0x39cb44b8, 0x23754f67, 0x5f017211, 0x3ebb24da, 0x351707c6, 0x63f9774b, 0x17827288, 0x0fe74821, 0x5b5f670f, 0x48315ae8, 0x785b7769, 0x2b7a1547, 0x38d11292, 0x42a11b32, 0x35332244, 0x77437b60,
             0x1eab3b10, 0x53810000, 0x1d0212ae, 0x6f0377a8, 0x43c03092, 0x2d3c0a8e, 0x62950cbf, 0x30f06ffa, 0x34f710e0, 0x28f417fb, 0x350d2f95, 0x5a361d5a, 0x15cc060b, 0x0afd13cc, 0x28603bcf, 0x3371066b,
             0x30cd14e4, 0x175d3a67, 0x6dd66a13, 0x2d3409f9, 0x581e7b82, 0x76526b99, 0x5c8d5188, 0x2c857971, 0x15f51fc0, 0x68cc0d11, 0x49f55e5c, 0x275e4364, 0x2d1e0dbc, 0x4cee7ce3, 0x32555840, 0x112e2e08,
             0x6978065a, 0x72921406, 0x314578e7, 0x175621b7, 0x40771dbf, 0x3fc238d6, 0x4a31128a, 0x2dad036e, 0x41a069d6, 0x25400192, 0x00dd4667, 0x6afc1f4f, 0x571040ce, 0x62fe66df, 0x41db4b3e, 0x3582231f,
             0x55f6079a, 0x1ca70644, 0x1b1643d2, 0x3f7228c9, 0x5f141070, 0x3e1474ab, 0x444b256e, 0x537050d9, 0x0f42094b, 0x2fd820e6, 0x778b2e5e, 0x71176d02, 0x7fea7a69, 0x5bb54628, 0x19ba6c71, 0x39763a99,
             0x178d54cd, 0x01246e88, 0x3313537e, 0x2b8e2d17, 0x2a3d10be, 0x59d10582, 0x37a163db, 0x30d6489a, 0x6a215c46, 0x0e1c7a76, 0x1fc760e7, 0x79b80c65, 0x27f459b4, 0x799a7326, 0x50ba1782, 0x2a116d5c,
             0x63866e1b, 0x3f920e3c, 0x55023490, 0x55b56089, 0x2c391fd1, 0x2f8035c2, 0x64fd2b7a, 0x4ce8759a, 0x518504f0, 0x799501a8, 0x3f5b2cad, 0x38e60160, 0x637641d8, 0x33352a42, 0x51a22c19, 0x085c5851,
             0x032917ab, 0x2b770ac7, 0x30ac77b3, 0x2bec1907, 0x035202d0, 0x0fa933d3, 0x61255df3, 0x22ad06bf, 0x58b86971, 0x5fca0de5, 0x700d6456, 0x56a973db, 0x5ab759fd, 0x330e0be2, 0x5b3c0ddd, 0x495d3c60,
             0x53bd59a6, 0x4c5e6d91, 0x49d9318d, 0x103d5079, 0x61ce42e3, 0x7ed5121d, 0x14e160ed, 0x212d4ef2, 0x270133f0, 0x62435a96, 0x1fa75e8b, 0x6f092fbe, 0x4a000d49, 0x57ae1c70, 0x004e2477, 0x561e7e72,
             0x468c0033, 0x5dcc2402, 0x78507ac6, 0x58af24c7, 0x0df62d34, 0x358a4708, 0x3cfb1e11, 0x2b71451c, 0x77a75295, 0x56890721, 0x0fef75f3, 0x120f24f1, 0x01990ae7, 0x339c4452, 0x27a15b8e, 0x0ba7276d,
             0x60dc1b7b, 0x4f4b7f82, 0x67db7007, 0x4f4a57d9, 0x621252e8, 0x20532cfc, 0x6a390306, 0x18800423, 0x19f3778a, 0x462316f0, 0x56ae0937, 0x43c2675c, 0x65ca45fd, 0x0d604ff2, 0x0bfd22cb, 0x3afe643b,
             0x3bf67fa6, 0x44623579, 0x184031f8, 0x32174f97, 0x4c6a092a, 0x5fb50261, 0x01650174, 0x33634af1, 0x712d18f4, 0x6e997169, 0x5dab7afe, 0x7c2b2ee8, 0x6edb75b4, 0x5f836fb6, 0x3c2a6dd6, 0x292d05c2,
             0x052244db, 0x149a5f4f, 0x5d486540, 0x331d15ea, 0x4f456920, 0x483a699f, 0x3b450f05, 0x3b207c6c, 0x749d70fe, 0x417461f6, 0x62b031f1, 0x2750577b, 0x29131533, 0x588c3808, 0x1aef3456, 0x0f3c00ec,
             0x7da74742, 0x4b797a6c, 0x5ebb3287, 0x786558b8, 0x00ed4ff2, 0x6269691e, 0x24a2255f, 0x62c11f7e, 0x2f8a7dcd, 0x643b17fe, 0x778318b8, 0x253b60fe, 0x34bb63a3, 0x5b03214f, 0x5f1571f4, 0x1a316e9f,
             0x7acf2704, 0x28896838, 0x18614677, 0x1bf569eb, 0x0ba85ec9, 0x6aca6b46, 0x1e43422a, 0x514d5f0e, 0x413e018c, 0x307626e9, 0x01ed1dfa, 0x49f46f5a, 0x461b642b, 0x7d7007f2, 0x13652657, 0x6b160bc5,
             0x65e04849, 0x1f526e1c, 0x5a0251b6, 0x2bd73f69, 0x2dbf7acd, 0x51e63e80, 0x5cf2670f, 0x21cd0a03, 0x5cff0261, 0x33ae061e, 0x3bb6345f, 0x5d814a75, 0x257b5df4, 0x0a5c2c5b, 0x16a45527, 0x16f23945};

    int Encde(const char *a1, int a2, char a3, int a4)
    {
         const char *v4; // edx@1
         signed int v5; // esi@1
         signed int v6; // edi@1
         unsigned __int8 v7; // bl@2
         int v8; // eax@3
         int v9; // ecx@3
         int v10; // ecx@4
         int result; // eax@4
         int v12; // ecx@5
         unsigned __int8 v13; // [sp+8h] [bp-10h]@2
         unsigned __int8 v14; // [sp+Ch] [bp-Ch]@2
         unsigned __int8 v15; // [sp+10h] [bp-8h]@2
         int v16; // [sp+14h] [bp-4h]@1

        v4 = a1;
         v16 = 0;
         v5 = strlen(a1);
         v6 = 0;
         if (v5 <= 0)
         {
             result = 0;
         }
         else
         {
             v13 = 0;
             v14 = 0;
             v7 = 15 * a4;
             v15 = 17 * a3;
             do
             {
                 v8 = toupper(v4[v6]);
                 v9 = v16 + Encode[v8];
                 if (a2)
                 {
                     v10 = Encode[v7]
                         + Encode[v15]
                         + Encode[(unsigned __int8)(v8 + 47)] * (Encode[(unsigned __int8)(v8 + 13)] ^ v9);
                     result = Encode[v14] + v10;
                     v16 = Encode[v14] + v10;
                 }
                 else
                 {
                     v12 = Encode[v7]
                         + Encode[v15]
                         + Encode[(unsigned __int8)(v8 + 23)] * (Encode[(unsigned __int8)(v8 + 63)] ^ v9);
                     result = Encode[v13] + v12;
                     v16 = Encode[v13] + v12;
                 }
                 v14 += 19;
                 ++v6;
                 v15 += 9;
                 v7 += 13;
                 v13 += 7;
                 v4 = a1;
             } while (v6 < v5);
         }
         return result;
    }


    byte EnDl = 0;
    byte r8 = 0;
    byte r10 = 0;
    byte r18 = 0;
    void Reg9C(const char *a1)
    {
         int En = Encde(a1, 1, 0, 0x3E7);
         __asm
         {
             mov edx, En;
             mov EnDl, dl;//获取加密用户名后的值的低两位

            mov ecx, edx;
             SHR ecx, 0x8;
             mov r8, cl;

            mov ecx, edx;
             shr ecx, 0x10;
             mov r10, cl;

            shr edx, 0x18;
             mov r18, dl;
         }
         k[4] = EnDl;
         k[5] = r8;
         k[6] = r10;
         k[7] = r18;
         w9c1();
         w9c2();

        printf("%02X%02X-%02X9C-%02X%02X-%02X%02X ", k[0], k[1], k[2], k[4], k[5], k[6], k[7]);
         getchar();
    }

    void RegFC(const char *a1)
    {
         int En = Encde(a1, 0, 0xFF, 1);
         __asm
         {
             mov edx, En;
             mov EnDl, dl;//获取加密用户名后的值的低两位

            mov ecx, edx;
             SHR ecx, 0x8;
             mov r8, cl;

            mov ecx, edx;
             shr ecx, 0x10;
             mov r10, cl;

            shr edx, 0x18;
             mov r18, dl;
         }
         k[4] = EnDl;
         k[5] = r8;
         k[6] = r10;
         k[7] = r18;
         int eeccxx = 0;
         int eeaaxx = 0;
         while (true)
         {
             int k2 = rand() % 0xFF;
             int k1 = rand() % 0xFF;
             int k0 = rand() % 0xFF;


             __asm {
                 mov ecx, k2;
                 shl ecx, 0x8;
                 mov eax, k1;
                 add ecx, eax;
                 movzx eax, k0;
                 shl ecx, 0x8;
                 mov edx, En;
                 add ecx, eax;
                 mov eax, 0xF0F0F0F1;
                 xor ecx, edx;
                 xor ecx, 0x22C078;
                 sub ecx, 0x2C175;
                 xor ecx, 0xFFE53167;
                 and ecx, 0xFFFFFF;
                 mul ecx;
                 shr edx, 0x4;
                 mov eax, edx;
                 shl eax, 0x4;
                 add eax, edx;
                 mov eeaaxx, eax;
                 mov eeccxx, ecx;
                 sub ecx, eax;
                 //mov eax, 0x0;
                 //cmove eax, edx;
             }
             if (eeccxx == eeaaxx)
             {
                 k[0] = k0;
                 k[1] = k1;
                 k[2] = k2;
                 break;
             }
         }
        
         printf("%02X%02X-%02XFC-%02X%02X-%02X%02X ", k[0], k[1], k[2], k[4], k[5], k[6], k[7]);
         getchar();
    }

    //void RegAC(const char *a1)
    //{
    //        int eeccxx2 = 0;
    //        int eeaaxx3 = 0;
    //        int eeddxx2 = 0;
    //
    //
    //        int En = Encde(a1, 1, 0x91, 0x3E7);//第四个参数小于3E8
    //        __asm
    //        {
    //            mov edx, En;
    //            mov EnDl, dl;//获取加密用户名后的值的低两位
    //
    //            mov ecx, edx;
    //            SHR ecx, 0x8;
    //            mov r8, cl;
    //
    //            mov ecx, edx;
    //            shr ecx, 0x10;
    //            mov r10, cl;
    //
    //            shr edx, 0x18;
    //            mov r18, dl;
    //        }
    //        kk[4] = EnDl;
    //        kk[5] = r8;
    //        kk[6] = r10;
    //        kk[7] = r18;
    //
    //    while (true)
    //    {
    //       
    //        byte k1 = rand() % 0xFF;
    //        byte k2 = rand() % 0xFF;
    //
    //        __asm {
    //            mov al, k1;
    //            xor al, kk[7];
    //            movzx ecx, al;
    //            mov eax, 0x100;
    //            imul cx, ax;
    //            mov al, k2;
    //            xor al, kk[5];
    //            movzx eax, al;
    //            add cx, ax;
    //            movzx eax, cx;
    //            mov ecx, 0xB;
    //            xor eax, 0x7892;
    //            add eax, 0x4D30;
    //            xor eax, 0x3421;
    //            movzx eax, ax;
    //            CDQ;
    //            IDIV ecx;
    //            mov eeddxx2, edx;
    //            mov eeaaxx3, eax;
    //
    //        }
    //        if (eeddxx2 == 0 && eeaaxx3 == 0x3E7)
    //        {
    //
    //            kk[1] = k1;
    //            kk[2] = k2;
    //            break;
    //        }
    //    }
    //    while (true)
    //    {
    //        byte k0 = rand() % 0xFF;
    //        byte k8 = rand() % 0xFF;
    //        byte k9 = rand() % 0xFF;
    //        __asm
    //        {
    //            movzx edx, k9;
    //            movzx ecx, kk[4];
    //            movzx eax, kk[5];
    //            xor edx, eax;
    //            movzx eax, k8;
    //            xor ecx, eax;
    //            shl edx, 0x8;
    //            movzx eax, kk[6];
    //            add edx, ecx;
    //            movzx ecx, k0;
    //            shl edx, 0x8;
    //            xor ecx, eax;
    //            add edx, ecx;
    //            mov ecx, edx;
    //            mov eax, 0xF0F0F0F1;
    //            xor ecx, 0x5B8C27;
    //            xor ecx, 0x22C078;
    //            sub ecx, 0x2C175;
    //            xor ecx, 0xFFE53167;
    //            and ecx, 0xFFFFFF;
    //            mul ecx;
    //            shr edx, 0x4;
    //            mov eax, edx;
    //            shl eax, 0x4;
    //            add eax, edx;
    //            mov eeccxx2, ecx;
    //            mov eeaaxx3, eax;
    //        }
    //        if (eeccxx2 == eeaaxx3 && eeaaxx3 <= 0x4596)
    //        {
    //            kk[0] = k0;
    //
    //            kk[8] = k8;
    //            kk[9] = k9;
    //            break;
    //        }
    //    }
    //       
    //    printf("%02X%02X-%02XAC-%02X%02X-%02X%02X-%02X%02X ",
    //        kk[0], kk[1], kk[2], kk[4], kk[5], kk[6], kk[7], kk[8], kk[9]);
    //    getchar();
    //}
    int main()
    {
         char Username[100] = { 0 };
         int id = 0;

        while (true)
         {
             scanf("%s%d", &Username, &id);
             switch (id)
             {
             case 0:Reg9C(Username);break;
             case 1:RegFC(Username);break;
             case 2:exit(0);

            }
            
         }
    }

  • 相关阅读:
    关于带权并查集
    Connections in Galaxy War ZOJ
    Supermarket POJ
    并查集判树 poj 1308
    最长异或值路径【字典树应用】
    最大异或对
    trie字典树【模板题】
    UVA536 二叉树重建 Tree Recovery
    UVA1584环状序列 Circular Sequence
    【CodeForces 622F】The Sum of the k-th Powers
  • 原文地址:https://www.cnblogs.com/Crack_MY/p/11848016.html
Copyright © 2020-2023  润新知