目标app YUhSMGNITTZMeTloWm1ZdWJIVnNkWE5wY2k1dFpTOD0=
使用jadx反编译,找了一圈没有找到相应代码,看AndroidManifest.xml也不像有加壳的样子。。。
在lib目录下找到libreactnativejni.so
文件,看似和react相关,莫非这app是大前端的产物?
搜索react native,果然是
React Native是一个脸书研发的开放源码的应用程序架构。
React Native基于React.js,目的是让开发者可以利用JavaScript和React.js的宣告式编程模式开发出在多平台上运作的程式。
PS: Unity开发的手游也没有相应的原生app代码,游戏逻辑全都在libil2cpp.so里,如果看到libil2cpp.so则可判断app是unity开发的。
基于React Native跨平台开发的app,逻辑都在assets的index.android.bundle
里,这是个js文件,打开可以看到js代码。
(跨平台开发真烦,逆向人员得学好几套东西)
格式化一下index.android.bundle的js代码便于查看,。。。一点混淆都没有。
app能不能破解,要看其判断逻辑是在客户端还是服务端,在服务端判断的成本是比较高的,像这种“小”app应该不会投入多少成本去做安全防护,因为我们直接盲猜“是否是vip”之类的逻辑就是在客户端进行的。
这个app的视频有"免费"、"收费"之分,搜索"free"关键词,慢慢看代码梳理逻辑。
这段代码是判断是否免费然后让用户付费的逻辑,直接注释掉即可。
这个"_renderAd"是广告样子,也不要了
重打包
# 反编译
apktool d app.apk -s
# 修改 index.android.bundle
找到相应代码注释/删除
# 回编译
apktool b app -o app_repack.apk
# 签名 (我用uber签名 https://github.com/patrickfav/uber-apk-signer)
java -jar /Applications/uber-apk-signer-1.2.1.jar --apks lusir_repack.apk
如此便得到非法app的破解版了