首页
社区
课程
招聘
[原创]让XP用上4G内存,有图有真相,带破解补丁
2011-7-28 00:13 743472

[原创]让XP用上4G内存,有图有真相,带破解补丁

2011-7-28 00:13
743472
收藏
点赞5
打赏
分享
最新回复 (415)
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jrs13579 2013-3-16 16:44
301
0
usb摄像头不能启动
雪    币: 51
活跃值: (61)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
游戏神通 2013-3-19 13:34
302
0
这个牛啊~~~
雪    币: 54
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
涅槃小鸟 2013-3-19 15:19
303
0
乖乖,,,,真是大牛
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guko 2013-4-7 14:27
304
0
用用,试一试效果如果
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wenluderen 2013-4-13 09:58
305
0
看来 很多人 都遇到这个bugl了
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fatalfeel 2013-5-13 11:51
306
0
已更新版本 直接下載 copy 貼上
http://www.mediafire.com/?dd74m0kx1qzir2b
原Po 在Hal.dll 上已解決 USB 問題
實測8g ram 使用7g ram 無誤

另提供 參考文件
http://www.hard-soft.se/hardsoft/home

void __userpurge MmAddPhysicalMemoryEx(int a1<ebx>, int a2<edi>, int a3<esi>, int a4, int a5, int a6)
{
  signed __int64 v6; // qax@8
  ULONG v7; // ebx@8
  unsigned int v8; // esi@8
  int v9; // ecx@8
  ULONG_PTR v10; // eax@14
  char v11; // zf@16
  PVOID v12; // edi@21
  PVOID v13; // eax@23
  int v14; // ecx@23
  int v15; // edx@24
  ULONG v16; // ecx@24
  int v17; // edx@25
  unsigned int v18; // ecx@31
  int v19; // ecx@31
  unsigned int v20; // ecx@31
  ULONG_PTR v21; // edi@37
  unsigned __int32 v22; // edx@39
  int v23; // ecx@39
  int v24; // ebx@39
  int v25; // eax@39
  int v26; // edx@39
  int v27; // ecx@43
  PVOID v28; // eax@43
  int v29; // edx@43
  int v30; // ecx@56
  char *v31; // eax@57
  int v32; // ecx@60
  int v33; // edi@65
  int v34; // edx@68
  int v35; // [sp-Ch] [bp-30h]@8
  int v36; // [sp-8h] [bp-2Ch]@3
  int v37; // [sp-4h] [bp-28h]@2
  __int16 v38; // [sp+0h] [bp-24h]@37
  int v39; // [sp+4h] [bp-20h]@37
  int BugCheckParameter2; // [sp+8h] [bp-1Ch]@31
  unsigned int BugCheckParameter2a; // [sp+8h] [bp-1Ch]@44
  char *v42; // [sp+Ch] [bp-18h]@23
  unsigned int v43; // [sp+Ch] [bp-18h]@31
  signed int v44; // [sp+Ch] [bp-18h]@43
  PVOID P; // [sp+10h] [bp-14h]@21
  void *v46; // [sp+14h] [bp-10h]@21
  int v47; // [sp+18h] [bp-Ch]@23
  unsigned int v48; // [sp+18h] [bp-Ch]@30
  signed int v49; // [sp+1Ch] [bp-8h]@6
  int v50; // [sp+1Ch] [bp-8h]@31
  signed int v51; // [sp+1Ch] [bp-8h]@43
  ULONG StartingIndex; // [sp+20h] [bp-4h]@8
  char v53; // [sp+2Fh] [bp+Bh]@23
  int v54; // [sp+34h] [bp+10h]@8

  if ( *(_DWORD *)a4 & 0xFFF
    || (v37 = a3, *(_DWORD *)a5 & 0xFFF)
    || (v36 = a2, a6)
    || !MmDynamicPfn
    || ((*(_DWORD *)((((unsigned int)MmPfnDatabase >> 18) & 0x3FF8) - 1067450368) & 0x81) != 129 ? (v49 = 0) : (v49 = 1),
        v35 = a1,
        HIDWORD(v6) = *(_DWORD *)(a5 + 4),
        v7 = *(_QWORD *)a4 >> 12,
        LODWORD(v6) = *(_DWORD *)a5,
        StartingIndex = v7,
        v8 = v6 >> 12,
        v9 = v8 + v7,
        v54 = v8 + v7,
        v7 >= v8 + v7) )
    goto LABEL_70;
  if ( v9 - 1 > (unsigned int)MmHighestPossiblePhysicalPage )
  {
    v54 = MmHighestPossiblePhysicalPage + 1;
    v9 = MmHighestPossiblePhysicalPage + 1;
    v8 = MmHighestPossiblePhysicalPage + 1 - v7;
  }
  if ( v7 >= v9 )
    goto LABEL_70;
  if ( ExVerifySuite(DataCenter) == 1 )
  {
    v10 = 0x1000000u;
  }
  else
  {
    if ( MmProductType == 0x690057 || (v11 = ExVerifySuite(Enterprise) == 1, v10 = 0x800000u, !v11) )
      v10 = 0x100000u;
  }
  if ( MmNumberOfPhysicalPages + v8 > v10 )
  {
    v8 = v10 - MmNumberOfPhysicalPages;
    v54 = v10 - MmNumberOfPhysicalPages + v7;
  }
  if ( v7 >= v54 )
    goto LABEL_70;
  ExAcquireFastMutex(&MmDynamicMemoryMutex);
  P = MmPhysicalMemoryBlock;
  v12 = ExAllocatePoolWithTag(0, 8 * *(_DWORD *)MmPhysicalMemoryBlock + 24, 0x20206D4Du);
  v46 = v12;
  if ( !v12 )
  {
    ExReleaseFastMutex(&MmDynamicMemoryMutex);
    goto LABEL_70;
  }
  v47 = 0;
  MmLockPagableSectionByHandle(ExPageLockHandle);
  v53 = KeAcquireQueuedSpinLock(2, v35);
  v13 = MmPhysicalMemoryBlock;
  v14 = (int)((char *)MmPhysicalMemoryBlock + 8);
  v42 = (char *)MmPhysicalMemoryBlock + 8;
  do
  {
    v15 = *(_DWORD *)(v14 + 4);
    v16 = *(_DWORD *)v14;
    if ( v15 )
    {
      v17 = v16 + v15;
      if ( v7 >= v16 )
      {
        if ( v7 < v17 )
          goto LABEL_36;
      }
      else
      {
        if ( v54 > v16 )
          goto LABEL_36;
      }
    }
    ++v47;
    v14 = (int)(v42 + 8);
    v42 += 8;
  }
  while ( v47 != *(_DWORD *)MmPhysicalMemoryBlock );
  v48 = 0;
  if ( !v49 )
  {
    v18 = (MmPfnDatabase + 28 * v7) >> 9;
    v19 = (v18 & 0x7FFFF8) - 1073741824;
    v50 = v19;
    BugCheckParameter2 = v19;
    v20 = (((unsigned int)(28 * v54 + MmPfnDatabase - 1) >> 9) & 0x7FFFF8) - 1073741824;
    v43 = (((unsigned int)(28 * v54 + MmPfnDatabase - 1) >> 9) & 0x7FFFF8) - 1073741824;
    if ( v50 <= v20 )
    {
      do
      {
        v17 = 0;
        if ( !(*(_DWORD *)v50 & 1) )
          ++v48;
        v50 += 8;
      }
      while ( v50 <= v20 );
      if ( MmAvailablePages < v48 )
      {
LABEL_36:
        LOBYTE(v17) = v53;
        KeReleaseQueuedSpinLock(2, v17, v36, v37);
        MmUnlockPagableImageSection(ExPageLockHandle);
        ExReleaseFastMutex(&MmDynamicMemoryMutex);
        ExFreePoolWithTag(v12, 0);
        goto LABEL_70;
      }
    }
    v21 = BugCheckParameter2;
    v38 = ValidKernelPte;
    v39 = dword_47AD64;
    while ( v21 <= v20 )
    {
      if ( !(*(_DWORD *)v21 & 1) )
      {
        v22 = __readfsdword(32) + 1216;
        v23 = *(_DWORD *)(*(_DWORD *)(__readfsdword(32) + 1228) + 8) | MmSecondaryColorMask & (*(_DWORD *)v22)++;
        v24 = MiRemoveZeroPage(v23);
        MiInitializePfn(v24, v21, 0);
        v24 &= 0x3FFFFFFu;
        v25 = v38 & 0xFFF | (v24 << 12);
        v26 = v39 & 0xFFFFFFC0 | ((unsigned __int64)(unsigned int)v24 >> 20);
        v7 = StartingIndex;
        v39 = v26;
        *(_DWORD *)(v21 + 4) = v26;
        v20 = v43;
        v38 = v25;
        *(_DWORD *)v21 = v25;
      }
      v21 += 8;
    }
    MmResidentAvailablePages -= v48;
    v12 = v46;
    v13 = MmPhysicalMemoryBlock;
  }
  *(_DWORD *)v12 = *(_DWORD *)v13 + 1;
  v27 = 0;
  v51 = 0;
  v44 = 0;
  *((_DWORD *)v12 + 1) = v8 + *((_DWORD *)MmPhysicalMemoryBlock + 1);
  v28 = MmPhysicalMemoryBlock;
  v29 = (int)((char *)v12 + 8);
  while ( 1 )
  {
    BugCheckParameter2a = *((_DWORD *)v28 + 2 * v27 + 2);
    if ( !v51 )
    {
      v7 = StartingIndex;
      if ( StartingIndex == *((_DWORD *)v28 + 2 * v27 + 2) + *((_DWORD *)v28 + 2 * v27 + 3) )
      {
        *((_DWORD *)v28 + 2 * v27 + 3) += v8;
        P = v46;
        *((_DWORD *)MmPhysicalMemoryBlock + 1) += v8;
        v30 = v27 + 1;
        if ( (unsigned int)v30 < *(_DWORD *)MmPhysicalMemoryBlock )
        {
          v31 = (char *)MmPhysicalMemoryBlock + 8 * v30;
          if ( v8 + StartingIndex == *((_DWORD *)v31 + 2) )
          {
            *((_DWORD *)v31 + 1) += *((_DWORD *)v31 + 3);
            --*(_DWORD *)MmPhysicalMemoryBlock;
            if ( v30 != *(_DWORD *)MmPhysicalMemoryBlock )
              memmove(
                (char *)MmPhysicalMemoryBlock + 8 * v30 + 8,
                (char *)MmPhysicalMemoryBlock + 8 * v30 + 16,
                8 * (*(_DWORD *)MmPhysicalMemoryBlock - v30));
          }
        }
        goto LABEL_65;
      }
      if ( v8 + StartingIndex == BugCheckParameter2a )
      {
        v7 = StartingIndex;
        v32 = 8 * v27;
        *(_DWORD *)((char *)v28 + v32 + 8) = StartingIndex;
        *(_DWORD *)((char *)MmPhysicalMemoryBlock + v32 + 12) += v8;
        P = v46;
        *((_DWORD *)MmPhysicalMemoryBlock + 1) += v8;
        v28 = MmPhysicalMemoryBlock;
        v44 = 1;
LABEL_61:
        if ( !v44 )
        {
          *(_DWORD *)v29 = v7;
          *(_DWORD *)(v29 + 4) = v8;
          v28 = MmPhysicalMemoryBlock;
          v51 = 1;
        }
        if ( v51 == 1 )
        {
          P = v28;
          MmPhysicalMemoryBlock = v46;
        }
LABEL_65:
        v33 = MmPfnDatabase + 28 * v7;
        if ( v54 - 1 > MmHighestPhysicalPage )
          MmHighestPhysicalPage = v54 - 1;
        RtlSetBits(&MiPfnBitMap, v7, v54 - v7);
        do
        {
          MiDetermineNode(v7, v33);
          *(_DWORD *)(v33 + 4) = 8 * v7;
          MiInsertPageInFreeList(v7++);
          v33 += 28;
        }
        while ( v7 < v54 );
        LOBYTE(v34) = v53;
        MmNumberOfPhysicalPages += v8;
        MmResidentAvailablePages += v8;
        KeReleaseQueuedSpinLock(2, v34, v36, v37);
        _InterlockedExchangeAdd((signed __int32 *)0xFFDF02E8, v8);
        _InterlockedExchangeAdd((signed __int32 *)&MmTotalCommittedPages, v48);
        _InterlockedExchangeAdd((signed __int32 *)&MmTotalCommitLimitMaximum, v8);
        _InterlockedExchangeAdd((signed __int32 *)&MmTotalCommitLimit, v8);
        MmUnlockPagableImageSection(ExPageLockHandle);
        ExReleaseFastMutex(&MmDynamicMemoryMutex);
        ExFreePoolWithTag(P, 0);
        *(_QWORD *)a5 = (unsigned __int64)v8 << 12;
LABEL_70:
        JUMPOUT(locret_57597F);
      }
      if ( v8 + StartingIndex > BugCheckParameter2a )
      {
        v7 = StartingIndex;
      }
      else
      {
        if ( (unsigned int)(v27 + 1) < *(_DWORD *)v28 && v8 + StartingIndex <= *((_DWORD *)v28 + 2 * v27 + 4) )
        {
          v7 = StartingIndex;
          goto LABEL_54;
        }
        v7 = StartingIndex;
        *(_DWORD *)v29 = StartingIndex;
        *(_DWORD *)(v29 + 4) = v8;
        v29 += 8;
        v51 = 1;
        v44 = 1;
        v28 = MmPhysicalMemoryBlock;
      }
    }
    *(_DWORD *)v29 = *((_DWORD *)v28 + 2 * v27 + 2);
    *(_DWORD *)(v29 + 4) = *((_DWORD *)MmPhysicalMemoryBlock + 2 * v27 + 3);
    v28 = MmPhysicalMemoryBlock;
    v29 += 8;
    ++v27;
LABEL_54:
    if ( v27 == *(_DWORD *)v28 )
      goto LABEL_61;
  }
}

雪    币: 29
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iokey 2013-5-13 12:19
307
0
楼主好人啊,造福XP用户的好贴啊!
雪    币: 29
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iokey 2013-5-13 12:22
308
0
I3/I5/I7 cpu都集成了显卡的,所以那140M应该是被CPU吃了,当显存去了。
雪    币: 417
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
naux 2013-5-13 13:11
309
0
楼主大牛~~~
雪    币: 417
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
naux 2013-5-13 13:24
310
0
Patch后 U盘无法格式化,这是不是BUG?
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fatalfeel 2013-5-13 19:09
311
0
沒錯 我的也无法格式化
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fatalfeel 2013-5-13 19:17
312
0
我也無法格式化 flash

雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
robertlzj 2013-6-18 00:02
313
0
重复了,还没找到如何删除,见楼下..
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
robertlzj 2013-6-18 00:03
314
0
无营养的回复是不健康的,稍稍重复下没关系吧...
(转至作者的留言)
----
你好,非常感谢你的XP64G补丁,我查到些信息,希望对你改进补丁有所帮助,当然,如果你还有在维护补丁的话~
----
http://www.romexsoftware.com/zh-cn/ 中文,内存做虚拟硬盘、内存做硬盘缓存两产品。
其中有提及使用扩展/未识别内存,及避免冲突的方式(即,前端/末端地址保留空间)。*详见*:http://www.romexsoftware.com/zh-cn/knowledge-base/ (Romex Software 知识库,就2篇主题:未识别内存、未识别内存管理接口 (UIMMI) )
----
其他我留意到的信息:
搜索‘XP64G 2.1 Beta’(看似很不讲究的发布于百度贴),他人的修改版(可能非正式转载,但仍有对你的深深致谢),移植/替换了2003版的USB驱动,说是解决USB问题。
----
最后,想请教boot.ini的/3GB参数,或,类似单进程2G内存限制的功能,有无意义,能否实现..(代码注释中倒是出现了‘booting /3gb')。
----
希望你能够继续完善、维护,谢谢~
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asdli 2013-6-18 09:11
315
0
mark  学习下
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
阁楼望雪 2013-6-19 08:56
316
0
很久没来了。。。。。顶一下
雪    币: 1230
活跃值: (202)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xinxinqing 2013-6-19 10:52
317
0
牛,学习了。
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
EClient 2013-6-19 11:05
318
0
lz大牛(*@ο@*) 哇╮(╯3╰)╭
雪    币: 598
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bqyuncai 2013-6-19 16:48
319
0
麻烦 问一下 lkd> dd MmHighestPhysicalPage。。 lkd> 是什么东西?  dd是什么啊?
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
netsky 2013-7-28 13:07
320
0
WinXP SP3 Pro 可用,U盘,USB移动硬盘都可正常使用。
3.20G -> 3.67G
i5 GPU占用了一部分内存。
雪    币: 238
活跃值: (205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
elizh 2013-8-1 23:56
321
0
楼主大牛 学习了 但是有的主板会蓝屏
雪    币: 230
活跃值: (429)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wjzhhr 2013-8-19 08:17
322
0
你真的下载试了,电脑系统没有什么问题?????
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
netsky 2013-8-19 09:06
323
0
没问题啊,一切正常。
直接用楼主的 XP64G20111113.rar 即可。

启动时有 "Microsoft Windows XP 64G" 和你源系统的启动菜单。
如果有问题选源系统,用XP64G20111113.rar恢复一下就可以了。
雪    币: 230
活跃值: (429)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wjzhhr 2013-8-19 18:15
324
0
那你电脑里都装些什么软件呀????

我安装有小红伞杀毒 + SSM(HIPS类的软件)+ office + opera + QQ + YY + 呱呱。这是主要常用的。

我看到上面有人说和某些主板不兼容,真的还是假的???

对了,我还安装有RamDisk,用来虚拟系统认不出来的内存。目前4G内存
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寂寞杀手 2013-8-19 18:38
325
0
好吧,下来看看。
游客
登录 | 注册 方可回帖
返回