三国群英2吧 关注:46,197贴子:1,018,723
  • 3回复贴,共1

逆向分析三国群英2

取消只看楼主收藏回复

闲来无事,搞搞逆向工程分析一下三国群英2,今天的目标是去掉光盘提示,并让游戏正常进行。因为我玩的是原版,所以每当直接运行sango2.exe会弹出如下对话框:




IP属地:浙江1楼2012-05-30 22:56回复
    我使用的工具是大名鼎鼎的OllyDBG。
    首先,打开OD,打开sango2.exe, 运行程序,当出现对话框时暂时程序,发现停在此处:

    仔细看以下几行代码,可以看出在40B207处有一个判断,如果EAX=0,则不显示对话框,并跳转到40B21F,那如果我们把B207的“JE SHORT 0040B21F”改为“JNE SHORT 0040B21F”,是否就可以不显示对话框呢?经测试,确实不显示了,但是游戏也直接退出了,并没有达到我们要的效果。看来这个地方只是出错后的程序处理,我们要找到更深的源头,才能解决这个问题。

    


    IP属地:浙江2楼2012-05-30 22:58
    回复
      2026-04-20 20:27:29
      广告
      不感兴趣
      开通SVIP免广告
      只有上断点了!我们要结合单步调试来理解程序的运行逻辑才能发现真正的解决方案。
      观察对话框出现的时候,程序的堆栈如下:

      发现这个函数的入口在40B00A,我们在此设置断点开始单步调试,会发现在调用4300F0出现对话框,跟踪进去。

      用这样的方法跟踪进去,保持耐心和清醒的头脑,最终会发现4302C8会进行错误处理,导致对话框的出现,只要跳过即可。我们修改4302C1的代码为"JZ short 004302D1",即可跳过对话框,直接进行游戏。

      


      IP属地:浙江3楼2012-05-30 23:01
      回复
        最后一步,出补丁。使用右键功能【copy to executable】,然后另存为可执行文件就可以了。运行修改过后的sango2.exe,就会发现已经破解成功了。

        


        IP属地:浙江4楼2012-05-30 23:02
        回复