急啊,各位大侠帮帮忙吧,由于新注册分数不多,大家多原谅啊

解决方案 »

  1.   

    // ´Ë´úÂëÄ£¿éÖаüº¬µÄº¯ÊýµÄÇ°ÏòÉùÃ÷£º
    int APIENTRY _tWinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: ÔÚ´Ë·ÅÖôúÂë¡£
    UNICODE_STRING struniph;
    OBJECT_ATTRIBUTES obj_attr;
    ZWOS ZWopenS;
    ZWMV ZWmapV;
    ZWUMV ZWunmapV;
    HANDLE hSection;
    HMODULE hinstLib;
    DWORD dw;
    LARGE_INTEGER so;
    SIZE_T ssize; so.LowPart  = 0x000f0000;//ÎïÀíÄÚ´æµÄ»ùÖ·£¬¾ÍÊÇf000:0000
    so.HighPart = 0x00000000;
    ssize = 0xffff;
    wchar_t strPH[30] = L"\\device\\physicalmemory";
    FILE *fp; // ³õʼ»¯È«¾Ö×Ö·û´®
    //±äÁ¿³õʼ»¯
        dw = 0;//ÁªÏµºóµÄ»ùÖ·½«ÔÚÕâÀï·µ»Ø
        struniph.pwBuffer = strPH;
    struniph.wdLength = 0x2c;//×¢Òâ´óСÊÇ°´×Ö½ÚËã
    struniph.wdMaximumLength = 0x2e;//Ò²ÊÇ×Ö½Ú
        obj_attr.dwAttributes = 64;//ÊôÐÔ
    obj_attr.dwLength = 24;//OBJECT_ATTRIBUTESÀàÐ͵ij¤¶È
    obj_attr.pusObjectName = &struniph;//Ö¸Ïò¶ÔÏóµÄÖ¸Õë
    obj_attr.hRootDirectory = 0;
    obj_attr.pSecurityDescriptor = 0;
        obj_attr.pSecurityQualityOfService = 0;
    //¶ÁÈëntdll.dll,µÃµ½º¯ÊýµØÖ·
        hinstLib = LoadLibrary("ntdll.dll");
    ZWopenS = (ZWOS)GetProcAddress(hinstLib, "ZwOpenSection");
        ZWmapV = (ZWMV)GetProcAddress(hinstLib, "ZwMapViewOfSection");
    ZWunmapV = (ZWUMV)GetProcAddress(hinstLib, "ZwUnmapViewOfSection");
    //µ÷Óú¯Êý£¬¶ÔÎïÀíÄÚ´æ½øÐÐÓ³Éä
        ZWopenS(&hSection, 4, &obj_attr);
    ZWmapV((HANDLE)hSection, (HANDLE)0xffffffff, &dw, 0, 0xffff, &so, &ssize, 1, 0, 2);
        fp = fopen("bios.mem", "wb+");
    fwrite((void*)dw, 65536, 1, fp);
    fclose(fp);

    MessageBox(NULL, "Bios saved to bios.mem!", "Save OK", MB_OK); if (hinstLib != NULL)
    {
    FreeLibrary(hinstLib);
    }
    return 0;
    }
    从网上抄的