Android反编译看看手Q口令红包的实现原理

2019-12-10 19:07:55王振洲

3、jadx的使用

  • 下载jadx。
  • 运行gradlew dist编译。
  • jadxjadx-guibuildinstalljadx-guibin下有可运行的gui
  • jadxjadx-clibuildinstalljadxbin是命令行程序
  • 可以都加入PATH环境变量,以便直接命令行调用。

    4、分析APK文件
    First Try

    虽然我们可以用jadx直接打开apk傻瓜式地去查看源代码,但是为了更理解反编译的过程和工作原理,以便以后在碰到一些问题(比如加壳)的时候可以自己解决,这里我们先装逼一下,使用Apktool去进行分析。

    D:devreverse>apktool d -o qq mobileqq_android_6.2.3.apk
    I: Using Apktool 2.0.3 on mobileqq_android_6.2.3.apk
    I: Loading resource table...
    Exception in thread "main" brut.androlib.AndrolibException: Multiple res specs: attr/name
        at brut.androlib.res.data.ResTypeSpec.addResSpec(ResTypeSpec.java:78)
        at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:248)
        at brut.androlib.res.decoder.ARSCDecoder.readTableType(ARSCDecoder.java:212)
        at brut.androlib.res.decoder.ARSCDecoder.readTableTypeSpec(ARSCDecoder.java:154)
        at brut.androlib.res.decoder.ARSCDecoder.readTablePackage(ARSCDecoder.java:116)
        at brut.androlib.res.decoder.ARSCDecoder.readTableHeader(ARSCDecoder.java:78)
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:47)
        at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:544)
        at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:63)
        at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:55)
        at brut.androlib.Androlib.getResTable(Androlib.java:66)
        at brut.androlib.ApkDecoder.setTargetSdkVersion(ApkDecoder.java:198)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:96)
        at brut.apktool.Main.cmdDecode(Main.java:165)
        at brut.apktool.Main.main(Main.java:81)
    

    竟然报错了,Multiple res specs: attr/name,在网上找了找资料,应该是腾讯利用Apktool的bug去进行了加壳,除了添加同名id外还做了若干加固,好,你狠,我们下篇文章针对腾讯的壳来分析并修改Apktool,这次先用jadx来试试。