zoukankan      html  css  js  c++  java
  • 【逆向知识】单机游戏去启动广告

    前言

    很多网站下载出来的游戏很多都在启动游戏添加了广告程序,A广告嵌套B广告,再由B广告启动游戏。广告启动后关掉广告窗口,游戏也会被关掉,还会弹出一个网页广告。并且知道游戏的主要程序名后也无法打开游戏,因为游戏的PE文件被修改了,无法正常打开主游戏文件。

    工具

    小生我怕怕版本OD

    收集信息

    分析广告程序首先要确定出游戏的编程语言,可以利用PEID扫描文件夹的功能扫描文件信息提取特征。通过PEID的信息可以看到原本的游戏是VC++所编写的,而广告程序是被加壳的,壳是Aspack 2.12。而这个壳是没有必要去脱的。

    动态调试

    破解之前需要初步清晰动态调试的思路,程序广告程序的流程是A广告调用B广告,B广告调用游戏的主要进程。这些过程中必定会使用windows API 【CreateProcess】。即使知道游戏的主要程序名也无法打开游戏。因为游戏的正常PE文件被修改了,广告文件每次运行前会在内存中把exe修改回原来的内容。

    【1】 使用OD的API断点功能,使用快捷键【Ctrl+G】,跳转到【CreateProcess】、【WriteProcessMemory】处进行断点。

    【2】从内存中转存出正常的文件。

    去启动广告调试过程

    打开广告程序后,使用OD附加广告的进程。

    使用快捷键【Ctrl+G】,跳转到【CreateProcess】、【WriteProcessMemory】API函数处。可以选择图形化界面操作OD反汇编界面右键-【转到】-【表达式】。也可以OD反汇编界面右键-【查找】-【当前模块中的名称】,将【CreateProcessA】、【CreateProcessW】的位置下断点。

    F9运行后,会在断点的位置堆栈窗口中查看到B广告程序的名称。图的OCX文件是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension),可执行的文件的一种,但不可直接被执行,与 .exe、.dll 同属于PE文件。

    在进入创建进程函数后,可以狂按F8单步步过,在OD菜单栏选择【调试】-【执行到返回】就可以自动跳转到ret指令处。

    为了调试OCX的文件,我们需要另外启动一个OD进程,依然是选择OD菜单栏的【文件】-【附加】以附加进程调试的方式操作。再重复之前的步骤,使用快捷键【Ctrl+G】,跳转到【CreateProcess】、【WriteProcessMemory】API的位置。

    这里有两种方法:

    第一:可以选择图形化界面操作OD反汇编界面右键-【转到】-【表达式】。

    第二:可以OD反汇编界面右键-【查找】-【当前模块中的名称】,将【CreateProcessA】、【CreateProcessW】、【WriteProcessMemory】的位置下断点。

    在【WriteProcessMemory】处下断点是因为B广告程序运行后要在内存中把游戏的主要程序修改回来的话,会调用到这个Windows API。

    F9运行后点击B广告的按键让程序执行起来。

    F9把程序运行起来后,可以在OD堆栈窗口中查看到游戏的主要进程名字,且同时注意到进程的当前状态是挂起的。

    推测B广告将进程挂起正是为了将exe的正常字节在内存中修复然后在恢复进程的运行,进入【WriteProcessMemory】这个API函数后,使用快捷键【Ctrl+F9】执行到函数结尾处。

    为了调试游戏主要程序,还需要另外开启一个OD将游戏的进程附加进行调试(OD菜单栏的【文件】-【附加】以附加进程调试的方式操作。),从内存中转存出正常的文件。

    跳到函数末尾处,F7或F8跳到下一条指令处。

    75401E80    C2 1400         retn 0x14
    

    在调试游戏主程序的OD反汇编界面,点击【E】跟随游戏进程跟随入口。

    在入口点(OEP)处,右键选择【OllyDump脱壳调试进程】

    把入口点的地址填写到输入框中,但是左下方的重建输入表的勾不要去点,因为会导致程序运行不起来再次重新修复一次。点击【脱壳】生成文件,就可以得到游戏的主要程序了。

    恢复游戏主程序成功!

    文中涉及的游戏程序

    http://pan.baidu.com/s/1kUGVUa7 2xqc

  • 相关阅读:
    使用yum更新时不升级Linux内核的方法
    centos7 redmine安装过程(转载)
    CentOS7安装GitLab、汉化、邮箱配置及使用(转载)
    [bzoj2780][Spoj8093]Sevenk Love Oimaster_广义后缀自动机
    [bzoj2595][WC2008]游览计划/[bzoj5180][Baltic2016]Cities_斯坦纳树
    [bzoj4006][JLOI2015]管道连接_斯坦纳树_状压dp
    OI模板のpoke流[大型考试复习必备/kl]
    [bzoj2453]维护队列_带修改莫队
    [bzoj4519][Cqoi2016]不同的最小割_网络流_最小割_最小割树
    [bzoj3894]文理分科_网络流_最小割
  • 原文地址:https://www.cnblogs.com/17bdw/p/6667045.html
Copyright © 2011-2022 走看看