进行了好长时间的逆向分析这款软件终于有了很大的进展感觉有了很大的收获 [i]
起因是因为这篇文章,
我就想到能不能不HOOK,毕竟一些人的机型并没有root,通过修改app植入代码来代替HOOK的持久化操作,这款软件是有签名检验的,我们重打包一次发现一次发现他会闪退有exit退出finish关闭还有killpoccess进程以及弹窗的出现这里我就不展示了你们可以用算法助手拦截应用退出和闪退看一看,记住这里最好不要手动去签,单纯的拦截退出是没用的,因为这样拍出来的照片是没有照片的真实照片码的,我怀疑是再赋予照片验证码时对签名验证后把签名的md5算法赋值到真实照片码上。接下来上正片!
通过对吾爱大佬的那篇文章的分析我们可以看到他是抓包修改了返回值来修改地点的,加密解密算法没有变但是换了个类的,但是返回值却是发生了变化它并不是单纯的返回一个地点而是返回了多个地点 [i] 这让我猜测他是根据经纬度的相似度自动选取其中一个作为你的定位(当然你也可以手动选择),在后面的分析时也印证了这一点,在这么多位置我不知道该怎么修改时犯了困难, [i] [i] 这是AES/CBC 模式的密钥和iv都一样都是这个xhey-cc4275fd-43,解密的类名换成了这个xhey.com.network.retrofit2.AESUtil.decrypt,我本来想直接在decrypt这个方法逆向植入地址,可是他在后面的调用时间获取时间戳时也用到了这个方法,只能放弃,于是我选择先更改经纬度。
一;我选择了利用mt日志注入来观察经纬度的出现地方,我看了几篇相似的文章发现他们都是通过getLongitude()D和getLatitude()D这两个方法来获取经纬度的,我们日志注入观察了全局的方法,发现com.baidu.location.BDLocation这个类的这两个方法获取了经纬度的,因此我们直接赋值修改就行了 [i] [i] 说一下这个39.56怎么来的, [i] 这个代表的就是39°33分36秒你们再植入经纬度时先把度分秒转化成十进制(转化工具)度然后再你们可以利用这个工具 [i] 把39.56改成16进制,这里注意一下你们转换后后面要加上L要不然不行,还有一点这个返回值是双浮点数,我们不要转错了,就像这样const-wide v0,0x L这样就可以了,你更改完后你会惊奇的发现你的地址发生了变化是你更改后的经纬度地址,这让我明白了软件先获取经纬度然后在对经纬度进行加密向服务器发送数据获得该经纬度的地址,自动选择经纬度最为接近的作为你的地址。
二;高德定位 前面我们讲完了百度定位再讲一下高德定位,同样都是一个方法日志的注入由于文章字数原因就不讲的太多了com.amp.api com.autonavi.api 这些都是高德定位的包名最终我们是在com.amap.api.col.trl.fh$b com.amap.api.location.AMapLocation这两个类的getLongitude()D和getLatitude()D方法获取经纬度的,改的方法一样。
三 时间的修改,当我们系统的时间与软件返回的时间不一样时会有弹窗提醒你两个弹窗不一样已为你自动校正时间 [i] 就像这样子,但是这怎么可能难到聪明的我呢,经过我注入日志的大量分析得到再com.xhey.xcamera.util.bh的a方法负值修改就行了,快没时间写教程了,过程就不分析了,这里补充一下那个返回的加密的时间戳我用小黄鸟fiddler.burp都没抓到,本想着直接禁止掉这条请求的,只能放弃ddms也什么都没有,可是明明算法助手有这条解密就会奇怪, [i] [i] ,我们注意一下这里是时间戳,先去网上找个时间把它转化成时间戳注意要是毫秒,不是的话你就乘上1000,然后转化成16进制,别忘了后面要加上L。最后附上成品图 [i] [i]
可能教程有那些有些错误,纯小白一个请大神指正!因为每个人定位不一样所以没有成品。