Skip to content

逆向《放置江湖》的记录 #8

Open
@hackwaly

Description

申明:仅出于学习目的,如有侵权请通知我,我会立即删除。他人不得将此文中信息用于商业目的。

首先网上找了一下其他人是否有分享逆向《放置江湖》的经验,找到了这个 https://github.com/crazyyao0/codearchive/tree/master/reverse/%E6%94%BE%E7%BD%AE%E6%B1%9F%E6%B9%96

大概意思《放置江湖》应该是cocos2d-x写的,里面的数据和逻辑都在lua文件里。发布出来的apk里面打包进去的lua文件是加密过的,需要解密。作者是自己写的解密脚本,我比较懒,网上找了下看看有没有现成的。找到 https://github.com/lyzz0612/cocos_decrypt

这个脚本解密是全自动的,不过在识别 sign 和 key 的时候遇到了点问题。所幸它支持手动传 sign 和 key,网上也找到了如何寻找 cocos2d-x 加密的 sign 和 key:https://blog.csdn.net/u012278016/article/details/79607356

由于只需要破解一次,所以我没有去改进那个解密脚本,而是手动找出 sign 和 key 之后对 apk 做了解密。解密的过程中有点意外,解密脚本硬编码了需要解密的文件的后缀名为 .luac,在《放置江湖》中,后缀名为 .lua,所以需要调整下解密脚本。

解密完成后,提取出来的 *.lua 文件依然是二进制的,用 winhex 和未解密的版本作了下对比。发现文件是不一样的,这说明解密是完成了的,只不过解密出来的可能是 lua 的 bytecode,需要咱们反编译一下。

解密之后的 lua 文件在 winhex 下明显前四个字符是可见字符,应该是文件格式的 magic。显示为” LJ “,hex 为 “1B4C4A02“,猜测是 luajit 的 bytecode,通过搜索确认了我的猜测。于是开始搜索 luajit 的 decompiler。找到 https://gitlab.com/znixian/luajit-decompiler 应该是目前还在维护的版本。

反编译过程会出现很多 warning 和 exception,应该是 decompiler 不够完善导致的。不过不影响记录数据的 lua 文件的反编译。

image

由于我是比较懒的人,所以我比较乐意节省那些和我同样懒并且有着同样爱好的人的时间:
https://gist.github.com/hackwaly/3a7d6caeb50388c7b625c04105a39d60

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions