cocos2djs棋牌手游加密逆向,万物皆可Hook

直接拖进jeb查看AndroidManifest.xml的入口点,发现是cocos2djs 写的程序

<meta-data android:name="android.app.lib_name" android:value="cocos2djs" />

图片

这里直接把apk里面的assets拖出来,源码就在src目录  js写的

但是这里的js被加密了  jsc,需要先解密

图片

先等我点一份外卖,原价需要24.88 估计是看我够骚,居然优惠了我十块二

只需要17.88

图片

吃完后我感觉貌似不太好吃,没有女朋友的味道,随手便点了退款

白嫖完了之后,反手直接把ida给掏了出来

这里是关键 《掏出来比你大系列》

这里把apk lib目录下的libcocos2djs.so拖进ida 在exports搜索 xxtea

可以看到有一个命名为jsb_set_xxtea_key的函数

图片

这里调用此函数是传递了一个指针地址过来,并不能直接看到明文

图片

直接到function calls查看谁调用了jsb_set_xxtea_key

图片

v19寄存器存放着key 然后传递给jsb_set_xxtea_key 成功拿到key

拿到key后直接解密jsc,用在吾爱找到了一个工具

图片

成功解密拿到明文代码,然后再把解密后的js代码拖进vscode分析一下

这里的发包都是使用的send发起 WebSocket

图片

尝试使用wpe抓封包看一下,这里发起的send数据是加密的

大概分析了一下js,代码貌似并没有对数据进行加密

猜测可能是so层对数据进行了加密

82 A8 DB 93 11 C4 1B 13 32 6C DB 93 11 E4 A0 B1 78 AA AD FA 65 A1 98 FC 75 A1 F9 A9 23 F6 E9 A1 23 F6 E9 A1 3D E6 AF EA 61 A1 F9 A9 20 B9

图片

这里返回到ida,在导出表搜索 websocket::send

两条结果,

图片

这里直接使用frida进行hook,当前函数偏移量为0X00A5DFEC

图片

function get_module_address(soname,pianyi)
{
    var module_address = Module.findBaseAddress(soname);
    return module_address.add(pianyi);
}

function main()
{
    Java.perform(function () {
        Interceptor.attach(get_module_address("libcocos2djs.so",0x00A5DFEC),{
            onEnter: function (args) {
                //console.log(new Uint8Array(args[1].readByteArray(args[2].toInt32())).buffer);
                console.log(args[1].readByteArray(args[2].toInt32()));
            },
            onLeave: function (retval) {
                
            }

        });
    });
}


setTimeout(() => {
    main()
}, 200);

明文出来了

图片

图片

本篇文章由本人原创,首发微信公众号《深邃的眼眸》,公众号已改名《秘术》

Cocos2d-JS开发之旅 从HTML 5到原生手机游戏》 《Cocos2d-JS开发之旅——从HTML 5到原生手机游戏》从简单到复杂逐渐深入介绍Cocos2d-JS,包括HTML5和手机原生游戏两个方面的内容。这些内容融汇了作者多年的工作经验和Cocos2d-JS 的亲身使用教训,有助于读者快速掌握游戏开发的方法和避开不必要的麻烦。 《Cocos2d-JS开发之旅——从HTML 5到原生手机游戏》以两个游戏为线索,每一章的学习都为最终实现游戏而准备。除了基础的Cocos2d-JS使用方法,本书还会探讨如何调试发布原生手机游戏和另外一些高级话题。 《Cocos2d-JS开发之旅——从HTML 5到原生手机游戏》适合所有对2D 游戏开发感兴趣的人群,尤其是计算机专业学生、Flash/JS 开发者,因为Cocos2d-JS简单易懂,读者会发现自己已有的基础能快速应用或转移到Cocos2d-JS 游戏的开发中。 目录 第一部分 准 备 篇 第1 章 Cocos2d-JS 介绍 / 2 第2 章 跑起我们的HelloWorld / 10 第一部分总结 / 27 第二部分 做一个简单的小游戏 第3 章 Cocos2d-JS 的平面世界 / 30 第4 章 让世界来点动静 / 51 第5 章 让玩家操纵这个世界 / 72 第6 章 控制小怪按时出现——定时器 / 84 第7 章 游戏界面 / 96 第8 章 不能光说不练——小小碰碰糖 / 122 第9 章 把成果分享到网上 / 143 第二部分总结 / 158 第三部分 再做一个高大上游戏 第10 章 走向高大上的必经之路——简单的性能优化 / 160 第11 章 让主角不再死板 / 173 第12 章 动态的背景 / 188 第13 章 界面的文字有点丑 / 204 第14 章 超炫的效果——粒子系统 / 211 第15 章 尝试做一个更大的游戏——Hungry Hero(上篇)/ 226 第16 章 尝试做一个更大的游戏——Hungry Hero(下篇)/ 235 第三部分总结 / 291 第四部分 把两个游戏做成原生手机游戏 第17 章 咱们也来做APP / 294 第18 章 真是这么美好吗?更多问题来了 / 304 第四部分总结 / 320 第五部分 高 级 篇 第19 章 订阅者模式——事件机制 / 322 第20 章 屏幕尺寸适配哪家强 / 331 第21 章 让死去的主角灰掉——渲染控制 / 342 第22 章 动态热更新 / 363 第23 章 想说的还有很多 / 374 第五部分总结 / 376
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

药药同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值