蜗牛竞速吧 关注:103贴子:963
  • 11回复贴,共1
本人也遇上这个问题
看了下貌似没有人提供解决方案,于是打算自己动手解决,并且把过程录下来,供网友使用


1楼2019-05-06 16:34回复
    首先我入手点是messagebox,先看看导入表user32.dll没有导入messagebox


    2楼2019-05-06 16:36
    回复
      于是我去找窗口

      惊了,窗口也没有
      然后任务管理器确认一下进程

      发现这个.RWG似乎不是exe???右键转到目录

      行吧,被摆了一道,改名成exe直接运行发现entrypoint的代码有点不太正常,也许是加了壳?
      查壳走一波,发现并没有壳


      3楼2019-05-06 16:42
      回复
        于是从exe上的createprocess入手

        CreateProcessA,od调试给断点

        createprocess创建进程,createflag使用创建即挂起主线程,writeprocessmemory写进程内存,修改entrypoint
        然后suspendthread唤醒主线程
        在writeprocessmemory后dump SnailMail.RWG的内存下来

        运行发现依然Error,这次可以给messagebox下断了

        来到这里,再看看堆栈,找到返回函数

        cmp eax,801
        jge 大于等于跳转
        断点发现运行messagebox的call前eax=800
        跟入前面的call看看


        4楼2019-05-06 16:57
        回复
          载入dpnhpast.dll成功返回801,失败返回800,也就是说这里是载入dpnhpast.dll失败了,所以报错

          发现系统盘没有这个dll,查了下发现xp跟win2003自带,我win10没有,网上下载一个,丢到exe同层目录下
          直接运行发现,好样的,不error了,并且把我的分辨率改成了640*480


          5楼2019-05-06 17:03
          回复
            但是主线程没在工作,不懂为什么,跟踪它!
            一层层call往下找,发现是d3d8.dll调用后被暂停了
            继续往下跟!

            最后找到是等待一个不知道是什么鬼的对象
            把它直接改成return,返回不等待

            完美运行
            但是不能每次都开od修改这串D3DKMTWaitForSynchronizationObjectFromCpu吧?于是我打算自己写代码去自动修改它


            6楼2019-05-06 17:12
            回复
              楼主牛逼,能分享一下你的连接吗?


              IP属地:江苏8楼2019-11-12 11:16
              回复
                我也提示的那个框,不过你咋弄得我看不懂


                IP属地:山东来自Android客户端9楼2020-07-12 14:27
                回复
                  有链接吗超级想下载


                  来自Android客户端10楼2020-12-11 19:51
                  回复
                    我是win7 系统 安装后运行也是弹这个框 , 你发的教程没看明白


                    11楼2022-03-23 17:03
                    回复