思路
因为不是专业的,也不会二进制、逆向,所以只能尽量借助一些辅助工具和自身已有能力来实现。
还是先看看协议,如果是http的就和web一样,不是就用下面的思路:
篡改内存
重放请求
- 加减速
篡改内存
思考过hook去查改参数,感觉性价比有点低
尝试篡改你能看到的、看不到的所有内容
和burp一样,只是方式不同,类似于改burp的响应数据来欺骗客户端
篡改的话以uid、数量等为主,还是要结合功能来思考,比如怎么获取我的信息,是不是通过我的uid来查询的,那我在内存中修改了uid,是不是就能查到别人的信息了...
- 如果能直接看到数据的变化,比如血量、攻击力、物品数量等,可以直接多次搜索对应的数据能搜到,那就是最简单的直接改就行
- 如果能直接看到数据的变化,比如血量、攻击力、物品数量等,但搜索对应的数据怎么都搜不到,那么就可以尝试盲搜,比如数据一直在变小,那么我们先搜索所有的数据,然后筛选减少的,然后再筛选减小的,直到确认了为止
- 如果不知道要改的数据是什么,比如uid,比较实用的办法就是先找可能有关联的数据,比如用户名,然后去看用户名附近的内存是否存在疑似uid的东西
- 如果不知道要改的数据是什么,也找不到关联的数据,比如坐标这种,那么就可以一直动,然后一直搜索改变的数据,最后再去分析
- ...(核心还是得知道你想要实现的效果是什么)
内存修改工具
工具推荐用电脑上的CE,功能和Android上的GG修改器等一样,原因如下:
- 用CE去加载整个Android模拟器的内存,然后进行修改,比直接用GG模拟器修改应用内存靠谱,感觉更不容易被检测到
- 用CE去修改内存时,可以让Android模拟器关闭root,仍然可以修改内存,绕过一些游戏的root检测
使用
不建议用mac使用ce,问题多,麻烦,如果一定要用遇到问题了可以参考:https://github.com/cheat-engine/cheat-engine/issues/2784
图形化的工具,基本都有说明,可以去网上随便找点视频都有,就不多说了,进程的话基本也都是定位Handle
或者Headless
的进程,着重记录技巧部分
技巧
操作
纯经验
- 小程序小游戏不支持单数,所以显示1在内存中可能是2
重放请求
有想过hook对应的函数来实现重放,但难度太大了,性价比感觉不高
主要是客户端没有做验证,比如1个礼包可以多次领取,1个卡片可以多次兑换等。
- 不通过hook的方式实现并发:用NetLimiter,比如限速到1b,然后疯狂点击想要并发的功能即可,可能可以实现
- 重放TCP数据包:不管数据加密还是没加密,WPE可以原封不动的给你重发,如果数据存在加密可能难篡改,如果存在防重放机制估计就G了
- 干扰流量太多怎么办:一般游戏都会有心跳包,找到心跳包就大概知道服务端的IP了,关注这个IP相关的就行
加减速
通过CE的Speedhack
来修改游戏内部的时钟,从而达到加减速的效果。