bf3.exe directx error fix

用win7玩bf3没问题但是用win8却出现下面的,错误提示:Directx function "m_dxgifactory->CreateSwapChain(m_device,&sd,&m_swapChain.assignGet()blablabla......

百度了一下大概原因是因为bf3.exe里面用了一个win8中文版里面没有的字符串···有两种解决方法。

1.修改系统语言

2.修改bf3.exe里面的那个字符串

修改系统语言工程太大了···所以只能修改字符串了。

先用ultraedit打开bf3.exe定位Battlefield 3字符串(0x1c6ae64), 把99修改为20(20在ascii表中为空格)即可。

42 61 74 74 6C 65 66 69 65 6C 64 20 33 99 

42 61 74 74 6C 65 66 69 65 6C 64 20 33 20 

为了方便后面的来者特地用c#做了一个fix patch

下面是核心代码, long Offset = 0x1c6ae64

void Patch(string file, long Offset, byte[] patch)
        {
            FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Write);

            if (!fs.CanSeek)
                return;
            fs.Seek(Offset, SeekOrigin.Begin);

            if (!fs.CanWrite)
                return;
            fs.Write(patch, 0, patch.Length);

            fs.Flush();
            fs.Close();
        }

发表评论