安装逆向实战-抖音极速版(版本问题无法看到视频)rpc | 字符串转unicode编码数组charCodeAt()

目标:分析请求参数中的as、cp、mas的生=生成方式并成功rpc调用。

fiddler抓包并分别对再次请求以及翻页请求的请求url进行文本对比发现上述三个参数为目标参数
用jadx打开apk,用搜索大法进行搜索,单独搜索mas会出现很多结果,小技巧:用"mas(双引和单引是不同的)或者&mas进搜索,缩小搜索范围,得出可疑代码位置

在这里插入图片描述
在这里插入图片描述

组装起来改成rpc格式用rpc调用就完事了
function getBytes(s) {
    
    
    var bytes = [];
    for (var i = 0; i < s.length; i++) {
    
    
        bytes.push(s.charCodeAt(i));
    }
    return bytes;
};

var UserInfo = Java.use('com.ss.android.common.applog.UserInfo')
var i = timestamp
var decode = requestsurl
var my_devices_info = [my_devices_info]
var c2 = deviceid
var str = UserInfo.getUserInfo(i, decode, my_devices_info, c2)
var i2 = str.length()
var i2 = i2/2
var substring = str.substring(0, i2)
var as = substring
var cp = str.substring(i2)


var StcSDKFactory = Java.use('com.ss.sys.ces.out.StcSDKFactory');
var GlobalContext = Java.use('com.ss.android.common.applog.GlobalContext');
var AwemeApplication = Java.use('com.ss.android.ugc.aweme.app.AwemeApplication');
var sdk = StcSDKFactory.getSDK(GlobalContext.getContext(),AwemeApplication.p().m());
var sdk_encode = sdk.encode(getBytes(substring))
var EagleEye = Java.use('com.ss.android.common.applog.EagleEye')
var mas = EagleEye.byteArrayToHexStr(sdk_encode)

java的一些方法的写法

getBytes()

在这里插入图片描述

function getBytes(s) {
        var bytes = [];
            for (var i = 0; i < s.length; i++) {
                bytes.push(s.charCodeAt(i));
            }
        return bytes;
}
java中8>>1是什么意思
  • << 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方
  • '>>右移一位相当于除2,右移n位相当于除以2的n次方
  • '>>>对于正数来说和带符号右移相同,对于负数来说不同
https://www.imooc.com/wenda/detail/426292
substring(a,b)

- 从索引a处往后取b位

猜你喜欢

转载自blog.csdn.net/m0_50685012/article/details/114973001