010Editor RIソース

#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型株[10] = {0x11,0x22,0x33,0x9c、0x55,0x66,0x77,0x88,0x99,0xAA}。

//チャー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;

ボイドw9c1()
{
     一方(TRUE)
     {
         BYTE K0 =ランド()%0xFFで、
         __asm
         {
             MOVがら、K0。
             XORら、K [6]。
             MOVのk0xork6、ら。

            movzx EAX、ら。
             XORら、0x18の。
             アル、0x3Dを追加します。
             XORら、0xA7。
             movzx EAX、ら。
             MOVのeeaaxx1、ら。
         }
         IF(!eeaaxx1 = 0 && eeaaxx1> = 10)
         {
             K [0] = K0。
             ブレーク;
         }

    }
}

ボイドw9c2()
{
     一方(TRUE)
     {
         BYTE K1 =ランド()%0xFFで、
         BYTE K2 =ランド()%0xFFで、
         __asm {
             MOVがら、K1。
             XORら、K [7]。
             movzx ECX、ら。
             MOV EAX、0x100を。
             IMUL CX、斧。
             MOVら、K2。
             XORら、K [5]。
             MOVのk2xork5、ら。
             movzx EAX、ら。
             CXを追加し、斧。
             movzx ESI、CX;
             MOVのeessii1、ESI;
             MOV EAX、ESI;
             MOV ECX、0xB。
             XOR EAX、0x7892;
             、0x4D30をEAX追加します。
             XOR EAX、0x3421;
             movzx EAX、斧。
             CDQ;
             IDIVは、ECX。
             MOVのeeddxx、EDX;
             MOVのeeaaxx2、EAX;
         }
         //テストEDX、EDX。
         IF(!eeddxx == 0 && eeaaxx2 = 0 && eeaaxx2 == 0x3E7)
         {
             K [1] = K1。
             K [2] = K2。
             ブレーク;
         }
     }
}




INTエンコード[] = {
         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チャー* A1、A2 INT、チャーA3、A4 INT)
{
     CONST文字* V4。// EDX @ 1
     int型V5に署名しました。1つの@ // ESI
     署名したint型のV6。// EDI @ 1
     符号なし__int8 V7。// BL @ 2
     int型V8。// EAX @ 3
     int型V9。// ECX @ 3
     int型V10; // ECX @ 4
     int型の結果。// EAX @ 4
     int型V12。// ECX @ 5
     符号なし__int8 V13。// [SP + 8H] [BP-10H] @ 2
     の符号なし__int8 V14。// [SP + Chの] [BP-Chの] @ 2
     符号なし__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)
     {
         結果= 0;
     }
     他
     {
         V13 = 0。
         V14 = 0;
         V7 = 15 * A4。
         V15 = 17 * A3。
         実行
         {
             V8 = TOUPPER(V4 [V6])。
             V9 = V16 +エンコード[V8]。
             (A2)であれば
             {
                 V10 =エンコード[V7]
                     +エンコード[V15]
                     +エンコード[(符号なし__int8)(V8 + 47)] *(エンコード[(符号なし__int8)(V8 + 13)] ^ V9)。
                 結果=エンコード[V14] + V10。
                 V16 =エンコード[V14] + V10。
             }
             他
             {
                 V12 =エンコード[V7]
                     +エンコード[V15]
                     +エンコード[(符号なし__int8)(V8 + 23)] *(エンコード[(符号なし__int8)(V8 + 63)] ^ V9)。
                 結果=エンコード[V13] + V12。
                 V16 =エンコード[V13] + V12。
             }
             V14 + = 19。
             ++ V6;
             V15 + = 9。
             V7 + = 13。
             V13 + = 7。
             V4 = A1;
         }一方(V6 <V5)。
     }
     結果を返します。
}


バイトENDL = 0;
= 0 R8バイト、
バイトR10 = 0;
バイトR18 = 0;
ボイドReg9C(CONST文字* A1)
{
     int型EN = Encde(A1 ,. 1,0、0x3E7);
     __asm
     {
         MOV EDX、アン。
         MOV ENDL、DL; //は、暗号化されたユーザー名の下位2ビットの値を取得

        MOV ECX、EDX;
         SHRのECX、0x8という。
         MOV R8、CL;

        MOV ECX、EDX;
         SHRは、0x10のECX。
         MOV R10、CL;

        SHRは、0x18のEDX。
         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 \ n"、K [0]、K [1]、K [2]、K [4]、K [5]、K [6]、K [7])。
     getchar();
}

RegFCボイド(CONSTチャー* A1)
{
     int型Encde EN =(A1、0、0xFFで,. 1);
     __asm
     {
         MOV EDX、エン;
         MOVのENDL、DL; //暗号化されたユーザ名の下位2ビットの値を取得します

        MOV ECX、EDX;
         SHRのECX、0x8という。
         MOV R8、CL;

        MOV ECX、EDX;
         SHRは、0x10のECX。
         MOV R10、CL;

        SHRは、0x18のEDX。
         MOV R18、DL。
     }
     K [4] = ENDL。
     K [5] = R8。
     K [6] = R10。
     K [7] = R18。
     int型eeccxx = 0;
     int型eeaaxx = 0;
     (真)一方
     {
         int型K2 =ランド()%0xFFで、
         INT K1 =ランド()%0xFFで、
         INT K0 =ランド()%0xFFで、


         __asm {
             MOV ECX、K2。
             SHL ECX、0x8という。
             MOV EAX、K1;
             ECXを追加し、EAX;
             movzx EAX、K0;
             SHL ECX、0x8という。
             MOV EDX、エン;
             ECXを追加し、EAX;
             MOV EAX、0xF0F0F0F1。
             XOR ECX、EDX;
             XOR ECX、0x22C078。
             サブECX、0x2C175。
             XOR ECX、0xFFE53167。
             そして、0xFFFFFFのをECX。
             MUL ECX;
             SHRのEDX、0x4の。
             MOV EAX、EDX;
             SHL EAX、0x4の。
             EAXを追加し、EDX;
             MOVのeeaaxx、EAX;
             MOVのeeccxx、ECX。
             サブECX、EAX;
             //のmov eaxに、0x0の。
             // cmove EAX、EDX;
         }
         IF(eeccxx == eeaaxx)
         {
             K [0] = K0。
             K [1] = K1。
             K [2] = K2。
             ブレーク;
         }
     }
    
     のprintf( "%02X%02X-%02XFC-%02X%02X-%02X%02X \ n"、K [0]、K [1]、K [2]、K [4]、K [5] 、K [6]、K [7])。
     getchar();
}

ボイドRegAC //(CONST文字* A1)
// {
// INT eeccxx2 = 0;
// INT eeaaxx3 = 0;
// INT eeddxx2 = 0;
//
//
// INT Encde EN =(A1 ,. 1、0x91を、0x3E7); //第四のパラメータは以下3E8より
// __asm
// {
; // MOV EDX、エン
// MOVのENDL、DL; // 2つの暗号化ユーザ名の後に低い値を取得
//
// MOV ECX、EDX;
// ECX SHR、0x8という;
// MOV R8、Clであり;
//
// MOV ECX、EDX;
// ECX SHR、の0x10;
// MOV R10、Clであり;
//
// EDX SHR、0x18の。
MOV R18 //、DL;
//}
// KK [4] = ENDL。
// KK [5] = R8。
// KK [6] = R10。
// KK [7] = R18。
//
//一方(真)
// {
//       
//バイトK1 =ランド()%0xFFで、
//バイトK2 =ランド()%0xFFで、
//
// __asm {
//のMOVら、K1。
// XORら、KK [7]。
// movzx ECX、アル。
//のmov eaxに、0x100を。
// IMUL CX、斧。
//楽章ら、K2;
// XORら、KK [5]。
// movzx EAX、アル。
// CX、斧を追加します。
// movzx EAX、CX;
// MOV ECX、0xB。
// XOR EAX、0x7892;
//追加EAX、0x4D30。
// XOR EAX、0x3421;
// movzx EAX、斧。
// CDQ;
// IDIVは、ECX。
//楽章eeddxx2、EDX;
//楽章eeaaxx3、EAX;
//
//}
//もし(eeddxx2 == 0 && eeaaxx3 == 0x3E7)
// {
//
// KK [1] = K1。
// KK [2] = K2。
//ブレーク;
//}
//}
//一方(真)
// {
//バイトK0 =ランド()%0xFFで、
//バイトK8 =ランド()%0xFFで、
//バイトK9 =ランド()%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]。
//追加EDX、ECX。
// movzx ECX、K0;
// SHL EDX、0x8という。
// XOR ECX、EAX;
//追加EDX、ECX。
// MOV ECX、EDX;
//のmov eaxに、0xF0F0F0F1。
// XOR ECX、0x5B8C27。
// XOR ECX、0x22C078。
//サブECX、0x2C175。
// XOR ECX、0xFFE53167。
//とECX、0xFFFFFFの。
// MUL ECX。
// SHR EDX、0x4の。
//のMOV EAX、EDX;
// SHL EAX、0x4の。
//追加EAX、EDX;
//楽章eeccxx2、ECX。
//楽章eeaaxx3、EAX;
//}
//もし(eeccxx2 == eeaaxx3 && eeaaxx3 <= 0x4596)
// {
// KK [0] = K0。
//
// KK [8] = K8。
// KK [9] = K9。
//ブレーク;
//}
//}
//       
//のprintf( "%02X%02X-%02XAC-%02X%02X-%02X%02X-%02X%02X \ n"、
// KK [0] KK [1] 、KK [2] KK [4] KK [5]、KK KK [6]、[7] KK [8] KK [9])。
// getchar関数();
//}
int型のmain()
{
     文字ユーザー名[100] = {0}。
     INT ID = 0。

    (真)一方
     {
         scanf関数( "%sの%D"、およびユーザー名、&​​ID)。
         スイッチ(ID)
         {
         ケース0:Reg9C(ユーザ名)、ブレーク。
         ケース1:RegFC(ユーザー名);休憩;
         ケース2:出口(0);

        }
        
     }
}

おすすめ

転載: www.cnblogs.com/Check-me/p/11848016.html