LTDSA
Born To Be Proud
LTDSA
绕过KDroid密码验证在Kindle设备运行Android

文章来自微博@穿越楚,方法未经验证,且这不是我使用的破解方法,我的破解方法即将公开,有兴趣的可以自己尝试。

最近在网上发现了神奇的 KDroid 项目,在 Kindle 设备运行 Android 4.4.2,不过作者身为国人,不仅闭源,还收取 160 RMB 作为激活费用,无疑违背了开源精神。由此,本文介绍绕过 KDroid 密码验证的方法。 

KDroid 刷机包普遍采用了 esystem.bin 这种打包方式,实际上通过 7-Zip 或者 Ubuntu 上的 file 工具,可以发现其为 ext4 格式的镜像,因此可以通过以下命令,在 Ubuntu 上挂载并编辑系统镜像文件。

sudo mount -o loop -t ext4 esystem.bin system

通过简单的文件浏览与反编译,可以发现,系统使用了开发者生成的 key 签名各个 apk 文件,因此不可以使用 test-keys 签名的 apk 进行替换。然而,可以通过手动破解 Android 核心的方式,禁用签名校验。

准备工作:从 Bitbucket 下载 smali.jar 与 baksmali.jar。

删除  system/framework/services.odex ,并使用以下命令解包 system/framework/services.jar :

java -Xmx256m -jar baksmali.jar -x system/framework/services.jar -o services

阅读生成的  services/com/android/server/pm/PackageManagerService.smali ,将  static int compareSignatures(Signature[] s1, Signature[] s2) 的字节码手动修改为以下内容,使其始终返回整数值 0,表示签名验证通过。

.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I

    .locals 11

    .param p0, "s1"    # [Landroid/content/pm/Signature;

    .param p1, "s2"    # [Landroid/content/pm/Signature;

    .prologue

    const/4 v7, 0x0

    .line 2934

    return v7

.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I

    .locals 11

    .param p0, "s1"    # [Landroid/content/pm/Signature;

    .param p1, "s2"    # [Landroid/content/pm/Signature;

 

    .prologue

    const/4 v7, 0x0

 

    .line 2934

    return v7

并重新打包为 services.jar:

java -Xmx256m -jar smali.jar services

使用该文件替换 system/framework/services.jar ,并设置权限 0644。

在进一步的反编译后,发现 system/app/JSONClient.apk 为系统中唯一具有   权限的应用,在开机时劫持用户界面,执行联网的密码验证,并使用了本地的加解密库,逻辑极为复杂,破解需要借助外部工具静态分析。

而若简单删除之,系统则无法启动,也无法从设备抓取日志查看详细原因,因此只能通过代码的修改和精简达到绕过验证的目的。

准备工作: 从 Bitbucket 下载 apktool.jar,并从 GitHub 下载 auto-sign 工具,最好可以手动下载 platform.pk8 与 platform.x509.pem 替换对应的 test-key 文件。

同样地,删除 system/app/JSONClient.odex,并将 system/app/JSONClient.apk 解包:

apktool d system/app/JSONClient.apk --frame-path system/framework

阅读 JSONClient/smali/com/aclient/MainActivity$AT.smali ,将以下字节码

.line 684

.local v4, "subresult":Ljava/lang/String;

const-string v5, "PASS"

invoke-virtual {v4, v5}, LZ

move-result v5

if-nez v5, :cond_2

const-string v5, "SUCC"

invoke-virtual {v4, v5}, LZ

move-result v5

if-eqz v5, :cond_4

.line 684

.local v4, "subresult":Ljava/lang/String;

const-string v5, "PASS"

 

invoke-virtual {v4, v5}, LZ

 

move-result v5

 

if-nez v5, :cond_2

 

const-string v5, "SUCC"

 

invoke-virtual {v4, v5}, LZ

 

move-result v5

 

if-eqz v5, :cond_4

中的  if-nez 和  if-eqz 对调,并删除

iput-boolean v7, v5, Lcom/aclient/MainActivity;->doreboot:Z

由此,验证通过的条件被更改为任意密码,因此只需联网即可验证通过,同时在逻辑中去除重启的代码,以保存验证通过的状态。

接下来,阅读 JSONClient/smali/com/aclient/MainActivity.smali ,可以发现以下字节码,在主界面创建按钮,使用户可以手动打开 Wi-Fi 设置。

.line 200

:cond_0

new-instance v1, Landroid/content/Intent;

const-string v2, "android.settings.WIFI_SETTINGS"

invoke-direct {v1, v2}, Landroid/content/Intent;->(LV

.line 202

.local v1, "intent":Landroid/content/Intent;

const-string v2, "testmode"

const/4 v3, 0x1

invoke-virtual {v1, v2, v3}, Landroid/content/Intent;->putExtra(LLandroid/content/Intent;

.line 203

invoke-virtual {p0, v1}, Lcom/aclient/MainActivity;->startActivity(Landroid/content/Intent;)V

.line 200

:cond_0

new-instance v1, Landroid/content/Intent;

 

const-string v2, "android.settings.WIFI_SETTINGS"

 

invoke-direct {v1, v2}, Landroid/content/Intent;->(LV

 

.line 202

.local v1, "intent":Landroid/content/Intent;

const-string v2, "testmode"

 

const/4 v3, 0x1

 

invoke-virtual {v1, v2, v3}, Landroid/content/Intent;->putExtra(LLandroid/content/Intent;

 

.line 203

invoke-virtual {p0, v1}, Lcom/aclient/MainActivity;->startActivity(Landroid/content/Intent;)V

鉴于程序开始执行之时即会自动打开 Wi-Fi 设置:

.line 364

iget-object v3, p0, Lcom/aclient/MainActivity;->mWifiManager:Landroid/net/wifi/WifiManager;

invoke-virtual {v3, v8}, Landroid/net/wifi/WifiManager;->setWifiEnabled(Z)Z

.line 365

invoke-virtual {p0}, Lcom/aclient/MainActivity;->getWindow()Landroid/view/Window;

move-result-object v3

invoke-virtual {v3}, Landroid/view/Window;->getDecorView()Landroid/view/View;

move-result-object v3

invoke-virtual {v3}, Landroid/view/View;->getWindowToken()Landroid/os/IBinder;

move-result-object v3

invoke-virtual {p0, v3}, Lcom/aclient/MainActivity;->startWifiActivity(Landroid/os/IBinder;)V

.line 364

iget-object v3, p0, Lcom/aclient/MainActivity;->mWifiManager:Landroid/net/wifi/WifiManager;

 

invoke-virtual {v3, v8}, Landroid/net/wifi/WifiManager;->setWifiEnabled(Z)Z

 

.line 365

invoke-virtual {p0}, Lcom/aclient/MainActivity;->getWindow()Landroid/view/Window;

 

move-result-object v3

 

invoke-virtual {v3}, Landroid/view/Window;->getDecorView()Landroid/view/View;

 

move-result-object v3

 

invoke-virtual {v3}, Landroid/view/View;->getWindowToken()Landroid/os/IBinder;

 

move-result-object v3

 

invoke-virtual {p0, v3}, Lcom/aclient/MainActivity;->startWifiActivity(Landroid/os/IBinder;)V

修改按钮对应的代码,将逻辑更改为,使用户点击时可以回到桌面:

.line 200

:cond_0

new-instance v0, Landroid/content/Intent;

const-string v1, "android.intent.action.MAIN"

invoke-direct v0, v1, Landroid/content/Intent;->(LV

.line 202

.local v0, "intent":Landroid/content/Intent;

const-string v1, 'android.intent.category.LAUNCHER'

invoke-virtual v0, v1, Landroid/content/Intent;->addCategory(LLandroid/content/Intent;

.line 203

invoke-virtual {p0, v1}, Lcom/aclient/MainActivity;->startActivity(Landroid/content/Intent;)V

.line 200

:cond_0

new-instance v0, Landroid/content/Intent;

 

const-string v1, "android.intent.action.MAIN"

 

invoke-direct v0, v1, Landroid/content/Intent;->(LV

 

.line 202

.local v0, "intent":Landroid/content/Intent;

const-string v1, 'android.intent.category.LAUNCHER'

 

invoke-virtual v0, v1, Landroid/content/Intent;->addCategory(LLandroid/content/Intent;

 

.line 203

invoke-virtual {p0, v1}, Lcom/aclient/MainActivity;->startActivity(Landroid/content/Intent;)V

如果知道第三方桌面的 apk 对应的软件包名,以及桌面 Activity(大多为 MainActivity),还可进一步创建 Intent 指向第三方桌面,这样可以防止 system/app/JSONClient.apk 对系统桌面选择的劫持,此处只是抛砖引玉。

之后,使用以下命令重新打包:

apktool b JSONClient JSONClient.apk --frame-path framework

在使用 auto-sign 签名后,替换原系统应用,设置权限 0644。同时,删除  system/priv-app/Launcher2.odex ,使用第三方桌面替换 system/priv-app/Launcher2.apk ,同样设置权限 0644。

最后,卸载系统镜像,并将镜像文件刷入 Kindle。

在设备启动后,首先会弹出 Wi-Fi 设置窗口。连接无线网络后返回,点击“验证”按钮,在出现“验证成功,重启中”提示后,继续点击“Wi-Fi”按钮,启动第三方桌面。之后,你可以在设置中强行停止 com.aclient ,并在昔日的泡面神器上感受全新的 Android 体验。

赞赏
没有标签
首页      开发者实验室      绕过KDroid密码验证在Kindle设备运行Android
https://secure.gravatar.com/avatar/75808b309361983b97b9569d75a814e0?s=256&d=mm&r=g

LTDSA

文章作者

一个穷学生,什么都折腾

发表评论

textsms
account_circle
email

  • https://secure.gravatar.com/avatar/5a1fa50f9227ba06919395ed797a94fd?s=80&d=mm&r=g
    uk

    对你使用的破解方法感兴趣,请问能分享么?

    5月前回复
  • https://secure.gravatar.com/avatar/255397f9c533ad1a1c949af5d0f2f483?s=80&d=mm&r=g
    鸿

    你好,请问你的方法能分享么?另外,我看到你的 GitHub 有一个kmiui的项目,不知效果如何啊。

    5月前回复
    • https://secure.gravatar.com/avatar/75808b309361983b97b9569d75a814e0?s=80&d=mm&r=g
      LTDSA博主

      @鸿: 首先谢谢关注,这个项目其实就是Kindle的MIUI,基于MIUI官方的开源项目,您也可以根据MIUI官方文档尝试编译,我最近不是很有空做这个……

      5月前回复
      • https://secure.gravatar.com/avatar/255397f9c533ad1a1c949af5d0f2f483?s=80&d=mm&r=g
        鸿

        @LTDSA: 好吧,谢谢,主要这些东西我不会,刷个机还行,编译什么的我还真没时间折腾,毕竟不是搞这个的,看来只能花钱用kdroid 了。

        5月前回复
  • https://secure.gravatar.com/avatar/f5d8ab5d4fd9ccbde4b65bfb587baa9b?s=80&d=mm&r=g
    一个LT粉

    期待,求最新教程还有资源

    4月前回复
  • https://secure.gravatar.com/avatar/2d8d6700b20ebb554e928f55662d3d75?s=80&d=mm&r=g

    所以怎么破解呢,求赐教 _(:з」∠)_
    (妈耶刚才发错了,发到另一篇下面去了)

    1月前回复
  • https://secure.gravatar.com/avatar/f927febee0552f579fd4c154538a0600?s=80&d=mm&r=g

    Is Requip 1 Safe To Use viagra Buy Dapoxetine Online No Prescription

    3周前回复
  • https://secure.gravatar.com/avatar/5e2bc89d44a7d4be0773c1e60f8010a4?s=80&d=mm&r=g

    Cialis Mode D’Action Viagra Sale In Canada Generic Viagra Review levitra prices Sildenafil Tablet 100mg

    3周前回复
  • https://secure.gravatar.com/avatar/61bf0ef2b7758c3c03c6b0cb7c8cc933?s=80&d=mm&r=g

    Do you mind if I quote a few of your posts as long
    as I provide credit and sources back to your website? My blog site is in the exact same area of interest as yours and my users would
    really benefit from a lot of the information you present here.
    Please let me know if this okay with you. Thank you!

    1周前回复
  • https://secure.gravatar.com/avatar/6a0ff21bd8d654d6e80ff8e5d7180e91?s=80&d=mm&r=g
    野狗

    大神你的破解文章发了吗?发在哪的?

    6天前回复
  • https://secure.gravatar.com/avatar/900be5f7df4f602ea5736076c5c1df8b?s=80&d=mm&r=g
    Xtivce

    generic cialis soft cialis 20 mg

    4天前回复
  • https://secure.gravatar.com/avatar/dde06f30b6eed31c16b88bbd2c324122?s=80&d=mm&r=g
    Otuunt
    4天前回复
  • https://secure.gravatar.com/avatar/a5d14b03fc3786e610ec4d8c234b3e6f?s=80&d=mm&r=g
    Ykpwff

    cialis soft online zoloft 50 mg

    4天前回复
  • https://secure.gravatar.com/avatar/aac31776ad853a41d03cc980b4420dbf?s=80&d=mm&r=g
    Ssthwe

    buy cialis now kamagra online

    3天前回复
  • https://secure.gravatar.com/avatar/a815e0c5eb2fff87d9f1f33ab96da121?s=80&d=mm&r=g
    Wskmjy

    buy cialis buy cialis

    3天前回复
  • https://secure.gravatar.com/avatar/c09bc34c2369bb0a6540a2319a085996?s=80&d=mm&r=g
    Hrmpuc

    xanax pills propecia cost

    3天前回复
  • https://secure.gravatar.com/avatar/14eac5eafac2d906bb75708decac83f0?s=80&d=mm&r=g
    Muljcg

    generic cialis zoloft 50mg

    3天前回复
  • https://secure.gravatar.com/avatar/755d75b0d302686228a2028da68abf20?s=80&d=mm&r=g
    Obpglu

    generic cialis what is fluoxetine

    3天前回复
  • https://secure.gravatar.com/avatar/8cf1a8763c144c1962f900be7567d935?s=80&d=mm&r=g
    Hyjjql

    finasteride zoloft drug

    2天前回复
  • https://secure.gravatar.com/avatar/bc6aa9f7a313396f3e114de6ea302199?s=80&d=mm&r=g
    Aduicj

    cheap cialis kamagra generic

    2天前回复
  • https://secure.gravatar.com/avatar/bbea8cea24cbb7696e3d2db2fd4e8273?s=80&d=mm&r=g
    Ovxtcr

    generic propecia buy paxil

    2天前回复
  • https://secure.gravatar.com/avatar/f507569370d957684cbc6f7d66cc6c19?s=80&d=mm&r=g
    Xmnyfb
    2天前回复
  • https://secure.gravatar.com/avatar/cc0e50d28efa4afd41b6bdfc883de2fe?s=80&d=mm&r=g
    Mdidrt

    order propecia cialis dosage tadalafil online

    17小时前回复
  • https://secure.gravatar.com/avatar/4144cac383e6c6f0a673c221a5c98d84?s=80&d=mm&r=g
    Cygwwq

    sildenafil without a doctor’s prescription sildenafil online buy sertraline online

    14小时前回复

LTDSA

绕过KDroid密码验证在Kindle设备运行Android
文章来自微博@穿越楚,方法未经验证,且这不是我使用的破解方法,我的破解方法即将公开,有兴趣的可以自己尝试。 最近在网上发现了神奇的 KDroid 项目,在 Kindle 设备运行 Android 4.…
扫描二维码继续阅读
2018-10-13
分类目录
文章日程表
2018年十月
    11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  
Born To Be Proud

Born To Be Proud