| ×îÐÂÎÄÕ |
| µ±Ç°Î»ÖãºÀIJ©¿Í >> ºÚ¿ÍѧÌà >> ä¯ÀÀÎÄÕ |
|
×î½üÔÚÄæÏò·ÖÎöÒ»¸ö³ÌÐòʱ£¬Åöµ½Ò»¸öÖû»Ëã·¨£¬Í¦ÓÐÒâ˼µÄ¡£ÎÒ¾õµÃÒÔºó¿ÉÒÔΪÎÒÃÇËùÓã¬ËùÒԾͰÑËü¼Ç¼ÁËÏÂÀ´¡£±ÈÈçÔÚ¿Í»§¶Ë±¾µØ±£´æÒ»Ð©Êý¾Ý£¬Èç¹û²»ÏëÏÔʾµÄ¸øÓû§¿´µ½ÕâЩÊý¾Ý£¬¾Í¿ÉÒÔÓÃÏÂÃæµÄº¯Êý¼òµ¥µÄÖû»Ò»ÏºóÔÙ±£´æ¡£
ÔÚOllyDbgÖУ¬µÃµ½µÄ·´»ã±à´úÂëÈçÏ¡£Ëã·¨´ÓµÚ4ÐпªÊ¼£¬½«ÃÜÔ¿ÒÆÈëEAX£¬µ½×îºóµÄret·µ»Ø½áÊø¡£
0040A9D0 /$ 8A4C24 04 mov cl, byte ptr [esp+4] 0040A9D4 |. 56 push esi 0040A9D5 |. 33F6 xor esi, esi 0040A9D7 |. B8 9D2A4100 mov eax, 00412A9D 0040A9DC |> 3A48 FF /cmp cl, byte ptr [eax-1] 0040A9DF |. 72 04 |jb short 0040A9E5 0040A9E1 |. 3A08 |cmp cl, byte ptr [eax] 0040A9E3 |. 76 19 |jbe short 0040A9FE 0040A9E5 |> 3A48 01 |cmp cl, byte ptr [eax+1] 0040A9E8 |. 72 05 |jb short 0040A9EF 0040A9EA |. 3A48 02 |cmp cl, byte ptr [eax+2] 0040A9ED |. 76 23 |jbe short 0040AA12 0040A9EF |> 83C0 04 |add eax, 4 0040A9F2 |. 46 |inc esi 0040A9F3 |. 3D BD2A4100 |cmp eax, 00412ABD ; ASCII "etAdaptersInfo" 0040A9F8 |.^ 7C E2 \jl short 0040A9DC 0040A9FA |. 8AC1 mov al, cl 0040A9FC |. 5E pop esi 0040A9FD |. C3 retn 0040A9FE |> 8A04B5 9E2A41>mov al, byte ptr [esi*4+412A9E] 0040AA05 |. 8A14B5 9C2A41>mov dl, byte ptr [esi*4+412A9C] 0040AA0C |. 2BC2 sub eax, edx 0040AA0E |. 5E pop esi 0040AA0F |. 03C1 add eax, ecx 0040AA11 |. C3 retn 0040AA12 |> 8A14B5 9E2A41>mov dl, byte ptr [esi*4+412A9E] 0040AA19 |. 8A04B5 9C2A41>mov al, byte ptr [esi*4+412A9C] 0040AA20 |. 2BC2 sub eax, edx 0040AA22 |. 5E pop esi 0040AA23 |. 03C1 add eax, ecx 0040AA25 \. C3 retn
ÔÚ0x00412A9D¸½½ü´¦µÄÊý¾ÝÈçÏ£º
00412A9C 00 13 EC FF 14 27 D8 EB .?'Øë 00412AA4 28 3B C4 D7 3C 4F B0 C3 (;Ä×<O°Ã 00412AAC 50 63 9C AF 64 77 88 9B Pcœ¯dwˆ› 00412AB4 78 7B 84 87 7C 7F 80 83 x{„‡|€ 00412ABC 47 G
´Ó´úÂëÖпÉÒÔ¿´µ½£¬Êý¾Ýʱ´Ó0x412A9C¿ªÊ¼µÄ£¨ÎÄÖÐÀ¶É«µØ·½±ê×¢£©£¬ÖÁÓÚ½áÊøµØ·½£¬Ò²¿ÉÒÔ´Ó´úÂëÖп´µ½£¨ÎÄÖкìÉ«µØ·½±ê×¢£©¡£EAXÿ´Î¼Ó4£¬µ±´óÓÚµÈÓÚ0x00412ABDºó£¬¾Í²»ÔÚÍù»ØÌø£¬¶øÊÇÍùºó×ß·µ»Ø¡£
³ÌÐòÊÇÒÔ×Ö½ÚbyteΪµ¥Î»½øÐÐÖû»£¬ÎÒ²âÊÔÁË0µ½255µÄÊý¾Ý£¬Öû»Ç°ºóûÓÐÖØ¸´µÄÊý¾Ý¡£²âÊԵĽá¹û¼û×îºó¡£
Ê×ÏÈ£¬ÎÒÔÚVS2005ÖÐʹÓÃÄÚÁª»ã±àµÄ·½Ê½£¬·ÂÕÕ·´»ã±à´úÂ룬дÁËÒ»¶ÎÄÚÁªµÄ»ã±à´úÂ뺯Êý¡£Æä¹¦ÄܲâÊÔÏÂÀ´£¬Ã»ÓÐÎÊÌâ¡£´úÂëÈçÏ£º
////////////////////////////////////////////////////////////////////////////////////////////////////// //ÄÚÁª»ã±àµÄÖû»º¯Êý byte __declspec(naked) ExchangeByte(byte byteValue) {
__asm { push ebp mov ebp,esp
push esi push ecx push edx
//»ñÈ¡²ÎÊý mov cl,byteValue xor esi,esi //»ñÈ¡ÃÜÔ¿±äÁ¿µØÖ· mov eax,offset byteData + 1 START: cmp cl,byte ptr [eax - 1] jb CMP1 cmp cl,byte ptr [eax] jbe GETVALUE_A CMP1: cmp cl,byte ptr [eax+1] jb CMP2 cmp cl,byte ptr [eax+2] jbe GETVALUE_B CMP2: add eax,4 inc esi cmp eax,offset byteData + SIZE byteData jl START mov al,cl //½áÊø jmp END
//¿ªÊ¼È¡Öµ£¬A·½Ê½ GETVALUE_A: mov al,byte ptr [esi * 4 + offset byteData + 2] mov dl,byte ptr [esi * 4 + offset byteData] sub eax,edx add eax,ecx //½áÊø jmp END
//¿ªÊ¼È¡Öµ£¬B·½Ê½ GETVALUE_B: mov dl,byte ptr [esi * 4 + offset byteData + 2] mov al,byte ptr [esi * 4 + offset byteData] sub eax,edx add eax,ecx //½áÊø jmp END
END: pop edx pop ecx pop esi pop ebp ret } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////
ºóÃæ£¬ÎÒÓÖÓÃC++´úÂëдÁËͬÑùµÄ¹¦ÄÜ£¬C++´úÂëÈçÏÂËùʾ¡£
Ò²ÐíÄãÒªÎÊ£¬ÕâÖ»ÓмÓÃÜËã·¨£¬Ã»ÓнâÃÜËã·¨¡£Èç¹ûÄãÓÐÐËȤ£¬¿ÉÒÔÑо¿ÏÂÔõôд¸ö½âÃÜËã·¨¡£²»¹ý¶ÔÓÚÕâÖÖ¼ÓÃÜ·½Ê½£¬ÎÒÏë²¢²»ÐèҪȥд½âÃÜËã·¨¼´¿É½âÃÜ£¬²»ÖªµÀ´ÏÃ÷µÄÄãÏ뵽ûÓÐÄØ£¿
///////////////////////////////////////////////////////////////////////////////////////////////////////// //C++°æµÄÖû»º¯Êý byte ReplaceMentValue(byte byteNum) {
//byte byteNum = 0x55; byte byteResult = 0; int nIndex = 0; //Ñ»·µÄ´ÎÊý int nCount = 32; //Êý×éµÄÔªËØ¸öÊý
START: //ÊäÈëÊýÖµ
//ºÍ[EAX-1]±È½Ï£¬Èç¹û´óÓÚµÈÓÚ£¬¾ÍºÍ[EAX]±È½Ï¡£ if (byteNum >= byteData[nIndex * 4 + 0]) { goto CMP1; } //СÓھͺÍ[EAX+1]±È½Ï else { goto CMP2; }
CMP1: //ºÍ[EAX]±È½Ï£¬Èç¹ûСÓÚµÈÓÚ£¬¾Íȡֵ if (byteNum <= byteData[nIndex * 4 + 1]) { goto GETVALUE_A; } //Èç¹û´óÓÚ£¬¾ÍºÍ[EAX+1]±È½Ï else { goto CMP2; }
CMP2: //ºÍ[EAX+1]±È½Ï£¬Èç¹ûСÓÚ£¬¾ÍEAX¼Ó4£¬ESI¼Ó1£¬ÔٱȽϷ¶Î§ if (byteNum < byteData[nIndex * 4 + 2]) { nIndex++; if (nIndex * 4 < nCount) { goto START; } else { byteResult = byteNum; goto END; } } //Èç¹û´óÓÚµÈÓÚ£¬¾ÍºÍ[EAX+2]±È½Ï else { goto CMP3; }
CMP3: //ºÍ[EAX+2]±È½Ï£¬Èç¹ûСÓÚµÈÓÚ£¬¾Íȡֵ£¬Ñ¡B·½°¸ if (byteNum <= byteData[nIndex * 4 + 3]) { goto GETVALUE_B; } //Èç¹û´óÓÚ£¬¾ÍEAX¼Ó4£¬ESI¼Ó1£¬ÔٱȽϷ¶Î§ else { nIndex++; if (nIndex * 4 < nCount) { goto START; } else { byteResult = byteNum; goto END; } }
GETVALUE_A: //µÚAÖÖȡֵ byteResult = byteData[nIndex * 4 + 2] - byteData[nIndex * 4] + byteNum; goto END; GETVALUE_B: //µÚBÖÖȡֵ byteResult = byteData[nIndex * 4] - byteData[nIndex * 4 + 2] + byteNum; goto END; END: return byteResult; }
////////////////////////////////////////////////////////////////////////////////////////////////
²âÊÔ´úÂ룺 int _tmain(int argc, _TCHAR* argv[]) { //²âÊÔËùÓÐÊý¾Ý for (byte i = 0x00; i < 0xFF; i++) { printf("0xXÖû»Îª£º0xX\r\n",i,ExchangeByte(i)); } printf("0xXÖû»Îª£º0xX\r\n",0xFF,ExchangeByte(0xFF));
////²âÊÔC++°æ //for (int j = 0x00; j < 0xFF+1; j++) //{ // printf("0xXÖû»Îª£º0xX\r\n",j,ReplaceMentValue(j)); //}
return 0; }
////////////////////////////////////////////////////////////////////////////////////////////////
²âÊÔ½á¹û£º
0x00Öû»Îª£º0xEC 0x01Öû»Îª£º0xED 0x02Öû»Îª£º0xEE 0x03Öû»Îª£º0xEF 0x04Öû»Îª£º0xF0 0x05Öû»Îª£º0xF1 0x06Öû»Îª£º0xF2 0x07Öû»Îª£º0xF3 0x08Öû»Îª£º0xF4 0x09Öû»Îª£º0xF5 0x0AÖû»Îª£º0xF6 0x0BÖû»Îª£º0xF7 0x0CÖû»Îª£º0xF8 0x0DÖû»Îª£º0xF9 0x0EÖû»Îª£º0xFA 0x0FÖû»Îª£º0xFB 0x10Öû»Îª£º0xFC 0x11Öû»Îª£º0xFD 0x12Öû»Îª£º0xFE 0x13Öû»Îª£º0xFF 0x14Öû»Îª£º0xD8 0x15Öû»Îª£º0xD9 0x16Öû»Îª£º0xDA 0x17Öû»Îª£º0xDB 0x18Öû»Îª£º0xDC 0x19Öû»Îª£º0xDD 0x1AÖû»Îª£º0xDE 0x1BÖû»Îª£º0xDF 0x1CÖû»Îª£º0xE0 0x1DÖû»Îª£º0xE1 0x1EÖû»Îª£º0xE2 0x1FÖû»Îª£º0xE3 0x20Öû»Îª£º0xE4 0x21Öû»Îª£º0xE5 0x22Öû»Îª£º0xE6 0x23Öû»Îª£º0xE7 0x24Öû»Îª£º0xE8 0x25Öû»Îª£º0xE9 0x26Öû»Îª£º0xEA 0x27Öû»Îª£º0xEB 0x28Öû»Îª£º0xC4 0x29Öû»Îª£º0xC5 0x2AÖû»Îª£º0xC6 0x2BÖû»Îª£º0xC7 0x2CÖû»Îª£º0xC8 0x2DÖû»Îª£º0xC9 0x2EÖû»Îª£º0xCA 0x2FÖû»Îª£º0xCB 0x30Öû»Îª£º0xCC 0x31Öû»Îª£º0xCD 0x32Öû»Îª£º0xCE 0x33Öû»Îª£º0xCF 0x34Öû»Îª£º0xD0 0x35Öû»Îª£º0xD1 0x36Öû»Îª£º0xD2 0x37Öû»Îª£º0xD3 0x38Öû»Îª£º0xD4 0x39Öû»Îª£º0xD5 0x3AÖû»Îª£º0xD6 0x3BÖû»Îª£º0xD7 0x3CÖû»Îª£º0xB0 0x3DÖû»Îª£º0xB1 0x3EÖû»Îª£º0xB2 0x3FÖû»Îª£º0xB3 0x40Öû»Îª£º0xB4 0x41Öû»Îª£º0xB5 0x42Öû»Îª£º0xB6 0x43Öû»Îª£º0xB7 0x44Öû»Îª£º0xB8 0x45Öû»Îª£º0xB9 0x46Öû»Îª£º0xBA 0x47Öû»Îª£º0xBB 0x48Öû»Îª£º0xBC 0x49Öû»Îª£º0xBD 0x4AÖû»Îª£º0xBE 0x4BÖû»Îª£º0xBF 0x4CÖû»Îª£º0xC0 0x4DÖû»Îª£º0xC1 0x4EÖû»Îª£º0xC2 0x4FÖû»Îª£º0xC3 0x50Öû»Îª£º0x9C 0x51Öû»Îª£º0x9D 0x52Öû»Îª£º0x9E 0x53Öû»Îª£º0x9F 0x54Öû»Îª£º0xA0 0x55Öû»Îª£º0xA1 0x56Öû»Îª£º0xA2 0x57Öû»Îª£º0xA3 0x58Öû»Îª£º0xA4 0x59Öû»Îª£º0xA5 0x5AÖû»Îª£º0xA6 0x5BÖû»Îª£º0xA7 0x5CÖû»Îª£º0xA8 0x5DÖû»Îª£º0xA9 0x5EÖû»Îª£º0xAA 0x5FÖû»Îª£º0xAB 0x60Öû»Îª£º0xAC 0x61Öû»Îª£º0xAD 0x62Öû»Îª£º0xAE 0x63Öû»Îª£º0xAF 0x64Öû»Îª£º0x88 0x65Öû»Îª£º0x89 0x66Öû»Îª£º0x8A 0x67Öû»Îª£º0x8B 0x68Öû»Îª£º0x8C 0x69Öû»Îª£º0x8D 0x6AÖû»Îª£º0x8E 0x6BÖû»Îª£º0x8F 0x6CÖû»Îª£º0x90 0x6DÖû»Îª£º0x91 0x6EÖû»Îª£º0x92 0x6FÖû»Îª£º0x93 0x70Öû»Îª£º0x94 0x71Öû»Îª£º0x95 0x72Öû»Îª£º0x96 0x73Öû»Îª£º0x97 0x74Öû»Îª£º0x98 0x75Öû»Îª£º0x99 0x76Öû»Îª£º0x9A 0x77Öû»Îª£º0x9B 0x78Öû»Îª£º0x84 0x79Öû»Îª£º0x85 0x7AÖû»Îª£º0x86 0x7BÖû»Îª£º0x87 0x7CÖû»Îª£º0x80 0x7DÖû»Îª£º0x81 0x7EÖû»Îª£º0x82 0x7FÖû»Îª£º0x83 0x80Öû»Îª£º0x7C 0x81Öû»Îª£º0x7D 0x82Öû»Îª£º0x7E 0x83Öû»Îª£º0x7F 0x84Öû»Îª£º0x78 0x85Öû»Îª£º0x79 0x86Öû»Îª£º0x7A 0x87Öû»Îª£º0x7B 0x88Öû»Îª£º0x64 0x89Öû»Îª£º0x65 0x8AÖû»Îª£º0x66 0x8BÖû»Îª£º0x67 0x8CÖû»Îª£º0x68 0x8DÖû»Îª£º0x69 0x8EÖû»Îª£º0x6A 0x8FÖû»Îª£º0x6B 0x90Öû»Îª£º0x6C 0x91Öû»Îª£º0x6D 0x92Öû»Îª£º0x6E 0x93Öû»Îª£º0x6F 0x94Öû»Îª£º0x70 0x95Öû»Îª£º0x71 0x96Öû»Îª£º0x72 0x97Öû»Îª£º0x73 0x98Öû»Îª£º0x74 0x99Öû»Îª£º0x75 0x9AÖû»Îª£º0x76 0x9BÖû»Îª£º0x77 0x9CÖû»Îª£º0x50 0x9DÖû»Îª£º0x51 0x9EÖû»Îª£º0x52 0x9FÖû»Îª£º0x53 0xA0Öû»Îª£º0x54 0xA1Öû»Îª£º0x55 0xA2Öû»Îª£º0x56 0xA3Öû»Îª£º0x57 0xA4Öû»Îª£º0x58 0xA5Öû»Îª£º0x59 0xA6Öû»Îª£º0x5A 0xA7Öû»Îª£º0x5B 0xA8Öû»Îª£º0x5C 0xA9Öû»Îª£º0x5D 0xAAÖû»Îª£º0x5E 0xABÖû»Îª£º0x5F 0xACÖû»Îª£º0x60 0xADÖû»Îª£º0x61 0xAEÖû»Îª£º0x62 0xAFÖû»Îª£º0x63 0xB0Öû»Îª£º0x3C 0xB1Öû»Îª£º0x3D 0xB2Öû»Îª£º0x3E 0xB3Öû»Îª£º0x3F 0xB4Öû»Îª£º0x40 0xB5Öû»Îª£º0x41 0xB6Öû»Îª£º0x42 0xB7Öû»Îª£º0x43 0xB8Öû»Îª£º0x44 0xB9Öû»Îª£º0x45 0xBAÖû»Îª£º0x46 0xBBÖû»Îª£º0x47 0xBCÖû»Îª£º0x48 0xBDÖû»Îª£º0x49 0xBEÖû»Îª£º0x4A 0xBFÖû»Îª£º0x4B 0xC0Öû»Îª£º0x4C 0xC1Öû»Îª£º0x4D 0xC2Öû»Îª£º0x4E 0xC3Öû»Îª£º0x4F 0xC4Öû»Îª£º0x28 0xC5Öû»Îª£º0x29 0xC6Öû»Îª£º0x2A 0xC7Öû»Îª£º0x2B 0xC8Öû»Îª£º0x2C 0xC9Öû»Îª£º0x2D 0xCAÖû»Îª£º0x2E 0xCBÖû»Îª£º0x2F 0xCCÖû»Îª£º0x30 0xCDÖû»Îª£º0x31 0xCEÖû»Îª£º0x32 0xCFÖû»Îª£º0x33 0xD0Öû»Îª£º0x34 0xD1Öû»Îª£º0x35 0xD2Öû»Îª£º0x36 0xD3Öû»Îª£º0x37 0xD4Öû»Îª£º0x38 0xD5Öû»Îª£º0x39 0xD6Öû»Îª£º0x3A 0xD7Öû»Îª£º0x3B 0xD8Öû»Îª£º0x14 0xD9Öû»Îª£º0x15 0xDAÖû»Îª£º0x16 0xDBÖû»Îª£º0x17 0xDCÖû»Îª£º0x18 0xDDÖû»Îª£º0x19 0xDEÖû»Îª£º0x1A 0xDFÖû»Îª£º0x1B 0xE0Öû»Îª£º0x1C 0xE1Öû»Îª£º0x1D 0xE2Öû»Îª£º0x1E 0xE3Öû»Îª£º0x1F 0xE4Öû»Îª£º0x20 0xE5Öû»Îª£º0x21 0xE6Öû»Îª£º0x22 0xE7Öû»Îª£º0x23 0xE8Öû»Îª£º0x24 0xE9Öû»Îª£º0x25 0xEAÖû»Îª£º0x26 0xEBÖû»Îª£º0x27 0xECÖû»Îª£º0x00 0xEDÖû»Îª£º0x01 0xEEÖû»Îª£º0x02 0xEFÖû»Îª£º0x03 0xF0Öû»Îª£º0x04 0xF1Öû»Îª£º0x05 0xF2Öû»Îª£º0x06 0xF3Öû»Îª£º0x07 0xF4Öû»Îª£º0x08 0xF5Öû»Îª£º0x09 0xF6Öû»Îª£º0x0A 0xF7Öû»Îª£º0x0B 0xF8Öû»Îª£º0x0C 0xF9Öû»Îª£º0x0D 0xFAÖû»Îª£º0x0E 0xFBÖû»Îª£º0x0F 0xFCÖû»Îª£º0x10 0xFDÖû»Îª£º0x11 0xFEÖû»Îª£º0x12 0xFFÖû»Îª£º0x13 |
| ¡¾·¢±íÆÀÂÛ¡¿¡¾¸æËߺÃÓÑ¡¿¡¾´òÓ¡´ËÎÄ¡¿¡¾ÊղشËÎÄ¡¿¡¾¹Ø±Õ´°¿Ú¡¿ | |