首页
社区
课程
招聘
[旧帖] [求助][求助]一个游戏外挂DLL的疑惑!!! 0.00雪花
发表于: 2013-1-16 20:39 2814

[旧帖] [求助][求助]一个游戏外挂DLL的疑惑!!! 0.00雪花

2013-1-16 20:39
2814
最近闲的无聊,想破解一个游戏外挂,我也不会什么脱壳什么的,太累。我只是写一些APIhook,解包、封包、发包之类的。
   一般的游戏外挂都是远程线程注入DLL,先是一个登陆界面,输入外挂账号密码,点击登陆,外挂登录模块就开始和服务器通讯验证,判断当前输的账号,是否已注册,或是否还有剩余天数,当验证成功后,启动游戏,等待游戏主进程的启动,一旦发现,就将自己准备好的DLL注入,然后外挂在游戏进程中启动了一个功能界面,等待玩家输入账号密码,加载游戏人物后,外挂界面才读取游戏人物信息,这是就可以使用了!
   这个时候疑惑就来了,我把登录验证这一块给Hook掉了,也就是说,无需验证就可以登录,账号密码随便输入都能登录成功,然后外挂正常把自己的DLL注入到了游戏,但当我输入游戏账号密码后,游戏刚加载进入游戏人物界面,外挂自己就关了,游戏出错,死掉了!
   我刚开始,我觉得这个现象很正常,一个外挂肯定是除了验证登录外,注入游戏后,DLL自身也有验证,然后我就开始研究这个DLL的验证问题,我初想的是,外挂DLL注入成功后,会跟外挂登录验证一样和服务器进行通讯,但我通过网路数据包的截取,没有发现任何可疑数据包,如果它不和远程服务器通讯的话,它又是怎么验证,然后自动关闭的呢?还有就是,外挂登录界面注入成功后,就自己关闭了,登录界面和DLL之间好像也没有进行任何通讯。。。。。
   大家帮我想想,注入的DLL是怎样验证的,还有一点我发现,DLL注入后,都是在游戏加载人物,场景的时候关闭的,我猜疑是它在等待读取游戏里的账号信息,然后再进行某种验证的!
   还有就是这个游戏是受NP保护的,那一般的操作内存的API函数(以及函数的相关驱动函数)都被NP  HOOK了,外挂自身是怎么读取游戏的数据的,很茫然!

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 68
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
内存地址出错哈哈 假如外挂是能修改内存地址多好
2013-1-17 17:22
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
无语了,我怀疑是这个游戏外挂和游戏有勾结,如果是这样,就太狠了,没办法啊!
2013-1-17 20:39
0
雪    币: 238
活跃值: (375)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
夸进程通信。方式很多种的阿。例如共享内存

他的LOADER在验证完以后完全可以把验证完的信息放到共享内存中。

在DLL注入后 DLL主动读取共享内存。然后EXE收到消息后就退出。DLL暂时不进行验证。
当你游戏登录完成后。DLL 生效的那一刻在验证登录信息的正确性。如果不对。。抛一个异常。游戏就死了。。。

至于NP什么的。。DLL注入过后。就是游戏的一部份了。。根本用不着操作内存的API。
直接指针读取数据
2013-1-19 00:13
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
重点应该是加载DLL时写入了数据
2013-1-19 03:02
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
6
DLL里的基址是EXE更新的~如果基址错误...就没了~
很常见的手法~
2013-1-19 08:34
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
关键是我通过截获的数据包发现,DLL在抛出异常之前并没有和远程服务器进行通讯,外挂的登录模块,我通过HOOK截包,改包,完全和输入的正确账号密码的登录是一样的,在登录页面上,应该没有什么猫腻,还有就是我通过HOOK 那个CreateMapfile那个API函数,并没有发现他创建任何的共享内存
2013-1-20 14:56
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你说的这种情况应该是不存在的,应为登录模块的登录是收到了我HOOK的数据包,正常登录的,还有就是你说的exe更新DLL的基址,我不是很明白
2013-1-20 15:00
0
雪    币: 238
活跃值: (375)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
DLL外挂嘛。 读取游戏数据至然是需要 地址的。
可能是如楼上说的。Loader验证登录后。将DLL需要用到的 地址数据 写到了DLL。或者通信传递到了DLL。但是解密错误。DLL按错误的地址读取了数据。又没处理异常。游戏就会挂掉.

至于通信。方式太多。不限于使用共享内存
2013-1-22 00:04
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不是很懂,,内存call 还不会写
2013-1-22 11:39
0
游客
登录 | 注册 方可回帖
返回
//