Locus Map 3.38.0+版本修改

Locus Map 3.38.0+版本修改

从3.38.0版本开始,Locus最低支持Andorid版本为 5.0。

Android 5.0版本开始,系统再启动App时会先把所有的dex加载进来,无需再把启动时要用到的class放在第一个dex文件中。

修改方案:

  1. 过签名检查。证数签名hash值为:0x1a222754、-0x100cbe4d、-0x53ad97d7

  2. 增加动态库so。3.38版本安装包没有自带so文件,全部需要从Android Play下载。增加lib目录,把网友分享的armeabi-v7a目录整个拷贝进去。

  3. 删除启动时下载动态库用户界面。
    Locus启动时会做检查判断是否要显示信息提示界面,依次为用户协议、隐私条款、权限申请、登录Play账号下载适合系统的动态库(国产手机无play功能,一般直接显示一个错误码)。
    关键字:“isScreenRequired(), offline checks valid”
    含关键字字符串的类smali文件中:(ZZ)Z签名方法返回false时,不显示下载界面。

    1
    2
    3
    4
    5
    .method public ˏ(ZZ)Z
    .locals 1
    const/4 v0, 0x0
    return v0
    .end method
  4. 过功能限制
    修改com\asamm\locus\utils\Native.smali文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    .method public static isFullFeatured(Landroid/app/Application;)Z
    .locals 1

    const/4 v0, 0x1

    return v0
    .end method

    .method public static native isValid(Landroid/app/Application;)V
    .end method

    .method public static performAction(Landroid/app/Application;Ljava/lang/Runnable;)V
    .locals 1

    new-instance v0, Ljava/lang/Thread;

    invoke-direct {v0, p1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V

    invoke-virtual {v0}, Ljava/lang/Thread;->start()V

    .line 39
    return-void

    .end method
  5. 加载增强功能
    把增强包代码拷贝到最后一个smali_classes目录,在合适的地方加载自己的增强包。

1
2
new-instance v0, Lorg/gyh/bdsearch;
invoke-direct {v0, p0}, Lorg/gyh/bdsearch;-><init>(Landroid/content/Context;)V