当前位置:网站首页>米斗APP逆向分析
米斗APP逆向分析
2022-08-09 09:19:00 【Codeooo】
- 该app难点就是个360数字壳 : com.touchtv.midou
直接脱壳处理,脱完壳分析dex:
package com.touchtv.internetSDK.network;
hashMap.put("X-ITOUCHTV-Ca-Timestamp", currentTimeMillis + "");
if (str2 == null) {
str4 = str3 + "\n" + str + "\n" + currentTimeMillis + "\n";
} else if (!"".equals(str2)) {
MessageDigest instance = MessageDigest.getInstance("MD5");
str4 = str3 + "\n" + str + "\n" + currentTimeMillis + "\n" + new String(Base64.encodeBase64(instance.digest(str2.getBytes())));
} else {
str4 = str3 + "\n" + str + "\n" + currentTimeMillis + "\n";
}
hashMap.put("X-ITOUCHTV-Ca-Signature", r(str, str4));
时间戳 ,md5 ,64se64 , 还有请求的url ,参数等做了一些操作。
我们重点看下:"X-ITOUCHTV-Ca-Signature“
走了一个r方法:
=======判断x(str)
private static boolean x(String str) {
return str.contains("/baoliaoservice");
}
其除了请求中/baoliaoservice,则秘钥为:bArr = b.c().getBytes();
其余秘钥都为: bArr = b.h().getBytes();
b是导入的:import i.s.b.a.b;、
=============先去找b.c:
public static String b() {
return new String(Base64.decodeBase64("MDE3MzMyMjk5MzU5OTA0NDEwMTY1MjQ4NTc3NDYzNzI=".getBytes()));
}
==============再去找b.h
package i.s.b.a;
import android.text.TextUtils;
import com.touchtv.internetSDK.Environment;
import com.touchtv.internetSDK.TouchtvInternet;
import com.touchtv.internetSDK.network.a;
import org.apache.commons.codec.binary.Base64;
public class b {
public static String a() {
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_QUZHI.value())) {
return f();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_QUJIAN.value())) {
return d();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_TOUCHTV.value())) {
return i();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_MIDOU.value())) {
return b();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_GDSPORT.value())) {
return "";
}
TouchtvInternet.getInstance().getConfig().a().equals(a.ID_COUNTY.value());
return "";
}
public static String b() {
return new String(Base64.decodeBase64("MDE3MzMyMjk5MzU5OTA0NDEwMTY1MjQ4NTc3NDYzNzI=".getBytes()));
}
public static String c() {
return new String(Base64.decodeBase64("T3NpbGdJMFZ6RmNBNGl4MVh4OGNwYU1XM1BWUE9tN1BaWkhMYm1FSjNqUUM5cGs4VTc1T09PdU9NeW14WEtpdA==".getBytes()));
}
public static String d() {
return f();
}
private static String e() {
return g();
}
public static String f() {
return new String(Base64.decodeBase64((TouchtvInternet.getInstance().getConfig().b() == Environment.TEST ? "wNzg0Mzg0ODk4MDc5ODc5MTQ3NDU0Nzk4NzA5NTY0MDY=" : "wNzc1NDMyMjA3NDIxMjM2MzQ0NzA1OTA0MDQwNDMyNzI=").substring(1).getBytes()));
}
private static String g() {
String str = TouchtvInternet.getInstance().getConfig().b() == Environment.TEST ? "kajY3TTBXN2hBbWtDNTFORHYyTTVxWmZpRVE5QnhOaFVaTjhpaDJ4QVRSaTNmUnBKZmE0Y3hUbVdBbnlUaUkwVg==" : "hdjU3eEp4NkJxdWVGOGNPekxVZURGVXd5WWd0M1dDZEFUQWhndks3aGtpeVZGY3lybEF4ZGJUejVNaTVpbFVyUw==";
if (TextUtils.isEmpty(str)) {
return "";
}
return new String(Base64.decodeBase64(str.substring(1, str.length()).getBytes()));
}
public static String h() {
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_QUZHI.value())) {
return g();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_QUJIAN.value())) {
return e();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_TOUCHTV.value())) {
return j();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_MIDOU.value())) {
return c();
}
if (TouchtvInternet.getInstance().getConfig().a().equals(a.ID_GDSPORT.value())) {
return "";
}
TouchtvInternet.getInstance().getConfig().a().equals(a.ID_COUNTY.value());
return "";
}
public static String i() {
return new String(Base64.decodeBase64("MDQwMzkzNjg2NTM1NTQ4NjQxOTQ5MTA2OTEzODk5MjQ=".getBytes()));
}
public static String j() {
return new String(Base64.decodeBase64("cW1pSGVCOWJLZ293SHF4UnYwcHJjMmNQTjJFd1hMMUhPWXUzRFBpWUNjYVl4eXhkRkl5VDVtQWZCbXIwVUtQTw==".getBytes()));
}
}
没啥东西,自己捋一下就都出来了。。。。。。
边栏推荐
猜你喜欢
本体开发日记05-努力理解SWRL(上)
本体开发日记01-Jena配置环境变量
“摄像头用不了”+win8.1+DELL+外置摄像头+USB免驱的解决办法
这12个GIS软件一个比一个好用
Another implementation of lateral view explode
JMeter初探五-配置元件与参数化
Summary of steps and methods for installing and uninstalling test cases that you must read
软件测试流程包括哪些内容?测试方法有哪些?
What does the test plan include?What is the purpose and meaning?
Ontology Development Diary 01-Jena Configuration Environment Variables
随机推荐
MySQL Leak Check (4) Stored Procedures and Cursors
选择黑盒测试用例设计方法的综合策略方案总结
These 12 GIS software are better than the other
MySQL锁
性能测试报告包括哪些内容?模板范文哪里找?看这里
MySQL查漏补缺(四)存储过程和游标
Django实现对数据库数据增删改查(一)
SQL server中的数据类型
游戏测试的概念是什么?测试方法和流程有哪些?
软件测试面试中,面试官问你一些比较“刁难”的问题你会怎么回答
如何用数组实现环形队列
shell 定时监控并处理脚本
单元测试是什么?怎么写?主要测试什么?
运行flutter项目时遇到的问题
性能测试的基本概念是什么?做好性能测试需要掌握哪些知识?
AES/ECB/PKCS5Padding encryption and decryption
接口开发规范及测试工具的使用
MySQL Leak Detection and Filling (2) Sorting and Retrieval, Filtering Data, Fuzzy Query, Regular Expression
接口测试的概念、目的、流程、测试方法有哪些?
二叉树的遍历(非递归)