吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19077|回复: 40
收起左侧

[Android 原创] 破解高德SDK实现免key

  [复制链接]
蔡小木 发表于 2016-9-11 12:26
本帖最后由 蔡小木 于 2016-9-11 12:28 编辑

前言
作为一个 Android 开发者,使用定位 SDK 越来越频繁,但是基本上所有的定位 SDK 都需要使用时申请 key ,而且这些 key 又根据签名和包名生成,作为程序员,怎么能忍受这么麻烦的事情,于是就着手想办法解决。至于为什么是高德呢,只是因为不喜欢百度。
准备工具
  • 高德定位SDK最新版 AMap_Location_V2.9.0_20160906.jar
  • Android Studio
  • Java Decompiler
分析过程
高德的定位 SDK 在申请 key 的时候需要的信息包名和 SHA1 码,然后会给我们一个 key ,因此在校验的时候肯定也是这三个条件有:
  • 包名
  • 编译key的SHA1码
  • 申请得到的key
那么如果我们找到高德获取这些信息的入口,申请一个key,然后将这些信息写死在代码中试试能不能做到呢?
接下来我们就来尝试一下
高德的定位 SDK 是一个 jar 包,而jar包是很容易反编译的,首先我们使用 Java Decompiler 来看一下代码结构
看到了什么— APSService ,就是高德让我们在 AndroidManifest.xml 中声明的那个 Service ,说明这个就是高德定位的入口,来看看里面的内容
做过动态加载的人肯定一眼就看出来了,这是一个代{过}{滤}理 Service ,真正运行的是实现了 APSServiceBase 的 Service ,那就需要去寻找实现了 APSServiceBase 的类,反正类不多就一个一个看,就找了到 b.class
在 onBind 方法里面我们看到了关键信息
这个 onBind 是代{过}{滤}理 APSService 的 onBind ,那我们就在 APSService 的 onBind 方法里面打印这些参数,看看分别都是什么,那怎么修改 jar 包呢,其实非常简单, jar 包就是一个 zip 格式的压缩文件,我们只需要解压替换,然后重新压缩就可以了。
修改jar
使用 Android Studio 新建一个 Android Library 的 Module ,包名与  jar 包要修改的类包名相同,新建一个类,与要修改的类名相同
复制反编译出来的 APSService 的内容到我们新建的类中,同时将 SDK 的 jar 包作为这个 Module 的依赖包,保证这个 Module 可以正常编译。其中 onBInd 方法我们修改为以下内容,其中修改后的内容为我们已经在高德官网申请过得 key 信息。
  • 注意:这里 sha1AndPackage 中 SHA1 码与包名中间的冒号为中文冒号,高德真是费尽心机…
    public IBinder onBind(Intent paramIntent) {        try {            String str1 = paramIntent.getStringExtra("apiKey");            String str2 = paramIntent.getStringExtra("packageName");            String str3 = paramIntent.getStringExtra("sha1AndPackage");            String str4 = paramIntent.getStringExtra("as");            Log.i("修改前数据", "apiKey:" + str1 + "\npackageName:" + str2 + "\nsha1AndPackage:" + str3 + "\nas:" + str4);            paramIntent.putExtra("apiKey", "93036c13932aba6eeaee2a02656f14d7");            paramIntent.putExtra("packageName", "com.lge.clock");            paramIntent.putExtra("sha1AndPackage", "FA:AB:F5:02:B2:17:AC:D3:DA:46:38:ED:FF:E3:0C:A3:E4:67:0A:50:com.lge.clock");            str1 = paramIntent.getStringExtra("apiKey");            str2 = paramIntent.getStringExtra("packageName");            str3 = paramIntent.getStringExtra("sha1AndPackage");            str4 = paramIntent.getStringExtra("as");            Log.i("修改后数据", "apiKey:" + str1 + "\npackageName:" + str2 + "\nsha1AndPackage:" + str3 + "\nas:" + str4);            return this.a.onBind(paramIntent);        } catch (Throwable localThrowable) {            c.a(localThrowable, "APSService", "onBind");        }        return null;    }
接下来只需要打包这个 Module 为 jar 包,然后提取出这个类的 class 文件,替换高德 SDK 的 jar 包中对应的 class 文件即可。
Android Studio 如何打包 jar 呢?
我们在这个修改的用来修改的 Module 的 build.gradle 中添加以下代码
task makeJar(type: Copy) {    delete 'build/libs/lib.jar'    from('build/intermediates/bundles/release/')    into('build/libs/')    include('classes.jar')    rename ('classes.jar', 'lib.jar')}makeJar.dependsOn(build)
在工程目录下执行
gradlew makeJar
即可得到 jar 文件
解压 lib.jar 和 高德 SDK 的 jar,使用 lib.jar 中的 APSService.class 替换高德 SDK 中的 APSService.class ,然后将这个文件夹重新压缩成 zip格式 ,然后修改扩展名为 .jar 即可。
测试
使用修改后的 SDK jar 包替换原来的 jar 包进行定位测试,不要忘了在 AndroidManifest.xml 也加上申请好的 key 。
测试结果为可以正常定位,包名和签名可以随意换咯,再也不用麻烦的每次申请 key 啦!
国际惯例
奉上源代码
https://github.com/YiuChoi/CrackAmap[size=0em]

免费评分

参与人数 13威望 +1 热心值 +13 收起 理由
System_ + 1 热心回复!
木天狼星 + 1 热心回复!
GG0 + 1 我很赞同!
临海 + 1 我很赞同!
独行风云 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
weslly1982 + 1 用心讨论,共获提升!
工口大佐 + 1 我很赞同!
Hmily + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qtfreet00 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jike_381143309 + 1 这个叼的一B,虽然我没做这个
jiezi123 + 1 鼓励转贴优秀软件安全工具和文档!
铺路的code泥水 + 1 除了打包不了JAR 其他的我也试了一下
CONAN14217 + 1 虽然不太懂 但是热心必须给

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

aptapt 发表于 2016-9-11 12:35
好像很厉害的样子!支持一下!
2217936322 发表于 2016-9-11 12:41
铺路的code泥水 发表于 2016-9-11 13:08
viply 发表于 2016-9-11 13:10
这个吊,学习下
zhanghao88 发表于 2016-9-11 21:29 来自手机
支持支持     
qtfreet00 发表于 2016-9-11 21:50
用javassit修改相对来说会更简单点
fenggei 发表于 2016-9-11 23:44 来自手机
干货 学习了
风中铃铛 发表于 2016-9-12 08:14 来自手机
收藏收藏
IT_K 发表于 2016-9-12 09:34
好高深  帮顶!!!!!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表