自行反编译破解 Opera Mini 国际版,跳出中国大陆怪圈

作者:Elton Disney   来源:永远不老

转载本博客文章请注明作者Elton Disney和文章永久链接,谢谢!

从11月20日晚间开始,中国大陆用户就开始不能使用著名浏览器厂商 Opera 的手机版浏览器 Opera Mini 国际版了,当来自大陆的用户使用 OPM 国际版的时候,OPM 会强制跳转到一个中英文双语网页,要求用户“升级”到 OPM 中国版,理由是“更快更稳定”,但是 Opera 官方和 Opera 中国都没有对此事件作任何形式的表态。

Android 上的 Opera MIni 4.2 版的强制网页

Opera 公司的这一次改变直接影响到中国大陆地区使用 Opera Mini 国际版作为主要手机浏览器的几十万用户,波及从 BlackBerry,Android,Windows Mobile,Symbian 等几乎各种主流手机系统,造成用户怨声载道。

于是有 JAVA 达人开始寻求破解之道,同时,也有一部分用户因为无法承受 OPM 国际版“罢工”的痛苦,直接转移到 OPM 中国版或国内著名浏览器 UCweb

UCweb 6.0 Beta

但是,对于 Android 用户来说,根本没有 APK 格式的 OPM 中国版,只有 JAR/JAD 格式的版本,虽然可以使用 JAVA 虚拟机运行,但是运行效率明显没有 APK 版本的高,而且,最重要的是,中国版的肯定不能翻墙。同时,中国版会不会出现像 Tom-Skype 那样的窃取用户信息的事情,是很值得怀疑的。

本次事件起因不明,不过人们普遍有以下的观点:

1. Opera 公司受到来自大陆政府官方的压力,被逼无奈

众所周知,Opera Mini 国际版除了是一款很省 GPRS 流量的浏览器外,在大陆还有一个重要作用,就是用来翻墙。Opera Mini 国际版使用 Opera 公司在挪威的官方服务器作为代理地址,支持 Socket /HTTP 的代理模式,可以让大陆网民直接翻墙访问 Twitter 和 Facebook 等网站。可能是中国大陆政府为了防止利用 OPM 国际版翻墙的行为,迫使 Opera 公司自宫 OPM 国际版。

Opera Mini  protocol

2. Opera 公司受到来自中国合作公司的压力,被逼无奈

在中国大陆,Opera 公司有一些合作公司,比如与 Opera 中国合作的空中网,两个公司共同推出了所谓的 “空中 Opera”。虽然 Opera 的本地化是外国公司进入大陆市场必经的路,但 “空中 Opera”绑定了大量的内容和广告,使得用户好感锐减。因此这一次的封锁大陆 IP 事件也有可能是 Opera 的大陆地区合作商的要求所致

空中版 Opera Mini

3. Opera 中国团队要求本地化的结果

Opera 在中国有一个不算小的运营团队,也兼顾着 Opera 在中国的本地化开发和市场推广工作。不过长期以来,中文阉割版的 Opera Mini 都无法与自家的国际版抗衡。现在 UC 等本土浏览器趁着智能机市场高速发展之际大肆推广,可能让 Opera 的中国团队有点不知所措,于是乎想出了这一个逼迫国际版退出的闹剧。

不管原因如何,这一次 OPM 国际版封 中国大陆 IP 的行为都是不可原谅的,这不仅让用户失去了应有的选择权,让用户处于尴尬的境地,也使得自己的市场份额被 UC 等本土浏览器继续蚕食。

不过幸好有些 JAVA 达人已经找出解决方法。

OPM 国际版封锁中国大陆 IP 仅仅过了不到4天时间,推优 @luosheng 同学就通过反编译 OPM 国际版的安装文件,找出了破解 OPM 国际版的方法。(原文请跳转)

以下就是 @luosheng 同学的破解方法(仅适用于 Android 版本的 OPM 程序,其他系统程序破解方法请跳转查看)

HowToCustomYourOpmForAndroid

如何修改Android版的OPM

http://www.java.com/getjava/ 。如果你已经安装了JRE或者JDK,请跳过此步。

在此处下载smali: http://smali.googlecode.com/files/smali.jar

在此处下载反编译过的的Android版OPM源代码: http://opm-server-mirror.googlecode.com/files/android_opera_classes.zip

将OPM的源代码解压到某个目录,如 D:\sources

打开D:\classes\Code.smali,将 http://server4.operamini.com:80 改成你自己架设的OPM服务器,如 http://www.example.com/opera/index.php 。请注意:不要修改socket的设定,否则将无法使用。

打开命令行,进入smali的保存目录,执行:

java -jar smail.jar -o D:\classes.dex D:\source

到此处下载Android版OPM的安装包: http://opm-server-mirror.googlecode.com/files/opm4.apk 。如果你知道怎么获取APK包也可直接使用原始的APK文件。

将opm4.apk改名为opm4.zip,用任意压缩工具打开。删除里面的META-INF文件夹。并把D:\classes.dex拖进opm4.zip替换掉原始的classes.dex。

在此处下载签名工具: http://opm-server-mirror.googlecode.com/files/Auto-Sign.zip ,并解压到任意目录。

把修改过的opm4.zip放入Auto-Sign的目录,运行里面的sign.bat。

如果你在Auto-Sign的目录里面看见your_app_signed.apk的话,恭喜你,你已经成功了!请在安装之前卸载先前的版本。

进行软件后第一次仍会提示需要下载“中国版”,请先Accept后返回主界面,并在Settings中将Protocol改成HTTP后继续使用。

再次感谢 @luosheng 同学的努力!

同时,如果你需要反编译 Android 上面的 OPM 的APK 文件,请看我的方法

Android 系统的 APK 文件仅仅是一个压缩包文件,里面包含的 classes.dex 文件才是真正的软件程序,因此只要反编译 classes.dex 文件即可。

  • 1. 首先要确定你的机器上已经安装了 JRE /JDK ,如果没有安装请 跳转 ,如果已经安装了请跳过这一步
  • 跳转 到 DEDEXER 的主页下载 DDX1.5.jar 文件
  • 2. 将下载好的 ddx1.5.jar 文件放在任意文件夹 (本文默认放在 E 盘根目录)
  • 3. 将你下载下来的 OPM.apk 文件后缀名修改为 .zip,进入文件,将 classes.dex 文件解压到 E 盘根目录
  • 4. 调出 命令行,进入 E 盘,输入
    • java  -jar ddx1.5.jar -D -d <destination directory>  classes.dex

    (<destination directory> 为文件输出目录)

  • 5. 运行命令,大概10秒钟之后你将会在文件输出目录里面看到 dex 文件的反编译结果
  • 6. 用记事本打开 Code.ddx 文件,其中有两个网页地址,那就是你现在使用的 OPM 代理地址

好了,一切搞定。大家继续用 Opera Mini 国际版翻墙玩儿吧,要是有空,记得翻墙过来访问我的博客啊。

没有评论: