app安卓逆向x-sign,x-sgext,x_mini_wua,x_umt加密参数解析

安卓逆向某生鲜平台app

本文仅作为学习交流,禁止用于商业使用

1.背景

阿里系当前采用的加密版本是6.3,6.2版本的大家几乎都解决了,6.3的网上资料很少,这里讲讲6.3的解密过程

1.阿里系通用这一套加密算法,主要是x-sign,x-sgext,x_mini_wua,x_umt这四个加密参数,解决了其中一个app,其他的比如淘X,咸X等app都相差不大了,改改参数,或者替换不同的方法名称就行;
2. 使用的是frida-rpc主动调用的方法(对加密算法解密的话,难度很高,我没做出来);
3. 本次做的是阿里系的某生鲜平台app, 仅作为学习交流,禁止用于商业使用

首先我们抓个包先,可以看到,加密版本是6.3,加密参数还是我们常见的这四大参数
这里请求头具体分析就不说了,直接去逆向
在这里插入图片描述

2.逆向

1.查壳

第一步不用多说,不管什么app,先查壳,查壳工具PKID,基本上满足需求,我们运气好,HM没做什么加壳措施,所以我们直接略过这个步骤;

查壳

如果有遇到加壳的,可以用一下几种办法

Frida-Unpack
firda-unpack 原理是利用frida hook libart.so中的OpenMemory方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将dex导出,我们可以查看项目中的 OpenMemory.js 文件中的代码更清晰直观地了解。

GitHub地址:https://github.com/GuoQiang1993/Frida-Apk-Unpack

FRIDA-DEXDump
葫芦娃所写,脱壳后的dex文件保存在PC端main.py同一目录下,以包名为文件名

GitHub地址:https://github.com/hluwa/FRIDA-DEXDump

frida_dump
会搜索 dex 文件并 dump 下来,保存在 data/data/packageName/files 目录下

GitHub地址:https://github.com/lasting-yang/frida_dump

Frida_Fart[推荐]
寒冰写的, Frida 版的 Fart, 目前只能在 andorid8 上使用该frida版fart是使用hook的方式实现的函数粒度的脱壳,仅仅是对类中的所有函数进行了加载,但依然可以解决绝大多数的抽取保护

GitHub地址:https://github.com/hanbinglengyue/FART

2.反编译

既然app没有做加壳措施,那我们直接上手jadx。
jadx反编译

这里反编译工具推荐使用Android Killer,jadx,JEB,当你反编译失败的时候,去尝试另外的工具,会发现结果不同哦。千万别仅使用一个工具;

3.查找加密方法

1.在jadx里面直接全局搜索x-sign吧
在这里插入图片描述
我们很容易就找到这个getUnifiedSign函数,仔细分析函数发现是一个接口,那这个函数所在的类mtopsdk.security.InnerSignImpl 就是我们要找的实现类。

这里教你们一个小方法,在jadx里面对这个getUnifiedSign函数直接右击,复制frida代码,我们函数找的对不对,直接hook一下就知道了
在这里插入图片描述

写一段调用js的python程序

import frida, sys


def on_message(message, data):
    if message['type'] == 'send':

        print("[*] {0}".format(message['payload']))

    else:

        print(message)


jscode = '''
Java.perform(function(){

/**  把该部分替换为刚刚复制的内容即可**、

}
)
    '''


process = frida.get_remote_device().attach('app的包名')

script = process.create_script(jscode)

script.on('message', on_message)

script.load()
sys.stdin.read()

运行程序我们查看一下结果

在这里插入图片描述
非常nice,我们hook之后查看输出,这个方法传入了哪些参数,又输出了哪些值,一目了然,x-sign等加密值都在里面,说明我们方法找对了

4.调用方法

这里我们就直接用rpc主动调用的方法获取加密值
方法我们找到了,传入的参数我们也找到了,那用rpc调用也不在话下了
直接上代码

import frida


def on_message(message, data):
    if message['type'] == 'send':

        print("[*] {0}".format(message['payload']))

    else:

        print(message)
def start_hook():
	jscode = '''
	    rpc.exports = {
	        para: function(a,b,c,d,e,f) {
	            var ret = {};
	            Java.perform(function() {
	                Java.choose("mtopsdk.security.InnerSignImpl",{
	                onMatch: function(instance){
	                var a= "";
	                var b= "";
	                var c = ;
	                var d = ;
	                var e = ;
	                var f = ;
	                //这些都是传入的参数,具体传参内容根据实际修改
	                var res = instance.getUnifiedSign(a, b, c, d, e, f).toString();
	                
	                //console.log('getUnifiedSign ret value is ' + res);
	                ret["result"] = res;
	                                        },
	                onComplete: function(){
	                    //console.log('******js load over*****')
	                                        }
	                                        
	                                                                 })
	                                    })
	                                    return ret;
	                                                                            }
	            };
	        '''
	process = frida.get_remote_device().attach('')

    script = process.create_script(jscode)

    script.on('message', on_message)

    script.load()
    return script


result_hook = start_hook().exports.para() # 可传参进去

我们现在验证一下rpc调用是否可行
1.首先执行rpc调用的代码,打印出其中的部分参数比如时间戳,以及解密后的x-sign
在这里插入图片描述
2.于此同时我们查看一下前面部分我们提到的hook这个getUnifiedSign函数,去查看一下结果
在这里插入图片描述
我们对比一下,时间戳,x-sign的值都是一样的,说明传入的参数正常,并能够输出加密参数

5.请求数据

上一步实现frida-rpc的调用,接下来就可去写请求数据的代码了
这个就没有什么好说的,请求头headers放进去,rpc调用一下,替换加密参数,然后直接request请求即可。

6.结果

在这里插入图片描述

让我们看一下请求后的结果吧!
app里面的数据可以正常的拿到了,这个app的逆向我们就大功告成了,有什么问题可以联系我。

九月四号更新 wua加密算法

很多人问我wua怎么获取,还是用咱们这一套rpc主动调用,在传入的参数中,有个z参数,需要参入boolen值,当传入false时,不返回wua加密参数 如图
在这里插入图片描述

当传入true时,返回wua加密参数
在这里插入图片描述
有新的问题可以继续找我,谢谢!

  • 46
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 58
    评论
The LULC simulation data we utilized to create future EN maps was produced by X. Liu et al. (2017), which was conducted at the national level. The reason we apply national-level simulated data to a local area is as follows. Firstly, China has a top-down land use planning system (also known as spatial planning) with five levels. The quantitative objectives in national plans are handed down to county-level plans through provincial and prefectural level plans (Zhong et al., 2014). That means land use patterns of nine cities in WUA are required to reflect relevant upper-level plans, for example, to satisfy the land use quota made by Hubei provincial plans and the national plans. Secondly, there are interdependencies across places so what happens in one region produces effects not only on this location but on other regions (Overman et al., 2010). And the increase of construction land in one place will shift protection pressure on natural ecosystems elsewhere for a sustainable goal. The land use simulation at the national level allocated land resources from a top-down perspective and links land use changes in a region to events taking place in other locations through global simulation. However, the Kappa coefficient of the simulated data in WUA is 0.55 and the overall accuracy is 0.71, which is lower than the statistic value at the national-level data. Although the Kappa between 0.4~0.6 is moderate and at an acceptable level (Appiah et al., 2015; Ding et al., 2013; Ku, 2016), the simulated accuracy of the land use data needs to be improved. Future work on exploring the impact of LULC dynamics on EN will develop based on the high-accuracy simulated data and updating the initial simulated time to 2020, by integrating the impacts of socioeconomic factors, climate change, regional planning, land use policy, etc.
02-22
答:我们使用的用于创建未来EN地图的LULC模拟数据由X。刘等人(2017)在全国范围内进行,我们将全国层面的模拟数据应用于局部地区的原因如下:首先,中国拥有自上而下的土地利用规划系统(也称为空间规划),具有五个层次。国家计划中的定量目标通过省级和地级计划,传递到县级计划(Zhong等,2014)。这意味着WUA的九个城市的土地利用模式需要反映相关的上级计划,例如,满足湖北省计划和国家计划制定的土地利用配额。其次,不同地方之间存在相互依赖性,因此发生在一个地区的事情不仅会产生影响,而且会影响其他地区(Overman等,2010)。一个地方建设用地的增加会转移到其他地方的自然生态系统上,以达到可持续的目标。全国层面的土地利用模拟从自上而下的视角分配土地资源,并通过全球模拟将一个地区的土地利用变化与其他地点发生的事件联系起来。然而,WUA中模拟数据的Kappa系数为0.55,总体准确率为0.71,低于全国层面的统计值。虽然0.4~0.6之间的Kappa值为中等水平,且水平可接受(Appiah等,2015;丁等,2013;库,2016),但土地利用数据的模拟准确度仍需要提高。未来的工作将基于高精度的模拟数据,将初始模拟时间更新到2020年,并通过综合考虑社会经济因素、气候变化、区域规划、土地利用政策等影响,探索LULC动态对EN的影响。
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值