xx05电影网静态逆向分析
1 2 网络繁忙的可能性有两种:一可能是未设置延迟造成两个数据提交间隔过快不合理;二是可能缺少一条前置的访问数据。 此app则需要提前访问一条数据解决繁忙问题:(http://m.mapps.m1905.cn/Recommendindex/home)
request 由图 对User/sendVer进行搜索找到如下
1 2 3 4 5 6 7 8 9 10 public void a (String arg7, int arg8) { StringBuilder v1 = new StringBuilder(); v1.append("http://m.mapps.m1905.cn/User/sendVer" ); v1.append("?request=" ); try { v1.append(URLEncoder.encode(aay.b("mobile=" + arg7 + "&templateid=" + arg8), "UTF-8" )); } catch (UnsupportedEncodingException v0) { v0.printStackTrace(); }
进入aay.b后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 public static String b (String arg4) { String v0_2; try { SecretKey v0_1 = SecretKeyFactory.getInstance("DESede" ).generateSecret(new DESedeKeySpec(aay.key.getBytes())); Cipher v1 = Cipher.getInstance("DESede/CBC/PKCS5Padding" ); v1.init(1 , ((Key)v0_1), new IvParameterSpec(aay.iv.getBytes())); v0_2 = aau.a(v1.doFinal(arg4.getBytes())); } catch (Exception v0) { v0_2 = "" ; } return v0_2; }
得知是3DES加密并且获取了key和iv值;对请求链接加密内容jYgPer7AuEo3v%2BQTW6EduEpNaqgpgocriV8lbJ24PdQ%3D进行url解码得到jYgPer7AuEo3v+QTW6EduEpNaqgpgocriV8lbJ24PdQ=,然后再进行des解码
1 2 3 4 5 6 7 8 9 10 11 12 13 function test (data ) { var key = CryptoJS.enc.Utf8.parse("iufles8787rewjk1qkq9dj76" ); var iv = CryptoJS.enc.Utf8.parse("vs0ld7w3" ); var res = CryptoJS.TripleDES.decrypt(data,key,{ iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return res.toString(CryptoJS.enc.Utf8); }
得到mobile=此处手机号&templateid=1
响应文本内容也可用此方法进行解密。
key 搜索key值找到如下
进入方法发现abh.a()是一个md5加密,再进去找abb.c()的值
发现此方法获取的是did的值,于是key的值便是对did+m1905_2014的MD5加密值