吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 31090|回复: 68
上一主题 下一主题
收起左侧

[Android 原创] 某pubgm辅助原理简单分析

  [复制链接]
跳转到指定楼层
楼主
korzhao 发表于 2019-1-2 21:47 回帖奖励
本帖最后由 korzhao 于 2019-1-2 21:52 编辑

第一步查看apk信息
拖进jdex,apk处理的比较简单,没发现有什么加密和加壳



奇怪的是里面并没有lib文件,猜测可能是打开软件才会下载。
安装好软件,发现的确需要下载一些东西。二话不说,先卸载apk
配置好fiddler之后,再次打开辅助,抓到了一个请求。
下载到本地的是一个名字叫pg_x86的文件(我是模拟器环境,试着改url为pg_arm,也可以下载文件)
原以为是一个so文件,拖到IDA之后,发现是一个upx加壳后的程序。
github(https://github.com/upx/upx)下载最新版本的upx程序,先解压下

解压之后,再次拖进ida

第二步,处理下载后的文件





发现是一个可执行程序,并不是一个so文件。而且函数名字也不能正常解析,全部是sub命名,刚开始以为是做了混淆

shift+f12先看下字符串里有什么。

发现了很多runtime.的字符串在gopclntab段
恍然大悟,这个可执行程序是go写的。
go语言目前可以跨ios/android平台,而且对x86和arm都能支持到。

go语言在ida下面的分析,先要解决符号问题,不然函数没办法展示
github ida插件(https://github.com/sibears/IDAGolangHelper)
alt+f7打开插件后,选rename functions

go程序有个特点,底层会给每个函数前面加上包名,
所以在main包下的函数,都是加main前缀的。直接搜main关键字,看到了一堆函数



第三步,分析原理

pubgm基于ue4
一般,world, level等基址都是 作为常量写到程序里的,这里我们不做研究,
我们主要分析 这款辅助 是怎样跨进程 读写内存的

看到有一个函数叫ain__ptr_gameMem_GetGamePointer,进去F5看下代码



这个函数会调用main_rpm,我们继续跟进,
到了main_rpm这里,发现它调用了一个syscall_Syscall6。和之前讲到的一样,go语言函数前面的部分是包名,后面的是函数名(所以go官方不建议开发使用 _)
那么这个函数就是syscall包下的Syscall6


这里go语言的syscall 和 c语言syscall 一致
函数的第一个参数是命令字,这款辅助读内存用到的347号命令字是什么意思呢?
我们登陆一台linux主机,查找下syscall 347号命令字


在/usr/include//asm/unistd_32.h 里面,我们发现了347 对应的调用是__NR_process_vm_readv

百度下process_vm_readv,这里是它的介绍


后面,继续看了下其他函数,发现它和apk进程通信的方式基于tcp
go程序会创建套接字来和apk程序通信

附上apk程序 和 原始go二进制程序
链接:https://share.weiyun.com/5AZxzAf 密码:3mce7z

免费评分

参与人数 18威望 +3 吾爱币 +28 热心值 +16 收起 理由
麦肯锡 + 1 + 1 楼主可用吗
钟半仙 + 1 + 1 谢谢@Thanks!
chenxiongv587 + 1 + 1 大鸡腿要掉价了
mu231 + 1 热心回复!
a5606495 + 1 + 1 用心讨论,共获提升!
sanbell361 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
空不了 + 1 + 1 热心回复!
Anonymous、 + 2 + 1 我很赞同!
JosnSon + 1 谢谢@Thanks!
tt9527 + 1 + 1 楼主分析的真好,我的鸡腿市场没的做了。正好提卡太贵了。
罗氏家族 + 1 是鸡腿吗(替广大坛友们问的) 哼哼!
cbkui + 1 + 1 谢谢@Thanks!
麻薯高高 + 1 + 1 谢谢@Thanks!
qtfreet00 + 3 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Aqi和yu + 1 用心讨论,共获提升!
you920928 + 1 + 1 用心讨论,共获提升!
qaz003 + 1 谢谢@Thanks!
金刚葫芦侠 + 2 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
麦肯锡 发表于 2019-12-24 14:54
罗氏家族 发表于 2019-1-3 19:48
已知软件是根据tcp协议通信获取进入界面,而界面又受到DRM版本保护,问:在这种情况下怎么破解!(10分)

我尝试着按楼主的方式走到了一半就无法进行了。也不知道有人破解成功的嘛
推荐
6767 发表于 2019-1-14 10:30 来自手机
嗯,用golang写了个TCP agent注入目标进程代{过}{滤}理操作,确实是个不错的主意,golang确实很好用这垮平台上,而且可以隔离代码逻辑的更新。非常好。就是这样就没法直接逆向外挂了哈哈
沙发
ertcm 发表于 2019-1-2 22:18
3#
Angle丶dianfeng 发表于 2019-1-2 22:22
我还以为是exe的程序...
4#
ChenBeiXuan 发表于 2019-1-2 22:22
谢谢分享
5#
eoo 发表于 2019-1-2 22:26
谢谢分享
6#
linuxprobe 发表于 2019-1-2 22:30
看的不是很明白。
7#
lsz520 发表于 2019-1-2 23:13
膜拜大佬
8#
沐柒乀 发表于 2019-1-3 00:04
看不太懂,不过还是感谢分享
9#
qyzseven 发表于 2019-1-3 00:06
还以为是exe的程序...
10#
疯啊疯灯 发表于 2019-1-3 01:14 来自手机
不明觉厉,鞋鞋分享,马着以后学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 13:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表