[免费专栏] Android安全之某游戏APK逆向分析

您所在的位置:网站首页 stubappapk下载 [免费专栏] Android安全之某游戏APK逆向分析

[免费专栏] Android安全之某游戏APK逆向分析

2023-09-24 15:52| 来源: 网络整理| 查看: 265

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大

少走了弯路,也就错过了风景,无论如何,感谢经历

0x01 前言 0x02 工具准备 2.1 抓包工具 工具名称使用平台优点缺点wiresharklinux、windowslinux平台支持好,功能强大不能解析https的内容fidderwindows功能强大,支持修改报文仅支持windowsCharleswindow、Mac可以按照域名进行分层级查看需要收费Burp Suite支持java的平台黑客喜欢用的功能强大工具界面不是很好看 2.2 模拟器 夜神模拟器

https://www.yeshen.com

PS:只支持Windows系统、Mac系统(M1暂不支持)

网易MUMU模拟器

https://mumu.163.com

PS:只支持Windows系统、Mac系统(M1暂不支持)

雷电模拟器

https://www.ldmnq.com

PS:只支持Windows系统

逍遥模拟器

https://www.xyaz.cn

PS:只支持Windows系统

https://mp.weixin.qq.com/s/eDexuhi3B2vs3gEPPJBJzA

0x03 加固特征库 360 assets/.appkey assets/libjiagu.so assets/libjiagu_art.so assets/libjiagu_x86.so assets/libprotectClass.so 爱加密 lib/armeabi/libexecmain.so assets/ijiami.ajm ijiami.dat assets/af.bin assets/signed.bin assets/ijm_lib/armeabi/libexec.so assets/ijm_lib/X86/libexec.so 几维安全 assets/dex.dat lib/armeabi/kdpdata.so lib/armeabi/libkdp.so lib/armeabi/libkwscmm.so libkwscr.so libkwslinker.so 梆梆安全

免费版

assets/secData0.jar lib/armeabi/libSecShell.so lib/armeabi/libSecShell-x86.so libsecexe.so libsecmain.so libDexHelper.so

定制版

assets/classes.jar lib/armeabi/DexHelper.so libDexHelper-x86.so DexHelper.so 腾讯加固 tencent_stub lib/armeabi/libshella-xxxx.so lib/armeabi/libshellx-xxxx.so lib/armeabi/mix.dex lib/armeabi/mixz.dex libtup.so libexec.so libshell.so 腾讯御安全 assets/libtosprotection.armeabi-v7a.so assets/libtosprotection.armeabi.so assets/libtosprotection.x86.so assets/tosversion lib/armeabi/libtest.so lib/armeabi/libTmsdk-xxx-mfr.so 顶象技术 lib/armeabi/libx3g.so 阿里加固 aliprotect.dat assets/armeabi/libfakejni.so assets/armeabi/libzuma.so assets/libzuma.so assets/libzumadata.so assets/libpreverify1.so libsgmain.so libsgsecuritybody.so libmobisec.so Dexprotect加固 assets/classes.dex.dat assets/dp.arm-v7.so.dat assets/dp.arm.so.dat 通付盾加固 libegis.so libNSaferOnly.so APKProtect加固 libAPKProtect.so 百度加固 lib/armeabi/libbaiduprotect.so assets/baiduprotect1.jar 或者 assets/baiduprotect.jar 海云安加固 assets/itse lib/armeabi/libitsec.so apktoolplus assets/jiagu_data.bin assets/sign.bin lib/armeabi/libapktoolplus_jiagu.so 娜迦 libedog.so/libddog.so libfdog.so libedog.so libchaosvmp.so 通付盾加固 libegis.so libNSaferOnly.so 盛大加固 libapssec.so 瑞星加固 librsprotect.so 网秦加固 libnqshield.so 网易易盾 libnesec.so uu安全 assets/libuusafe.jar.so assets/libuusafe.so lib/armeabi/libuusafeempty.so 中国移动加固 assets/mogosec_classes assets/mogosec_data assets/mogosec_dexinfo assets/mogosec_march lib/armeabi/libcmvmp.so lib/armeabi/libmogosec_dex.so lib/armeabi/libmogosec_sodecrypt.so lib/armeabi/libmogosecurity.so 珊瑚灵御 assets/libreincp.so assets/libreincp_x86.so 部分壳的application 爱加密 s.h.e.l.l.S 360加固 com.stub.StubApp 几维安全 com.Kiwisec.KiwiSecApplication com.Kiwisec.ProxyApplication 或者干脆没有application 梆梆安全 com.secshell.secData.ApplicationWrapper 腾讯加固 com.tencent.StubShell.TxAppEntry 海云安 c.b.c.b 腾讯御安全 MyWrapperProxyApplication 顶象技术 cn.securitystack.stee.AppStub apktoolplus com.linchaolong.apktoolplus.jiagu.ProxyApplication 珊瑚灵御 com.coral.util.StubApplication 魔固云(中国移动加固) com.mogosec.AppMgr apktool助手伪加固特征 监测application即可 假360加固 没.appkey application为com.qihoo.util.stub2678363137 假梆梆加固 application为com.secoen.apkwrapper.ApplicationWrapper 0x04 某游戏APK分析

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 配置好对应配置,这样我们就可以抓包了

在这里插入图片描述

然后返回手机主页,再点击精英Fz APP

在这里插入图片描述

点击更新,此处会出现更新的链接,吐槽一哈Burp,该链接抓取时Burp的历史包里面会自动消失,建议更新时直接抓包或者使用其它的抓包协议把该请求获取到

GET /jdqsc/gx.txt HTTP/1.1 User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.2; VOG-AL00 Build/N2G48H) Host: buwo.oss-cn-beijing.aliyuncs.com Connection: close Accept-Encoding: gzip, deflate

在这里插入图片描述 在这里插入图片描述

可以看到服务器是放到阿里云的对象存储OSS服务器上的,下面这个是:

防F引擎地址:https://pan.lanzouw.com/xxx

在这里插入图片描述

F卡地址:https://xxx

在这里插入图片描述

该APP主要通过网络通信行为有北京阿里云服务器、蓝奏云网盘、第三方平台的付款和注册卡做通信和验证

在这里插入图片描述

先将APK后缀改为ZIP后解压包后,将里面的classes.dex文件复制出来,然后放到dex2jar路径下,执行如下命令:

d2j-dex2jar.bat classes.dex

在这里插入图片描述 在这里插入图片描述

如上图发现入口类Application类被处理过了,APP做了加固

识别APP是否加固的小方法

1、将app解压出来查看assets目录下,是否有对应的so文件,这个目录下的so文件名称是可以作为识别是什么加固厂商的方法

2、将app拖到反编译工具,如jadx工具上,通过工具可看出Application的入口类是否被替换,以及是否存在加固厂商的特征

PS:APP的Application类中的attachBaseContext和onCreate这两个函数是最先获取执行权进行代码执行的。这也是为什么很多加固工具的主要逻辑都是通过替换APP入口Application,并自实现这两个函数从而达到加固的效果

上面截图中,发现存在如下特征:

com.stub.StubApp assets/.appkey assets/libjiagu.so

PS:发现该APP是360加固

小技巧 应用程序的asset目录,知道这个目录是不参与apk的资源编译过程的,所以很多加固的应用喜欢把加密之后的源apk放到这里把源apk加密放到壳的dex文件的尾部,这种加固方式会发现使用dex2jar工具解析dex是失败的libs目录把源apk加密放到so文件中,一般都是把源apk进行拆分,存到so文件中,分析难度会加大的从AndroidManifest.xml 查找入口类 4.1 Frida 脱壳工具 壳的分类

壳的种类非常多,可以简单的分为以下三类:

一代整体型:采用Dex整体加密,动态加载运行的机制(免费类的壳)二代函数抽取型:将方法单独抽取出来,加密保存,解密执行(某加密)三代VMP、Dex2C:独立虚拟机解释执行 4.1.1 Frida-Unpack

firda-unpack 原理是利用frida hook libart.so中的OpenMemory方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将dex导出,我们可以查看项目中的 OpenMemory.js 文件中的代码更清晰直观地了解

项目地址:https://github.com/GuoQiang1993/Frida-Apk-Unpack

frida -U -f com.APK进程名 -l. dexDump.js. --no-pause

PS:将 dex 文件并 dump 下来,保存在 data/data/packageName 目录下

4.1.2 FRIDA-DEXDump

脱壳后的dex文件保存在PC端main.py同一目录下,以包名为文件名

项目地址:https://github.com/hluwa/FRIDA-DEXDump

4.1.3 frida_dump

文件头搜索dex,来脱壳

项目地址:https://github.com/lasting-yang/frida_dump

PS:会搜索 dex 文件并 dump 下来,保存在 data/data/packageName/files 目录下

4.1.4 FART

Frida 版的 Fart, 目前只能在 andorid8 上使用该frida版fart是使用hook的方式实现的函数粒度的脱壳,仅仅是对类中的所有函数进行了加载,但依然可以解决绝大多数的抽取保护

项目地址:https://github.com/hanbinglengyue/FART

解压 frida_fart.zip 将目录中的 fart.so 与 fart64.so 推送到 /data/app目录下 并使用 chmod 777 需要以spawn方式启动app,等待app进入Activity界面后,执行fart()函数即可。如app包名为com.example.test,则 frida -U -f com.xxx.test -l frida_fart_hook.js --no-pause 等待app进入主界面,执行fart() 高级用法: 如果发现某个类中的函数的CodeItem没有dump下来, 可以调用dump(classname),传入要处理的类名, 完成对该类下的所有函数体的dump, dump下来的函数体会追加到bin文件当中

PS:于被动调用的脱壳修复,由于代码覆盖率低,不可能触发app中的所有函数的调用,因此,修复的范围有限

4.1.5 BlackDex

BlackDex是一个运行在Android手机上的脱壳工具,支持5.0~12,无需依赖任何环境任何手机都可以使用,包括模拟器。只需几秒,即可对已安装包括未安装的APK进行脱壳。

项目地址:https://github.com/CodingGay/BlackDex

4.2 脱壳

APP脱壳两个最为关键的要素

内存中dex的起始地址和大小,只有拿到这两个要素,才能够成功dump下内存中的dex脱壳时机,只有正确的脱壳时机,才能够dump下明文状态的dex。否则,时机不对,及时是正确的起始地址和大小,dump下来的也可能只是密文

APP脱壳原理

在壳app解密源apk的dex之后,源apk被加载之前,拦截这个过程中的系统函数,把内存中的dex文件dump拿出来

对于完整的dex文件,采用暴力搜索方式搜索dex035关键特征,对于抹掉头文件信息的dex如抹掉dex035这个的magic bytes 信息,此时就需通过匹配一些特征来进行搜索

工具:https://github.com/dstmath/frida-unpack

需要安装frida环境

https://frida.re

pip3 install frida-tools adb.exe push C:\xxx\frida-unpack\inject.sh /data cd /data chmod +x inject.sh # 转发frida端口 adb.exe forward tcp:27042 tcp:27042 adb.exe forward tcp:27043 tcp:27043 adb.exe forward tcp:38089 tcp:38089 # 启动frida并修改监听端口(防止部分app监测默认端口) adb.exe shell /data/local/tmp/ -l 0.0.0.0:38089 AndroidCPU架构 CPU架构描述armeabi第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢armeabi-v7a第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能arm64-v8a第8代,64位,包含 Aarch32、Arch64两个执行状态对应32、64bitx86intel32位,一般用于平板电脑x86_64intel64位,一般用于平板电脑mips少接触mips64少接触 获取当前模拟器的CPU,好选择frida-server的版本 adb shell getprop ro.product.cpu.abi adb.exe push E:\xxx\frida-unpack\frida-server-15.1.14-android-x86 /data/local/tmp/ adb.exe shell cd /data/local/tmp/ chmod 777 frida-server-15.1.14-android-x86 ./frida-server-15.1.14-android-x86

在这里插入图片描述

PS: 可能大家会遇到脱壳失败的,多试几次

在这里插入图片描述

脱壳失败解决方案:

1、多试几次python main.py -n com.jyzlhkj2、尝试python main.py -n com.jyzlhkj -p 进程ID号3、尝试python main.py -n com.jyzlhkj -p 进程ID号 -f4、非root权限的话,尝试sudo sysctl kernel.yama.ptrace_scope=0 ,或 以root权限运行frida5、frida版本换一个,不要最新版的

博主是多次尝试第二种方法成功,有好几次运行的时候程序闪退,可能是模拟器的缘故造成的

接下来我们再把另外一个脱一下壳

pyhon3 main.py -p 4943 -n com.zlhkjyq

在这里插入图片描述 在这里插入图片描述

精英Fz文件反编译出如下dex文件,其中0xc3ee1a20.dex、0xc3ee1b70.dex未反编译成功 0xb3c8d000.dex 0xb3e77f30.dex 0xb356d000.dex 0xc3ee1a20.dex 0xc3ee1b70.dex

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

从上面的几张图,发现是用易语言开发的APK,包的特征比较明显

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

find / -name "*.txt"

在这里插入图片描述 查看其中的一些文本发现可获得APK下载的地址

在这里插入图片描述 在这里插入图片描述 将校验分享多少次可领注册码的文本内容改一下,改成20,即可领取注册码

adb.exe pull /data/media/0/stymd/ther/bmn/zscs.txt D:/

在这里插入图片描述

adb.exe push D:/zscs.txt /data/media/0/stymd/ther/bmn

在这里插入图片描述

再次进入游戏,点击领取注册号

在这里插入图片描述

在这里插入图片描述

在我们已注册成功后,该软件会去下载防F引擎

在这里插入图片描述

下载防F引擎apk GET /tp/xxxxx HTTP/1.1 Host: iji.lanzout.com Connection: close Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; HD1910 Build/LMY48Z; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.100 Mobile Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,en-US;q=0.8 X-Requested-With: com.android.browser

在这里插入图片描述

防F引擎的破解方法

跟精英FZ一样,通过本地判断的,白嫖永远是那么的理所当然,哈哈,但千万不要去购买破坏游戏规则,此处只做研究用,不提供APK样本

在这里插入图片描述

返回游戏,发现显示注册成功

adb.exe push D:/ff.txt /mnt/shell/emulated/0/Dyri/yxme/winop

在这里插入图片描述

之前看代码逻辑时,发现它判断是通过本地,一个是判断本地是否存在vip.txt文本和分享次数是否达到20次来判断是否已注册或满足领取注册号的资格,那么本地直接创建一个vip.txt,丢进去,即可激活

在这里插入图片描述

PS:已知vip.txt文本为空,那么看来只是单纯的判断这个文本存不存在了

在这里插入图片描述

BB该APP外G的防F引擎,它是通过将ZB功能的代码注入到游戏客户端上,而实现游戏ZB的功能和效果

要实现游戏ZB功能,从业务层面上就是修改游戏角色属性或者关键函数参数、返回值信息。从底层引擎实现上来说就是通过基于修改底层渲染部分实现ZB功能,如调整子弹的速度,这样当子弹和碰撞体进行碰撞的时候,就会发生穿Q的效果。

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

游戏中GM使用游戏FZ软件,危险系数非常高的,因为使用游戏FZ那么肯定会面临被F号的风险,其二购买游戏FZ容易出现被P的情况

参考链接:

https://blog.csdn.net/g5703129/article/details/85054405

https://www.cnblogs.com/wf-l5201314/p/9714435.html

https://www.zhangkunzhi.com/index.php/archives/211/

你以为你有很多路可以选择,其实你只有一条路可以走



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3