破解一款安卓上支持Flash的浏览器
本帖最后由 supersun 于 2018-12-17 23:26 编辑在安卓4.4之后浏览器内核改为chromiun,不再默认支持Flash。可如果想在手机上玩4399、赛尔号、摩尔庄园之类的Flash小游戏,该怎么办呢?通过一番搜索找到一款自带Flash插件的浏览器:Puffin(海鹦)浏览器这个浏览器我使用了一段时间,页面加载迅速,非常省流量,还能隐藏你的真实IP地址,是个不错的选择。但这个浏览器需要激活才能使用(目前是免费激活的,不知道以后会不会收费),今天就带你来破解它。
开始破解
软件打开界面如图:
把APK解压,DEX文件反编译(如果整个APK反编译,编译时会报错),然后定位到onCreate方法。
如图,所在类路径:com/cloudmosa/app/LemonActivity
APP启动时判断是否激活而显示激活界面,一般都在这初始化这里进行,所以我们从这里开始找。
这里看到validation_code字样,意思是“激活码”,很可疑。
代码的意思是从SharedPreferences中读取激活码,再调用invoke-static {p1}, Lot;->aq(Ljava/lang/String;)Z(参数就是激活码)
结果传给v3,如果V3返回0,则跳转到:cond_237我们来到cond_237:
这里判断p1是否不为0,是的话就跳转到:cond_248
但是上面可以看出他把p1值赋0了,所以这个下面代码是会执行的。
而我们要让他跳过这段验证代码。
直接把上方的if-nez v3, :cond_237 修改为 goto:cond_248 即可。
修改完后回编译dex文件,然后签名测试:
程序打开时没有显示激活页面了。但是有个问题,就是进入网页时程序会闪退。
这里可以猜测是有暗桩在程序其他地方验证是否激活,或者是有签名效验。
经过排查可以确定这个APP有签名效验。
我们在APK逆向基础教程时候已经介绍过签名验证的破解方式,可以用工具一键破解。
但这里为了让大家学到知识,就采用手动方式破解他的签名验证。
把apk载入到jadx中,搜索signature:
找到的地方都没有关键代码,但我们看到有一个signatureCheckFailedNativeCallback说明签名验证在native方法中。
我们打开apk解压后lib\armeabi-v7a目录
里面有两个so文件,根据名字判断在第二个里面可能性比较大(如比较多的话,可以在java层先定位)。
我们把libpuffin.so载入到IDA中:
Shift+F12打开字符串窗口,搜索signature:
找到这一段可疑文字(英文意思是签名检查失败即将结束APP,如果不知道要搜索什么,我们可以在Logcat中找突破口)双击进入:
定位到引用字符串的地址:
再找上一层调用:
来到此处:
此时我们按F5查看伪代码:
整个方法流程大概如图。
我们可以看出这里面就是签名验证的逻辑,获取apk签名,对比包括退出代码都在里面。
因此我们只需要把调用这个函数的地方删掉即可。我们来到函数头部:
定位到调用的地址:
这里的BL XXX 就是调用子程序的意思,我们定位到十六进制编辑器中:
把这里改成00 00 00 00(空代码),保存即可。
最后替换原来的so文件,打包,签名测试:
从左下角可以调出鼠标和键盘控制Flash。
这个浏览器还支持Flash的全屏模式,运行也很流畅。
功能一切正常,至此破解成功。 同求成品,以及其他支持的浏览器分享 @supersun 图片盗链了,上传下本地吧,这里有教程https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36 学到了,谢谢楼主 学到了,谢谢楼主 感谢分享 感谢楼主分享,学到了 图显示不出来,软件 在哪里呢 叫我怎么感谢你呢!!! 可以,很好用 IDA破解好难,学习了! 感谢楼主分享