綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[攻略] Android GPS 自宮寶典

   關閉 [複製連結] 查看: 123138|回覆: 242|好評: 0
161
ta05107 | 收聽TA | 只看該作者
發表於 2020-11-30 19:17
alecchangboy 發表於 2020-11-29 21:06
可以正常使用
非常感謝A大幫改全自動阻斷~~

請問2位A大:
安卓10一定要刷Magisk才能飛嗎?
有沒有不刷Magisk也能飛的方法?

點評

不必... 就算 cts profile 沒過也可以進入遊戲  發表於 2020-11-30 19:35
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

162
jiu0922 | 收聽TA | 只看該作者
發表於 2020-11-30 20:05
A大,到了安卓10,動態分區不讓修改,讓我們摸不到邊,magisk就成了唯一,您能高人指點麼?

點評

如果硬是要修改 system 分區中的任一檔, 直接線刷檔的 system.img 進行改造, 改完後 fastboot 寫入, vbmeta 的驗證也要一並處理修改, 以上是我的 idea  發表於 2020-11-30 20:32
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

163
jiu0922 | 收聽TA | 只看該作者
發表於 2020-11-30 22:40
jiu0922 發表於 2020-11-30 20:05
A大,到了安卓10,動態分區不讓修改,讓我們摸不到邊,magisk就成了唯一,您能高人指點麼? ...

雖看似明白,就是不懂得修改...不過還是感謝A大的回答,讓大家有個方向。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

164
 樓主| amjads1975 | 收聽TA | 只看該作者
發表於 2020-12-1 17:27
本帖最後由 amjads1975 於 2020-12-1 19:08 編輯

以前 android 4 時代常常去 needrom 抓它牌手機的線刷檔來移植, 解包是工作的第一道程序, 改完後再打包回刷... 不管是以前還是現在, 第三方作包的方法大體都是一致, 只是格式變得多樣

評分

參與人數 4碎鑽 +4 幫助 +4 收起 理由
kuanjin + 1 + 1 非常讃
3DLuke + 1 + 1 非常讃
jiu0922 + 1 + 1 非常讃
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

165
imkevin | 收聽TA | 只看該作者
發表於 2020-12-12 19:29
請問大大們 紅米 Redmi Note 9 Pro 可用嗎? 好像開賣了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

166
padfone_chao | 收聽TA | 只看該作者
發表於 2020-12-26 16:40
本帖最後由 padfone_chao 於 2021-1-13 08:47 編輯
amjads1975 發表於 2020-11-29 17:39
Redmi Note 8 Pro - Global Stable ROM

MIUI 12 (V12.0.5.0.QGGMIXM)

Dear A大,

依照您修改的「全自動阻斷」services.jar 解開比對原版檔案,應該是修改2個檔,GnssLocationProvider.smali、MockProvider.smali。

雖然我是 MIUI 11但是與 MIUI 12的 services/smali/com/android/server/location 底下 208個檔仍然一樣。
修改上面說的兩個檔,編譯成 dex 執行免阻斷沒問題,拿華碩 ROG2(I001 Android 10 我兒子的)改後免阻斷也是沒問題。
但是者兩個機子都有不能瞬回的問題,就是 GPS Joystick 停止飛人應該就要回實際現地位置,但是等了 20幾分鐘就是不會回來。

在 GnssLocationProvider.smali 中,您定義兩個新的 method
.method public static fneodscpbga()V   (應該是傳回 0x1)
.method public static hfgfeodscpbga()V (應該是傳回 0x0)

hfgfeodscpbga() 在MockProvider.smali 有運用到,在 .method public setLocation(Landroid/location/Location;)V 中的

iget-object v0, p0, Lcom/android/server/location/MockProvider;->mLocation:Landroid/location/Location;

invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->hfgfeodscpbga()V  <--- 這是新加上的

const/4 v1, 0x0   <--- 原本為 0x1 (這在 Android 9也是如此改法)

invoke-virtual {v0, v1}, Landroid/location/Location;->setIsFromMockProvider(Z)V

找遍整個 location目錄中除了 GnssLocationProvider.smali 檔的其他檔案,都沒有運用到 fneodscpbga() 這個 method。
還是我漏掉哪個部分,請撥冗不吝教導,不勝感激,謝謝。

附上 Asus ROG2 與 Redmi Note Pro 8 MiUI 11 android 10 的 services.jar

RMN8P-11.0.5.0.QGGMIXM-services.jar

5.99 MB, 下載次數: 5, 下載積分: 碎鑽 -1 個

Asus_Z012D-WW-15.0410.1807.75-services.jar

3.7 MB, 下載次數: 16, 下載積分: 碎鑽 -1 個

ASUS_I001_1-ASUS-17.0240.2012.65services.jar

5.7 MB, 下載次數: 0, 下載積分: 碎鑽 -1 個

點評

自宮寶典要用電腦改有點跟不上時代, 正準備寫一篇吸星大法, 手機 ota 更新 rom 後直接在手機上改, 不用幾分鐘時間完成免阻斷飛人, 簡單易懂人人改得  發表於 2020-12-26 18:09

評分

參與人數 4碎鑽 +4 幫助 +4 收起 理由
ta05107 + 1 + 1 非常讃
3DLuke + 1 + 1 非常讃
alecchangboy + 1 + 1 非常讃
kuanjin + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

167
padfone_chao | 收聽TA | 只看該作者
發表於 2020-12-26 19:17
本帖最後由 padfone_chao 於 2020-12-26 19:55 編輯
amjads1975 發表於 2020-11-29 17:39
Redmi Note 8 Pro - Global Stable ROM

MIUI 12 (V12.0.5.0.QGGMIXM)
padfone_chao :
Dear A大,
依照您修改的「全自動阻斷」services.jar 解開比對原版檔案,應該是修改2個檔,GnssLocationProvider.smali、MockProvider.smali。

amjads1975:
自宮寶典要用電腦改有點跟不上時代, 正準備寫一篇吸星大法, 手機 ota 更新 rom 後直接在手機上改, 不用幾分鐘時間完成免阻斷飛人, 簡單易懂人人改得  發表於 2020-12-26 18:09

感謝 A大!!!

我還在想就算解決瞬回問題,不知道要如何分享「全自動阻斷」作法,比起以前自宮阻斷複雜多了,還很容易成磚。
總是要靠一些像是 Magisk Manager fo Recovery Mode 等外掛救回來,偏偏又不怎麼親合方便。A大您的思維總是最先進,一指神功方便又簡單。


感謝 A大,APK.TW 有您真好!!!!

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

168
padfone_chao | 收聽TA | 只看該作者
發表於 2020-12-26 19:41
本帖最後由 padfone_chao 於 2020-12-26 20:27 編輯
amjads1975 發表於 2020-11-29 17:39
Redmi Note 8 Pro - Global Stable ROM

MIUI 12 (V12.0.5.0.QGGMIXM)
amjads1975:
自宮寶典要用電腦改有點跟不上時代, 正準備寫一篇吸星大法, 手機 ota 更新 rom 後直接在手機上改, 不用幾分鐘時間完成免阻斷飛人, 簡單易懂人人改得  發表於 2020-12-26 18:09

Dear A大,

另外,能否撥冗提點 fneodscpbga() 如何編寫。
我沒寫完作業,心理很癢耶。
謝謝。


抱歉,我的粗心,忘了 services/smali/com/android/server/LocationManagerService.smali 這一階這麼重要的程式。
把 fneodscpbga() 補上去就可以了。

在 A大的 「吸星大法」出來前,我整理一下就野人獻曝分享心得,請大家包涵了。

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

169
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-7 01:15
本帖最後由 padfone_chao 於 2021-1-7 01:30 編輯

Dear A大,

我比對您修改「全自動阻斷」與原版 services.jar 從 services/smali/com/android/server/ 所有目錄幾千個檔案發現應該更動就是與 GPS 有關的 3個主要檔案。

以下是我修改的心得,目前有一直在我手上的紅米 Redme Note 8 Pro (MIUI 11版本),以及剛搶便宜買來就改的台版 Realme X50 Pro 版本,這兩個機子也快1個禮拜,似乎也還算正常。
因為我沒有 java debug 工具,只能以最笨的方式比對法找出原始與改過的檔,找出相異處,嘗試修改,也勞您撥冗看有哪些我疏漏或錯誤地方,以及不吝指導,不勝感激。

另外「全自動阻斷」功能對我很重要,每次開車導航時,我都要切換非飛人模式,必須重開機。
這讓我全家人都要等待這無奈的時間,希望我能改得像您一樣完善及方便。

(貼文後我發現版面都跑掉了,再附上符合原程式本文的文字檔比要好閱覽。)
===================================================================
services/smali/com/android/server/LocationManagerService.smali 改法
===================================================================


找到下列 method 之中
.method private onUidImportanceChangedLocked(II)V

再找下列2行 (差不多在 line 661,誤差 300 多行是可容許的,究竟版本就是不同的關係)

    .end local v4    # "record":Lcom/android/server/LocationManagerService$UpdateRecord;
    :cond_1

將之後
    goto :goto_1
改成
    goto/16 :goto_1
---------------------------------------------
找到下列 method 之中
.method public addTestProvider(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;Ljava/lang/String;)V


再找下列2行 (差不多在 line 3754)
    .end local v1    # "identity":J
    monitor-exit v0

之後加上

    invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->hfgfeodscpbga()V

--------------------------------------------
找到下列 method 之中
.method public removeTestProvider(Ljava/lang/String;Ljava/lang/String;)V

再找下列2字串 (差不多在 line 3788)
    :try_end_2
    .catchall {:try_start_2 .. :try_end_2} :catchall_1

之後加上
    invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->fneodscpbga()V

============================================================================
servicessmalicomandroidserverlocationGnssLocationProvider.smali 改法
============================================================================

首先在靜態定義區 fields
# static fields

最後加上
.field public static final magbpcs:Z

-------------------------------
之後都是 methods

# direct methods

找到下列 method 之中
.method static constructor <clinit>()V

再找下列字串
sput-object v0, Lcom/android/server/location/GnssLocationProvider;->PROPERTIES:Lcom/android/internal/location/ProviderProperties;

底下加上2列字串
    const/4 v5, 0x1

    sput-boolean v5, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

------------------------
再找到下列 method 之後
.method private deleteAidingData(Landroid/os/Bundle;)V
(一定要在下列字串之後)
.end method

加上新的 method
.method public static fneodscpbga()V
    .locals 1

    .prologue
    const/4 v0, 0x1

    sput-boolean v0, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

    return-void
.end method

---------------------------
找到下列 method 之中
.method private handleReportSvStatus(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)V

再找下列字串,如果找不著,這個 method 就不用改了。
    invoke-direct {v0, v2}, Lcom/android/server/location/GnssLocationProvider;->addToBugreport(Ljava/lang/String;)V

之後的
    goto :goto_5

改成
    goto/16 :goto_5

--------------------------------
再找到下列 method 之後
.method private handleSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
(一定要在下列字串之後)
.end method

加上新的 method
.method public static hfgfeodscpbga()V
    .locals 1

    .prologue
    const/4 v0, 0x0

    sput-boolean v0, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

    return-void
.end method

------------------------------------
再找到下列 method 之中

.method private reportLocation(ZLandroid/location/Location;)V

找下列字串
    .locals 1
改成
    .locals 2

再找下列字串
    .param p2, "location"    # Landroid/location/Location;
之後加上

    sget-boolean v1, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

    if-eqz v1, :cond_0

再找下列字串
    invoke-direct {p0, v0, p1, p2}, Lcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V

之後加上

    :cond_0



=================================================
MockProvider.smali 改法
=================================================

找到下列 method 之中
.method public setLocation(Landroid/location/Location;)V

找下列字串的的第2次
    iget-object v0, p0, Lcom/android/server/location/MockProvider;->mLocation:Landroid/location/Location;

之後加上
    invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->hfgfeodscpbga()V

並將下列字串
    const/4 v1, 0x1
改成
    const/4 v1, 0x0

全自動修改(2).txt (4.42 KB, 下載次數: 16)

點評

改 2 個字母就有人搞不定, 你確定要大改特改? 朝精簡改法才是市場需求  發表於 2021-1-7 05:36

評分

參與人數 2碎鑽 +2 幫助 +2 收起 理由
ta05107 + 1 + 1 非常讃
alecchangboy + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

170
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-8 23:24

RE: Android GPS 自宮寶典

padfone_chao 發表於 2021-1-7 01:15
Dear A大,

我比對您修改「全自動阻斷」與原版 services.jar 從 services/smali/com/android/ ...


"amjads1975 wrote:
改 2 個字母就有人搞不定, 你確定要大改特改? 朝精簡改法才是市場需求  發表於 2021-1-7 05:36"
就是我要滿足求學上進心嘛。

非常期待 a大您的「吸星大法」,是否如此我們不只可以將修改版 services.jar 編入 FOTA的 system.img,其實也可以將 GPS Joystick 甚至「地圖趴趴走」也塞進去?

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則