平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0

导航

公告

愿绵泊的悲哀浸透我颓废的一生

围在城里的人想逃出来,城外的人想冲进去,对婚姻也罢,职业也罢,人生的愿望大多如此.

常用链接

留言簿(149)

随笔分类

随笔档案

收藏夹

友情链接

目前常用链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜

SetFilePointer

这次真的是以小人之心度君子之腹了,因为一开始就认定玻璃渣修改了资料片patch.mpq的加密算法,所以打开最近刚学的OllyDbg就开始反编译跟踪,兴高采烈地解析出解密后的文件hash表,再兴高采烈地解析出Draenei的模型后就开始跟一个老外炫耀,老外很平静地说已经解出来了,还有C#源码(http://code.google.com/p/mpqtool/),我看了一下,解密算法没有变.再检查了一下才发现是自己程序里SetFilePointer函数使用在大于2G的mpq文件时的调用参数有Bug:

// Error if mpq file is bigger than 2G
fseek(...);    // or

::SetFilePointer(hFile, dwHashTablePos, 0, FILE_BEGIN);

// Correct
_lseeki64(...);   // or

LARGE_INTEGER li;
li.QuadPart = dwHashTablePos;
::SetFilePointer(hFile, li.LowPart, &li.HighPart, FILE_BEGIN);

// So change the every fseek/SetFilePointer in stormlib or libmpq in WowModelViewer source code and recompile, we can open the new patch.mpq in WoW BC which is 2.7G.

posted on 2006-09-02 00:51 linghuye 阅读(2839) 评论(1)  编辑 收藏 引用 所属分类: 3D图形学研究

评论

# re: SetFilePointer  回复  更多评论   

懂得自嘲和学习的程序员是可爱的^_^
2006-09-02 10:25 | kawa11
只有注册用户登录后才能发表评论。