反编译apk

背景

最近无聊尝试反编译了个apk(XX幻想)

工欲善其事必先利其器

  • apktool 负责将apk解包

  • dex2jar负责将解包的dex转成jar

  • procyon 负责反编译jar包

  • IDA (记得使用32位的) 负责解析so文件

解包apk

  • java -jar apktool.java d -o
  • assets 通常资源文件都包含在这里;lua的代码通常也在这里
  • lib ; 如果有 libcocos2dlua.so 文件那么,这个游戏基本就是使用cocos2d(如:XX幻想)

解密文件

  • cocos2d使用的是XXTEA加密
  • XXTEA加密/解密 包含签名和密钥两个部分
  • 寻找签名这个容易
    • 随便用编辑器(如:UltraEdit)打开几个文件会发现加密的文件都会以相同的文本开头(如:abcd@)其中abcd这个就是签名了
  • 寻找密钥
    • 首先用IDA打开libcocos2dlua.so 文件(灰长慢)
    • 然后在找到文本常量页面(VIEW->Open subView -> Strings)
    • 尝试在文本区内搜索上面找到的签名,通常密钥会在签名附近
    • 将签名附近的文本逐一使用XXTEA进行解密尝试一边,如果能够成功解密那么就是正确的密钥,否则就不是;
    • 如果附近的文本都不能解密的话,那就尝试暴力枚举,便利所有文本逐一当做你要尝试一边,如果还不行的话那我也没辙了(要慢慢分析代码,请挪步百度or google)

反编译lua文件

  • 如果在assets中存在 codes 文件夹
  • codes 中存在大量的 .luac文件 那么就该游戏应该就是使用lua编写的
  • luac 反编译请诺步于此: https://bbs.pediy.com/thread-216800.htm
  • 对于cocos2d无论是lua还是luac都能正常运行,所以反编译之后可以尝试修改lua文件...
  • 修改完lua文件后可以用apktool 重新打包,生成apk...

你可能感兴趣的:(反编译apk)