逆向某fun

在官网上下载最新版本(坑爹的是并不是最新版本)

  • 用apktool反编译

    apktool d [-s] -f acfun_v4.4.1_portal.apk -o acfun

  • 下载SmaliIDEA https://bitbucket.org/JesusFreke/smali/downloads/
    将反编译后工程导入as,添加为source root。
    接下来Run->Edit Configurations 添加Remote,稍等要修改端口。

  • 重新用apktool打包安装进手机

    apktool b acfun -o acfun_unsigned.apk

遇到问题1:安装的时候报了个解析软件包出现问题

  • 使用auto-sign重新打包

    java -jar signapk.jar testkey.x509.pem testkey.pk8 acfun_unsigned.apk acfun_signed.apk

再次安装,安装成功,但显示了如下dialog

sign.jpg

  • 打开smali工程,进入res/strings.xml查找该提示语

sign_string.png

  • 在public.xml中查找该id资源

  • 在smali中全局查找引用0x7f080300处

jni.png

show.png

  • 再看dismiss方法

kill_pid.png

这就是为什么点击dialog应用会退出

splash.png

utils.png

可以看出如果本地校验不通过,将一直循环调用setContontView,导致页面一直卡在SplashActivity,因此,光删除自杀代码还够,更应该修改校验逻辑

  • 强制设置校验通过

    在move-result V0 下面添加 const/4 v0, 0x1

true.png
再次打包运行,可以进入MainActivity了,but。。。

vision.png
坑爹呀,官网下的居然不是最新版本…

  • 修改版本号重新打包,或者手动强制修改dialog逻辑。。。

以上只做学术研究,请勿用于商业目的