美拍apk
分析sig的算法

一:fiddler抓包
GET
https://newapi.meipai.com/common/online_switch.json?device_system_version=4.4.2&language=zh-Hans&client_id=1089857302&device_id=866571024961545&version=4500&channel=m9&model=2014501&locale=1&sig=4b2859d0871718b76838733da9c1a1e9&sigVersion=1.0
HTTP/1.1

二:AndroidKiller 反编译 搜关键字
“sig”
三:静态分析java

paramak.a(“sig”, paramString.sig);
追踪到这
paramString = SigEntity.generatorSig((String)localObject, arrayOfString);
追踪到这
public static SigEntity generatorSig(String paramString, String[] paramArrayOfString)
{
byte[][] arrayOfByte = new byte[paramArrayOfString.length][];
for (int i = 0; i < paramArrayOfString.length; i++) {
arrayOfByte[i] = paramArrayOfString[i].getBytes();
}
return nativeGeneratorSig(paramString, arrayOfByte);
}
追踪到这
public static native SigEntity nativeGeneratorSig(String paramString, byte[][] paramArrayOfByte);

算法在 native层 nativeGeneratorSig 这个函数

static
{
System.loadLibrary(“sigWithoutTime”); //在这个so库里
}

四:静态分析so
apk里提取 libsigWithoutTime.so 到IDA中分析
定位到nativeGeneratorSig 函数 里分析

GeneratorSIG((int)&v28, (int)&v32, (int)&v25, (int)&v26, (int)&v27); 看着函数名就可疑进入分析下
MD5_Calculate(v16, *((_DWORD *)v16 - 3), &v17); MD5计算 看着函数名就差不多确定是这了 进入分析下
MD5_Init(&v10);
MD5_Update(&v10, v4, v3);
MD5_Final(&v10, v9);
v6 = 0;
do
{
sprintf(v5, “%x”, (unsigned int)(unsigned __int8)v9[v6] >> 4);
v7 = v9[v6++] & 0xF;
result = sprintf(v5 + 1, “%x”, v7);
v5 += 2;
}
while ( v6 != 16 );
if ( v11 != _stack_chk_guard )
_stack_chk_fail(result);
return result;

静态分析so到这

五:动态调试so

BL _Z10MD5_UpdateP10MD5ContextPhj

libsigWithoutTime.so:62359F1A LDR R2, [SP,#0x88+var_1C]
下断点
前个断点 是分析 传入参数的值
后个断点是 分析加密后 的结果
前个值R1寄存器值为
common/hot_banners.json1108985730220145014500866571024961545m9zh-Hansbdaefd747c7d594f
后个值R1寄存器值为
c83e2180feb8af70e441b55da36fb0a4
运行后发包 捕获的数据为
https://newapi.meipai.com/
common/hot_banners.json?
client_id=1089857302
&version=4500
&language=zh-Hans&device_id=866571024961545
&channel=m9
&model=2014501
&locale=1
&sig=8ce31208ef8bfa074e145bd53af60b4a
&sigVersion=1.0

对比可以看出来 加密参数值是 由各个参数值按照一定的排列方式 组合的
加密后得到MD5值 最后还进行了一下变形排序 再作为sig值 发出去的

美拍sig算法so分析相关推荐

  1. Yolov1目标检测算法详细分析

    Yolov1目标检测算法详细分析 Yolov1介绍 这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字: ...

  2. Nature Methods:Rob Knight发布Striped UniFrac算法轻松分析微生物组大数据

    Striped UniFrac微生物组大尺度分析算法 Striped UniFrac: enabling microbiome analysis at unprecedented scale Natu ...

  3. 非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)...

    非变动性算法代码分析与示例: 一.for_each C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14   // TEMPLATE FUNCTION for_each ...

  4. 背景建模--Vibe 算法优缺点分析

    背景建模--Vibe 算法优缺点分析 一.Vibe 算法的优点 Vibe背景建模为运动目标检测研究邻域开拓了新思路,是一种新颖.快速及有效的运动目标检测算法.其优点有以下两点: 1.思想简单,易于实现 ...

  5. 【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )

    文章目录 一.时间复杂度时间单位 二.算法分析 三.算法复杂性分析 一.时间复杂度时间单位 图灵机计算时间 是根据 步数 进行定义的 , 图灵机走 111 步 , 时间加一 , 每一步的时间可能不一致 ...

  6. 贪心、递归、递推以及动态规划算法的分析与对比

    PS:   头一次规规矩矩的按照论文的格式写文章,呵呵.虽然是小儿科的不能再小儿科的东西了..不过..也忽悠了6000多字~~嘿嘿..肯定写的不好,第一次嘛..所以..接受大家一切批评哈!...文章N ...

  7. 银行家算法的分析与实现

    文章目录 1 银行家算法的分析与实现 1 银行家算法的分析与实现 问题描述: 研究一个银行家如何将总数一定的资金,安全的借给若干个顾客,使顾客既能满足对资金的需求,也使银行家可以收回自己的全部资金,不 ...

  8. Gradient Boost 算法流程分析

    Gradient Boost 算法流程分析 2012-10-31 19:57 2635人阅读 评论(0) 收藏 举报  分类: 算法学习(15)  版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  9. 算法时间复杂度分析基础

    摘要       本文论述了在算法分析领域一个重要问题--时间复杂度分析的基础内容.本文将首先明确时间复杂度的意义,而后以形式化方式论述其在数学上的定义及相关推导.从而帮助大家从本质上认清这个概念. ...

最新文章

  1. 公共的service接口
  2. python celery多worker、多队列、定时任务
  3. 剑指Offer-求1+2+3+...+n
  4. Spring 框架核心概念IoC 随笔
  5. 【贪心】Stall Reservations(luogu 2859/poj 3190)
  6. linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )
  7. java jtable刷新_java-单击按钮更新JTable
  8. hbase 客户端_读《HBase权威指南》 客户端API:基础知识
  9. 多出20倍?Android 收集用户数据量远超 iPhone
  10. 五款实用的微信小程序(免费证件照)
  11. idea properties中文乱码uncode转中文
  12. MODIFY STRUCTURE和ALTER TABLE的区别?
  13. 2018 -0524 STM32计时器中断
  14. windows设备管理器_如何打开Windows设备管理器?
  15. Elasticsearch(三) Python 使用 elasticsearch 的基本操作
  16. css三个块元素重叠,CSS盒模型以及如何解决边距重叠问题
  17. 《神经科学:探索脑》学习笔记(第13章 运动的脊髓控制)
  18. P4961 小埋与扫雷
  19. [zz]busycai的找工之路
  20. SCU软件设计与体系结构第三次测试试卷

热门文章

  1. 10-集合(核心类库)
  2. k3s 部署nacos-server:v2.1.1-slim
  3. 自适应网站与非自适应有什么不同
  4. 浪涌抑制专题-半导体放电管tss介绍
  5. 专科毕业学习python有前途吗_专科生学IT有前途吗?
  6. 调试JavaScript/VB Script脚本程序(Wscript篇)
  7. 拥抱夏天的方式有很多,来这12处避暑凉爽整个夏天
  8. 《赢在中国-蓝天碧水间》观后感
  9. BiometricPrompt之七 - Android R AuthBiometricView BiometricDialogView无法消失解决方案
  10. 关于Linux下病毒的话题