用16进制打开hidetoolz.exe找到0x15e71位置把0x14改成0x24
在我自己机器测试成功,不保证这个方法的完美性
请期待作者修改这个bug

ps:求人不如求己

  • 标 题: 答复
  • 作 者:不懂算法
  • 时 间:2007-10-25 11:37

代码:
.text:000129A9                 mov     dword_1327C, 11E1h
.text:000129B3                 mov     dword_13284, 1137h
.text:000129BD                 mov     dword_13274, 1179h
.text:000129C7                 mov     dword_13268, 42h
.text:000129D1                 mov     dword_13280, 1205h
.text:000129DB                 mov     dword_13264, 228h
.text:000129E5                 mov     dword_13290, 154h
.text:000129EF                 mov     dword_13278, 22Ch
.text:000129F9                 mov     dword_13270, 0C4h
.text:00012A03                 mov     dword_1328C, 114h

这个地方是判断操作系统是2003后初始化的地方,这些数值应该都是未公开的数据
根据操作系统不同数值也会不同,我们注意到把dword_1328C初始化为114h

代码:
.text:00011C17                 mov     eax, dword_1328C
.text:00011C1C                 mov     eax, [eax+esi]
.text:00011C1F                 mov     [ebp+Object], eax

这个地方取esi+dword_1328C即esi+114h的地方的数据保存到ebp+Object
代码:
.text:00011C93                 mov     eax, [ebp+Object]
.text:00011C96                 cmp     eax, ebx
.text:00011C98                 jz      short loc_11CDB
.text:00011C98
.text:00011C9A                 mov     eax, [eax+14h]
.text:00011C9D                 mov     eax, [eax]
.text:00011C9F                 mov     esi, [eax+24h]

这个地方取上面保存的数值为eax,然后再取[eax+14h]的值,而当dword_1328C等于114h的
时候,[esi+114h]=3,这样mov     eax, [eax+14h]就是mov     eax, [3+14h]造成错误,导致系统重启,所以说这个114h数值不适合2003,更确切的说不适合2003sp2吧,可能这个数适合某个版本的2003,经过调试2003sp2下的这个数值应该是124h
所以我们要做的就是把mov     dword_1328C, 114h改成mov     dword_1328C, 124h

  • 标 题: 答复
  • 作 者:xIkUg
  • 时 间:2007-10-25 14:55

刚看了一下,原来是EPROCESS->SectionObject的偏移