手游外挂入侵(一)某助手加速器实现原理探究
2017-12-21 20:04
344 查看
- 简介
下载ghzs商店,搜索相应游戏即可下载,下载后安装运行,游戏中就会多出一个加速工具助手。实现过程探究
打开游戏包查看发现dex中加入了com.gh.XXX相关的类,应该是将Dex重打包,加入了他们的SDK代码,然后他们SDK会加载cydia substrate框架的inline hook动态库和根据游戏定制的加速器动态库。原理分析
① Inline hook libmono.so中的两个方法:mono_class_from_name
mono_runtime_invoke
并且获取了mono_class_get_method_from_name和mono_method_full_name,将在之后使用。
② Hook mono_class_from_name方法内容:
原型:
MonoClass * mono_class_from_name (MonoImage *image, const char* name_space, const char *name)
Hook代码:
int __fastcall sub_1A70(MonoImage *image, const char* name_space, const char *name) { static findset_timeScale = 0; if ( !j_strcmp(name, "Time") && ! findset_timeScale && !j_strcmp(name_space, "UnityEngine") ) { dword_705C = image; dword_7064 = mono_class_from_name(image, "UnityEngine", "Time"); dword_7058 = mono_class_get_method_from_name(dword_7064,” set_timeScale”,1); findset_timeScale = 1; } return mono_class_from_name(image, name_space, name); }
Hook该函数最终目的获取到UnityEngine.Time.set_timeScale方法
③ Hook mono_runtime_invoke方法:
原型:
MonoObject* mono_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc)
Hook代码:
int __fastcall sub_19D4(MonoMethod *method, void *obj, void **params, MonoObject **exc) { static int isUIRootUpdate = 0; static int t = 0; if ( !isUIRootUpdate ) { dword_7044 = mono_method_full_name(method,1); if ( !j_strcmp(dword_7044, "UIRoot:Update ()") ) { dword_7048 = method; isUIRootUpdate = 1; } } if ( findset_timeScale && isUIRootUpdate && dword_7048 == method ) { if ( t == 50 ) { off_7008 = (int)&speed; mono_runtime_invoke (set_timeScale, 0, (int)&off_7008, 0); t = 0; } ++t; } return mono_runtime_invoke (method); }
最终调用set_timeScale函数,并根据设定速度大小传入进行更改时间。
总结
这种方法目前来说还挺特别的,可以绕过对HOOK的检测以及一些加速器外挂特征的监测,缺点就是只能对U3D的游戏有通用性。相关文章推荐
- 手游加速器:[求助]安卓端 手游变速器,类似光环助手的实现方式是怎样的?
- CAS实现单点登录SSO执行原理探究
- 深入探究HashMap的实现原理
- vmware nat模式原理探究,实现虚拟机跨网段管理
- 探究CRC32算法实现原理-why table-driven implemention
- 360卫士通知盒子和红包助手的实现原理(NotificationListenerService)
- ReentrantLock实现原理深入探究
- 为什么mybatis的mapper没有实现类(原理探究)
- KVO实现原理探究
- 布隆过滤器的原理、实现和探究
- ReentrantLock实现原理深入探究
- 深入探究MODVERSIONS的实现原理
- 探究CRC32算法实现原理-why table-driven implemention
- ReentrantLock实现原理深入探究
- 大掌门手游外挂(大掌门代练助手)
- 探究CRC32算法实现原理-why table-driven implemention
- 【小松教你手游开发】【unity实用技能】从NGUI的UIScrollview的实现原理
- Zend Framework教程-Zend_Helpers-视图助手-视图助手的实现原理
- 游戏外挂的原理及实现