然后⽤mt管理器对写出的dex修复⼀下,以能打开查看。
转成java查看,结果也是⼀⽬了然。由上图可知,请求接⼝中url为要解析的链接,time为当前时间戳,然后就是根据url和time⽣成的⼀个签名值。所以只需看看公⽤模块.encode⽅法时如何进⾏签名的。由于现在MT管理器使⽤起来⾮常⽅便,直接选择smali代码后选择跳转即可,或代码搜索调⽤(->)也可以。跳转过去查看,也是发现⾮常的清楚(毕竟是中⽂源码)。
签名算法⼤家应该都能看懂,接下来我直接⽤java实现测试⼀下:
//:ksjx/KSJX.java
package ksjx;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
import utils.Md5Utils;
import utils.Rc4Utils;
public class KSJX {
public static void main(String[] args) throws IOException {
String a ="appjiekou.dizhan666/ShortVideo.php?url=%1$s&time=%2$s&sign=%3$s";        String url ="v.kuaishou/6cczf6";
System.out.println("url = "+ url);
安卓软件签名工具String ts = String.valueOf(System.currentTimeMillis()/1000);
String sign =sign(ts,url);
a = String.format(a, url,ts,sign);
System.out.println(a);
System.out.println(get(a));
}
static String sign(String p1,String p2){
p1 = Md5Utils.md5gbk(p1).toLowerCase();
return p1.substring(0,16)+ _RC4_string(p2,p1)+p1.substring(p1.length()-16); }
static String get(String url) throws IOException {
Request request =new Request.Builder()
.url(url)
.build();
try(Response response =new OkHttpClient().newCall(request).execute()){
return response.body().string();
}
}
}
//:utils/Rc4Utils.java
package utils;
public class Rc4Utils {
public static String decry_RC4(byte[] data, String key){
if(data == null || key == null){
return null;
}
return asString(RC4Base(data, key));
}
public static String decry_RC4(String data, String key){
if(data == null || key == null){
return null;
}
return new String(RC4Base(HexString2Bytes(data), key));
}
public static byte[]encry_RC4_byte(String data, String key){
if(data == null || key == null){
return null;
}
byte b_data[]= Bytes();
return RC4Base(b_data, key);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。