AbemaTV android app 简单破解去除区域限制

AbemaTV-無料インターネットテレビ局」是一个日本网络电视台「アベマTV」出的视频 App,里面不少节目和视频都是免费的。

但是我安装后发现这个 App 有区域限制,启动时全屏显示 “このサービスはお住まいの地域からはご利用になれません。”提示,无法继续。

简单地尝试下破解了这个 App 的区域限制。步骤如下:

1. 从 apkpure 下载 AbemaTV app 最新版的 apk

2. 用 apktool 这个工具解包下载的 apk. apktool 是一个 java 包,需要安装 Java 运行。

java -jar apktool_2.2.4.jar d “AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com.apk”

3. 解包后的文件在当前目录下 “AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com/” 文件夹。其中,res/ 是资源文件,smali/ 和 smali_classes2/ 是 java 源码编译后的 smali 文件。这个 app 好像没怎么加密什么的。

在整个目录里搜索 “このサービスはお住まいの地域からはご利用になれません。” 字符串,找到:

<string name=”error_abroad_description”>このサービスはお住まいの地域からはご利用になれません。</string>

搜索 error_abroad_description,找到:res/values/public.xml:
<public type=”string” name=”error_abroad_description” id=”0x7f0a0114″ />

搜索 0x7f0a0114,找到 smali_classes2\tv\abema\components\fragment\a.smali:

.class public Ltv/abema/components/fragment/a;
.super Ltv/abema/components/fragment/u;
.source “AbroadFragment.java”

const v1, 0x7f0a0114
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(I)V

可以看到,这是一个 Fragment 类编译成的 smali 文件,当 app 检测到当前设备是日本以外区域(检测方法未知,可能是检测手机sim卡运营商信息)时就在当前 activity 上加载这个全屏 fragment 以阻止使用,所以最简单的破解方法就是把这个“创建并显示 Fragment”部分代码去掉。

搜索 “Ltv/abema/components/fragment/a”,找到:
smali\tv\abema\a\jk.smali

.line 202
const-class v0, Ltv/abema/components/fragment/a;
invoke-virtual {p0, v0}, Ltv/abema/a/jk;->I(Ljava/lang/Class;)V

看起来就是这里了,将这几行用 “#” 注释掉。

4. 最后,用 apktool 重新打包修改后文件生成 apk,参数就是之前解包apk文件所在目录

java -jar apktool_2.2.4.jar b “AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com”

生成的 apk 在 AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com/dist 文件夹下。

生成的 apk 是未签名的,无法直接安装。可以手工用 java bin目录下 keytool 工具生成密钥,jarsigner 工具给 apk 签名。(具体过程网上资料很多);也可以用直接用 apk-signer 这个图形化工具来进行

最后在手机上安装生成的 AbemaTV_v3.5.1_SIGNED_UNALIGNED.apk 即可,实测能够正常进入主界面并观看视频,搞定。

附上我自己生成的破解区域限制的 AbemaTV apk:

AbemaTV_v3.5.1_SIGNED_UNALIGNED.apk

Update

修改 app 包后无法使用 Google Play IAP 内购功能。最完美的破解 root 检测方法仍然是安装 XPosed + rootcloat

Update.2 (2017-08-08)

类似方法解除 Hulu 日本Android app的 root检测:

由错误提示“OSの整合性チェックに失敗しました。Root権限を取得している場合、起動できません。”跟踪找到某个Fragment:


const-string v2, “su”

invoke-virtual {v1, v2}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0

move-result-object v0

const v1, 0x7f0900e8

这里通过运行 su 检测是否有异常来判断机器是否已 root,所以最简单的移除方法就是把 “su” 随便改成个不存在对应命令的名字。

Hulu.jp_v1.0.11_apkpure.com_SIGNED_UNALIGNED.apk

0 Responses to “AbemaTV android app 简单破解去除区域限制”


Comments are currently closed.