- 精华
- 0
- 帖子
- 718
- 威望
- 0 点
- 积分
- 779 点
- 种子
- 12 点
- 注册时间
- 2007-3-4
- 最后登录
- 2025-1-20
|
发表于 2009-3-25 12:59 · 江苏
|
显示全部楼层
笑谈,我没测试来跟你扯什么。
只有你才是只会复制粘贴别人的结论去充当解答问题,一旦有自己的话就开始漏馅。
顺便放上破解者的研究文章一段,你以后也好有复制的地方。一般而言, 線程任務由哪個核負擔是由系統分配的, 除非程序自身帶有屏蔽某核的指令, 否則系統會讓程序咝幸欢螘r間後, 讓幾個核的工作盡量平均.
查找msdn文檔, 得知SetThreadAffinityMask這個API是用來指定線程工作的. 快速打開代碼部分, 發現在主循環中每次經過這裡:
push 1 ; /AffinityMask = 1
call dword ptr [; |[GetCurrentThread
push eax ; |hThread
call dword ptr [; SetThreadAffinityMask
AffinityMask參數被設成1了, 依照msdn文檔的定義, 這表示屏蔽第一核以外的所有核心(BIN:00000001), 那麼要修復這個bug(雖說不一定是bug, 可能有其他用意)就很容易了, 將該參數設為bin:11111111(0xff), 即可解除對其他核的屏蔽. (經實驗, 設0有同樣效果) |
|