.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