某MMO游戏脚本逆向(一)——脱壳

国内外手游,尤其是MMORPG品类的游戏,经常有一些刷刷刷的日常任务,这也催生了大量游戏辅助脚本。这些脚本一般完成一些简单的pve战斗,或不需要太多机制的pvp玩法。本次将对一个主流手游的脚本进行逆向,观察下脚本的运行逻辑。

查壳

首先用ida打开文件,会报错:

The imports segment seems to be destroyed. This MAY mean that the file was packed or otherwise modified in order to make it more difficult to analyze. If you want to see the imports segment in the original form, please reload it with the 'make imports section' checkbox cleared.

ida

这个提示出现意味着文件被加壳了,需要进行脱壳处理。

用ExEinfoPE打开得到的文件,可以看到已经脱壳成功打开,可以看到使用的是Themida壳,Themida & WinLicense 2.0 - 2.4.6 - struct (Hide from PE scanners II-V)
ExEinfoPE

脱壳

脱壳方法参考某大神做法

脱壳需要以下工具:

  • 原版 Ollydbg

插件:

  • ODBGScript v1.82.6
  • StrongOD 0.4.8.892
  • PhanOm 1.79
  • ARImpRec.dll

脱壳脚本:

  • (Themida - Winlicense Ultra Unpacker 1.4)

接下来开始按步骤操作:

  1. 设置ARImpRec.dll路径
    打开Themida - Winlicense Ultra Unpacker 1.4.txt,搜索HERE_ENTER_YOUR_DLL_PATH_TO_ARIMPREC_DLL并将下方代码修改为自己的ARImpRec.dll文件的绝对路径。

    1
    2
    HERE_ENTER_YOUR_DLL_PATH_TO_ARIMPREC_DLL:
    mov ARIMPREC_PATH, "C:\xxx\ARImpRec.dll"
  2. 下载并设置打开Ollydbg
    将 ollydbg 解压缩到目标路径。
    在 ollydbg 文件夹中创建一个名为 plugin 的文件夹,并将所有插件放入该文件夹
    从 OllyDBG 的主文件夹中删除 PSAPI.DLL
    第一次打开Olly需要设置插件目录,菜单进入 Option -> Appareance,在选项卡中设置存储插件的位置,点击确定然后重启
    打开目标文件,会弹出一个窗口,按是,文件继续分析,等待完成
    按F9运行,有一个弹出窗口,按确定即可终止调试

  3. 运行脚本
    通过plugin menu-ODBGScript-Run Script,选择Themida - Winlicense Ultra Unpacker 1.4.txt
    重新打开目标后再次运行脚本,若弹出要求开始解包过程,选YES
    下一个选No
    在运行几秒后,脚本暂停,继续运行脚本即可

  4. 修改ollydbg.ini
    随后获得弹窗,提示需要在OllyDBG.ini文件中,根据提示修改文件,并重新运行脚本

  5. 重新运行脚本
    重复之前的步骤,打开目标并运行脚本等,完成后我们得到了最后的结果。

再次使用ExEinfoPE打开得到的文件,可以看到已经脱壳成功