Android反编译:手把手教你制作高德地图车机共存版

高德地图车机版

前言

去年年底提了新车,这车什么都好就是自带的高德地图版本太低了,在高德地图已经进入6.x的时代,车机上自带的才4.x,更重要的是不支持升级,从高德官网下载的车机版安装提示签名不同,覆盖安装又没有权限,就很难受,好在高德官方论坛里面有很多大佬都有提供共存版本,非常好用。

但是,作为一个Android开发人员,怎能如此没有追求,当然得自己造一个出来啊。

前期准备

首先需要感谢的是高德地图的APK没有进行加固,这大大减轻了我们反编译的工作量,为此我们需要以下工具:

  1. apktools.jar 用于对apk进行反编译及重新打包 官方地址

    注意:这里的 apktools.jar 不建议使用最新版本,最新版本存在无法恢复打包问题,使用 2.6.0 版本即可。

  2. jadx 用于打开apk文件,查看其中源码 官方地址

由于部分网站可能被墙无法访问,可以选择从我打包好的云盘下载

当然,最后还不能忘了下载 高德地图车机版

最终环境结构如下:

文件结构

反编译流程

反编译获取有效信息

首先第一步就是通过 apktools.jar 工具对官方的apk进行解包;

# 通过 apktools.jar 进行解包
$ java -jar .\apktool_2.6.0.jar d .\AUTO_V6.1.0.600644_release_signed.apk

命令执行后会在当前路径生成一个 AUTO_V6.1.0.600644_release_signed 文件夹,这里面就是apk解包之后的内容,我们后续的修改也是基于这个文件夹

接着将 AUTO_V6.1.0.600644_release_signed.apk 当作压缩文件打开,将其中的 classes.dex 文件解压到当前路径,并通过 dex2jardex 文件转换为 jar 文件

# 将 dex 转换为 jar
$ .\dex2jar-2.0\d2j-dex2jar.bat .\classes.dex

命令执行后会在当前路径生成 classes-dex2jar.jar 文件

修改关键信息

修改包名

要做共存版,最重要的当然是修改应用包名了,打开 .\AUTO_V6.1.0.600644_release_signed\AndroidManifest.xml,第一行里面 package 属性就是包名,改为你自己的包名,注意不要和其它应用重复即可,我这边是在后面加上了.coexist修改为com.autonavi.amapauto.coexist

包名

修改其它配置

仅修改包名并没有结束,除此之外,我们还需要将 AndroidManifest.xml 文件中的所有涉及到权限及内容提供者的原 com.autonavi.amapauto 修改为 com.autonavi.amapauto.coexist

权限
内容提供者

生成APK

重新打包成apk

在对解包后的数据进行修改之后,我们可以再通过 apktools.jar 将文件夹重新打包为 apk

# 重新打包为apk
$ java -jar .\apktool_2.6.0.jar b .\AUTO_V6.1.0.600644_release_signed -o .\AUTO_V6.1.0.600644_coexist_unsigned.apk

执行后会在当前路径生成 AUTO_V6.1.0.600644_coexist_unsigned.apk,这个时候的apk是没有签名的,无法进行安装使用。

重新签名

对于没有签名的apk,可以通过jarsigner -verbose -keystore 【签名文件】-storepass 【签名密码】 -signedjar 【输出APK】 【未签名APK】 【签名别名】进行签名

# 重新签名
$ jarsigner -verbose -keystore .\wj_android.jks -storepass xxxxxx -signedjar .\AUTO_V6.1.0.600644_coexist_signed.apk .\AUTO_V6.1.0.600644_coexist_unsigned.apk xxxxxx

签名完成会在当前路径生成 AUTO_V6.1.0.600644_coexist_signed.apk,这个apk就可以直接进行安装使用了

绕过校验机制

在安装完上面的apk打开后,你会发现根本无法使用,会提示应用出现异常错误

高德地图异常

这个是高德地图启动的时候做了签名相关的校验,我们修改了包名及签名,所以无法通过校验

定位启动界面

定位启动界面其实很简单,还是打开之前的 AndroidManifest.xml 文件,在其中搜索 android.intent.category.LAUNCHER,其所在 Activity 就是启动界面

启动页

然后我们就可以按照这个包路径,在之前界面的文件夹里面找到对应的源文件了,解包出来的代码是smali格式的

SMALI文件

一个简单的类被拆成了这么多,并且对应smali代码我们也不熟悉,更重要的是smali中的中文都被编码了,排查起来更加困难,这个时候 jadx 就派上了用场

定位校验逻辑

打开 jadx 并将AUTO_V6.1.0.600644_release_signed.apk 拖拽到窗口里,我们很快找到启动 Activity 的代码

FILLACTIVITY

在这里我们可以直接搜索错误信息文本

错误信息

我们找到方法 g() 的调用地点

调用地点

根据上面的代码,我们能简单的推断,方法 i() 就是跳转进入导航界面

跳转地图

由此可知关键代码 p90.d(vd.w().e()) 如果返回为 false 则会直接打开地图,否则就会提示异常

校验代码

这里我们在回调解包出来的 smali 代码里,找到 p90 这个文件,找到 d(Context) 这个方法

关键方法

修改校验逻辑

smali 语法和 Java 还是有很大差别的,但是我们不需要精通,对应这个校验方法看上去很复杂,但是我们的需求只不过是让这个方法返回 true 即可,因此修改如下:

修改后方法

修改之后再按照上面 打包APK 的步骤重新打包就能正常使用了。

资源修改

如果你想要给APP修改为不同的名称,不同的图标甚至是替换内部的图片,这些就都很简单了,只需要找到对应的图片、文本资源,直接进行替换就可以了,不需要像修改包名那么复杂

最终效果

来看下安装的最终效果吧

最终效果

文章作者: WangJie0822
文章链接: http://www.wangjie0822.top/posts/5569bb54
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WangJie0822

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容