首页
社区
课程
招聘
[讨论]关于国外某游戏保护的研究
发表于: 2012-7-19 17:41 12644

[讨论]关于国外某游戏保护的研究

2012-7-19 17:41
12644
近日看过许多关于游戏保护的文章.....由于是新手...看完后知其然不知其所以然...
所以决定找个国外的游戏来自己练练手......从头学习研究.....
接下来言归正传

这个就是萎缩的保护图.....被他烦了一个星期了
首先用xt看看ssdt中Hook的函数

都是函数头jmp....直接恢复有检测.....所以我都用ssdthook过了
这里为止....开始头痛了......
ce和od一打开....立马弹出错误...游戏结束.....
开始怀疑是检测的窗口名或者进程名...所以换了一个ve修改器.....结果仍然被检测到.....
猜想应该是检测特征码了.....但是技术实在有限...又不知道是在哪检测的.......
于是把xt翻过来翻过去的看....看到如下玩意儿.....

后缀不认识...查了一下...貌似叫做dll外壳程序....具体我也不懂了....拖到ida里一看....

很开心的看到了那个terminateProcess......猜想大概就是这里了......
于是用工具把jmp的那部分nop掉......结果启动游戏的时候有自检....又给它恢复了......
只得强制写进程的内存......很开心的一试.....还是悲剧了......仍然检测得到.......
od用上sod的插件是可以不被检测的.....
例外关于调试部分......内核钩子还有个这玩意儿.......

这个是在函数头jmp了.....且有检测....不能直接恢复.....
能不能有个ssdtHook的那种方法改变函数的首地址呢........
这里有几个问题想请教下大牛们......
1,是不是所有的内核上的改动都会在如下目录上显示出来

2,sod保证不被检测的原理是什么....我给ce加个压缩壳会不会有效.....
3,我用winDbg双机调试开游戏会报异常..错误代码说的是堆栈不平衡..这样要从哪方面去下手解决..google也不知道怎么查关键字
4,就是那个keAttachProcess的Hook我要怎么弄掉它
希望大家给我这个菜鸟一点提示

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
keAttachProcess的Hook
你就从调用的位置ByPass呗
完全体力活
2012-7-19 19:17
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
接下去会让你更蛋疼
2012-7-19 19:52
0
雪    币: 414
活跃值: (987)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
用这个练手....您真想得出来 建议从国内简单的入手
比如说 完美的 PP 马总的 TP 等开始 大家都玩烂的
2012-7-19 20:04
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
5
其实xg3是模仿np的,hook什么的都是垃圾,检测上有独到的东西~
2012-7-19 20:08
0
雪    币: 119
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
多谢提点....我去找找np的资料看看〉。。
2012-7-19 20:33
0
雪    币: 119
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
就是看了那些过保护的文章啊....对咱来说跳跃性有点大...我太新手了.....我还是再研究研究把...
2012-7-19 20:35
0
雪    币: 119
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
无法双机调试...还不知道怎么解决....这也是我蛋疼得地方......
2012-7-19 20:36
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
这个保护我在2011年5月接的一个日本项目中碰到过,历时15天,过的很辛苦
2012-7-22 10:31
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
10
日本的一个垃圾游戏 Dekaron用的就是这个.在中国这个游戏叫挑战,快黄了.日本的也是快黄了
2012-7-22 10:35
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
11
刚才抽了一会烟,凭借模糊的回忆,告诉你怎么弄的当时
OD 可以使用SOD插件
CE 可以再沙盘中打开,但是一定是原版的。
在XT中可以发现.xem后缀的进程,2个在OD附加之前都可以给他们挂起,不是关闭。是挂起
关于调试我使用的是syser 有2个办法调试
第一个是bpload Xhunter1 这样在它加载驱动的时候就断了,后面的自己想办法
第二个是把syser 处于STOP状态,就是托盘里面的syser标志被禁用标志了,在那个图片出来以后,图片下面有个进度条读完的"时候"立即开启syser并按下ctrl+f12 然后设置断点,可以使用了
最后好像对国产的驱动加载软件InstDrv也有检测.无奈使用了monitor加载驱动
另外贴上keAttachProcess的解决办法,至此我想你的困惑应该没有了
以后的工作靠自己了
//////////////////
//////////////////////////////////////////////////////////////////////
//        名称:        MyKeAttachProcess
//        功能:        中继函数
//        参数:       
//        返回:       
//////////////////////////////////////////////////////////////////////
static NAKED VOID  MyKeAttachProcess()
{
        //DbgPrint("MyKeAttachProcess() called");
        __asm
        {
                mov                edi,edi
                push        ebp
                mov                ebp,esp
                push        esi
                jmp                KeAttachProcessAddress
        }
}

VOID        Recovery_KeAttachProcess()
{
        TOPCODE        *topCode = NULL;
        ULONG        jad;
        KIRQL        Irql;

        //获取函数地址
        KeAttachProcessAddress  = (BYTE*)MyGetFunAddress(L"KeAttachProcess");
        if (KeAttachProcessAddress == NULL)
        {
                KdPrint(("KeAttachProcess地址为空"));
                return;
        }

        //将指针指向AttachProcessAddress函数头部
        topCode        = (TOPCODE*)KeAttachProcessAddress;
        jad                = (ULONG)topCode->address;
       
        //设定返回地址
        KeAttachProcessAddress+=6;

        WPOFF();        //清除CR0
        //提升IRQL中断级
        Irql=KeRaiseIrqlToDpcLevel();

        //RtlCopyMemory((BYTE*)jmpAddress,JmpMyAttachProcess,5);
        *(ULONG*)jad = (ULONG)MyKeAttachProcess;

        //恢复Irql
        KeLowerIrql(Irql);
        WPON();                //恢复CR0
}
2012-7-22 10:55
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
呀` 还有闲工夫发帖呢`跑器搞完了啊
2012-7-22 13:35
0
雪    币: 119
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
非常感谢啊.......我几乎是要放弃了........我也看到ce在沙盘里打开的方法.....我想知道关于检测的原理......所以没有去试........现在知道凭咱的技术要想从头到尾弄清楚....还得再磨练很长一段时间.........我再去按照您的方法去研究研究......再次感谢指导...
2012-7-22 23:09
0
雪    币: 119
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
难怪我看这个Dekaron感觉这么眼熟.....找相关资料全在国外Dekaron的这个游戏论坛上.......虽然实质技术上的东西上面基本没有.........
2012-7-22 23:18
0
雪    币: 119
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
ce还是检测到了.....这个太狠了.......
2012-7-23 10:48
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
16
完了,别老憋在家里。没事过来溜达
2012-7-24 10:59
0
游客
登录 | 注册 方可回帖
返回
//