-
-
未解决
软件过互斥体多开后,不注入DLL,进程正常,注入DLL,过段时间就会掉线,是DLL被检测到了吗?
10雪币
-
发表于:
2024-6-12 18:04
1905
-
未解决 软件过互斥体多开后,不注入DLL,进程正常,注入DLL,过段时间就会掉线,是DLL被检测到了吗?
10雪币
弄了很久了,自己也算努力弄过了,还是弄不了,技术有限,所以来求助一下大家。
明说吧,就是一款老游戏,限制只能开1个窗口。想实现多开,正常运行。
我用OD跟到了互斥体多开的指令位置,修改传入的互斥体名字 或者 直接JMP,跳过互斥体创建的函数,当时就可以实现多开窗口。
但是之后注入DLL到游戏进程,过段时间(有可能几分钟后,也可能几小时后)窗口会弹掉线。。
测试了几天,游戏的特征:
!!过互斥体 且 注入脚本DLL,那么游戏过段时间会掉线。
!!过互斥体 且 没注入脚本DLL,那么游戏就一直不掉线,正常运行。
我去跟了一下 T号的执行流。跟到的是消息处理的。
调用链总结如下:
DispatchMessageA->
call USER32.CharPrevW+4B->
call USER32.GetThreadDesktop+20->
call USER32.gapfnScSendMessage+30F->
call dword ptr [ebp+08]->
call dword ptr [游戏名字._imp__CallWindowProcA]->
call USER32.GetClientRect+67->
call USER32.GetThreadDesktop+20->
call USER32.gapfnScSendMessage+30F->
call dword ptr [ebp+08]->
call 游戏名字.CAgent::handleWindowMessage->
call 游戏名字.CAgent::close->
call 游戏名字.cSOCKET::close//此函数让游戏弹出了“失去连接”的弹窗
这里面有个获取线程相关的桌面句柄的函数GetThreadDesktop+20,是消息处理里正常有的吗?还是检测用的?
只能跟到这些,好像没什么用。。。猜测可能其它线程,写了个“让游戏掉线”的消息给这个线程,这边只是处理让游戏掉线的流程,没有判断是否T号的指令。。。不知道该怎么弄。。。
其实最关键的就是上面的那个测试出的游戏特征。有没有大哥指点一下,从哪入手?注入DLL的号被T 是DLL被检测到了吗?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2024-6-12 18:24
被WYYZCAYQ编辑
,原因: