下载此文档

Android逆向分析案例——某地图定位请求分析.doc


文档分类:研究报告 | 页数:约30页 举报非法文档有奖
1/30
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/30 下载此文档
文档列表 文档介绍
Android逆向分析案例——某地图的定位请求分析
微信里面有个“附近的人",相信大家都知道,大概的原理就是调用腾讯地图的sdk进行定位,然后把个人的定位信息发到微信服务器上进行处理,再把一定范围内的人的信息返回并用列表的形式显示出来。
因为刚踏入逆向分析这行,所以抱着学****的态度,研究一下大公司的东西,涨一下知识,嗯,本次的案例就是分析腾讯地图中定位请求数据的加解密,以及搭建简易的APK模拟实现定位请求。
为了分析这一案例,是要掌握一定的分析工具的,其中包括APKTOOL, Sublime-Text, Xposed框架,Wireshark等。
嗯,作为分析笔记,我就不细说了,只是将分析的步骤一步步地列举出来。
首先,下载微信APK,利用APKTOOL在DOS下敲命令生成smali文件夹,这个过程我就不说了,前面博客已介绍过APKTOOL的使用方法。对于初学者来说,他们喜欢看到直接明了的源代码,所以他们会喜欢用dex2jar去反编译,并利用jd-gui去查看代码,包括我当初也是如此,但现在我为什么不用dex2jar和jd-gui去分析呢?再往下看看
然后用smali文件查看工具Sublime—Text 3打开其刚刚生成的smali文件夹,如下图:
嗯,反编译出来的文件数量令人感到窒息的,是不是有点感到逆向分析的痛苦了?要在如此多的smali文件里找到对应的类,并定位到关键的代码,这是需要一定的技巧的,,这货混淆得太好了,里面的可读性非常差,而且通过smali可以看到代码是有一定的复杂性的,特别多goto语句,所以如果用jd—gui浏览代码的话,是很不准确的,而且有一些内部类jd-gui是不会显示出来的等等。。。总而言之,smali的表达基本是正确的,但jd-gui转变过程并没有那么智能,所以jd-gui所表达的信息很大程度是错的,只能辅助用,不能依赖。
既然我们要找的是地图地位请求,那么肯定涉及到网络,那么又怎么能少了抓包过程呢?好,进入微信,打开wireshark,在点击“附近的人”按钮同时观察wireshark抓到的包,,如下图:
接着,我们右键打开选项,并选择“追踪流",查看Http请求数据的TCP流,并尝试去从请求中找到关键字符串:
可以从抓到的包看到,在请求行和请求头中有我们想要的关键字符串,至于请求体就不用细看了,已被加密过,但我们的目的就是要分析其加解密原理。
SO,接下来一步就是通过关键字符串,在码海中定位到关键的代码.
先回到刚才用Sublime-Text打开smali文件夹的界面,在界面中找到ct包(包名已被混淆,实际就是集成地图sdk的jar包),在该包下的所有smali文件查找刚才抓包的关键字符串,这里只用了“/loc?c=1&mars=0&obs=1”中的“mars”进行查找。
我们可以看到,在搜索结果里找到了该字符串在哪里被调用了,很好,,那么我们找到br。smali文件,并打开它:
然后,可以看到字符串是在br。smali中的a(II)方法中调用的,那么我们就继续顺藤摸瓜~根据smali语法,构造搜索字符串“Lct/br;->a(II)”, 通过这个字符串,我们可以利用Find in Floder的搜索功能,知道在哪里调用了这个函数:
不错,已经找到了核心文件bz。smali,我就先说了吧,该类有两个内部类一个bz$1,另一个bz$a(美元符号代表内部类),bz$1是一个继承了Runnable的一个线程类,bz$a就是一个封装数据的类,包括加密后的数据和请求地址。
因为我们是要找到加解密的原理,所以在找关键代码的时候,要多留心带有String类,和byte[]数组参数的函数,这些往往就是我们的Target~
so,不妨大致浏览一下bz。smali里涉及到String和byte[]的函数:
看到红色圈出来的代码了吗,,1:String为数据明文 ,   2。 3:明文。getBytes("gbk”)得到byte[], 4:b$a类的a方法,该方法就是利用Java中的DeflaterOutputStream压缩处理,  5:将压缩后的byte[]作为参数放到 bz类的a方法中处理,该方法内还调用了so库的本地方法进行异或加密,这个后面会说明, 6:初始化一个bz$a类,该类封装了加密后的数据byte[]和地址String。
当初始化bz$a类后,它会被压进一个LinkedBlockingQueue队列中,即调用其offer方法;然后在bz$1线程类,再次take出来,将其by

Android逆向分析案例——某地图定位请求分析 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数30
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sanshenglu2
  • 文件大小642 KB
  • 时间2021-01-22