逆向跟踪了下某雷P2SP Content Distribution的协议中解密函数

char __stdcall sub_21343310(int a1, int a2)
{
unsigned int v2; // ebx@1
char result; // al@2
int v4; // edi@5
signed int v5; // esi@5
int v6; // ecx@7
int v7; // edx@7
int v8; // eax@7
int v9; // ecx@7
char v10; // al@8
char v11; // bl@10
int v12; // [sp+0h] [bp-1D8h]@1
char v13; // [sp+Ch] [bp-1CCh]@5
char v14; // [sp+13Ch] [bp-9Ch]@5
char v15; // [sp+194h] [bp-44h]@5
int v16; // [sp+1A4h] [bp-34h]@5
int v17; // [sp+1A8h] [bp-30h]@5
int v18; // [sp+1ACh] [bp-2Ch]@5
int v19; // [sp+1B0h] [bp-28h]@5
int v20; // [sp+1B4h] [bp-24h]@5
int v21; // [sp+1B8h] [bp-20h]@5
int v22; // [sp+1BCh] [bp-1Ch]@5
int v23; // [sp+1C0h] [bp-18h]@5
void *Memory; // [sp+1C4h] [bp-14h]@5
int *v25; // [sp+1C8h] [bp-10h]@1
int v26; // [sp+1D4h] [bp-4h]@5

v2 = 0;
v25 = &v12;
if ( a1 )
{
if ( (*(_BYTE *)a2 + 4) & 0xF )
{
result = 0;
}
else
{
v4 = operator new();
Memory = (void *)v4;
v26 = 0;
md5_init(&v14);
md5_update(&v14, (const void *)a1, 8u);
md5_finish(&v14, (int)&v15);
aes_init(&v13, 0x10u, &v15);
v16 = 0;
v20 = 0;
v17 = 0;
v21 = 0;
v18 = 0;
v22 = 0;
LOBYTE(v26) = 1;
v5 = 12;
v19 = 0;
v23 = 0;
while ( *(_DWORD *)a2 != v5 )
{
v16 = *(_DWORD *)(v5 + a1);
v17 = *(_DWORD *)(v5 + a1 + 4);
v18 = *(_DWORD *)(v5 + a1 + 8);
v19 = *(_DWORD *)(v5 + a1 + 12);
aes_decrypt(&v13, (int)&v16, (int)&v20);
v6 = v21;
v7 = v2 + v4;
v5 += 16;
v2 += 16;
*(_DWORD *)v7 = v20;
v8 = v22;
*(_DWORD *)(v7 + 4) = v6;
v9 = v23;
*(_DWORD *)(v7 + 8) = v8;
*(_DWORD *)(v7 + 12) = v9;
}
memcpy((void *)(a1 + 12), (const void *)v4, v2);
v10 = *((_BYTE *)Memory + v2 - 1);
if ( v10 <= 0 || v10 > 16 )
{
v11 = 0;
LOBYTE(v26) = 0;
sub_214B2210(&v13);
}
else
{
LOBYTE(v26) = 0;
*(_DWORD *)a2 = v2 - v10 + 12;
v11 = 1;
sub_214B2210(&v13);
}
sub_21572560(Memory);
result = v11;
}
}
else
{
result = 0;
}
return result;
}

参考:

http://hi.baidu.com/vessial/item/75b3f03a18b5a1fe97f88d7c

转载于:https://www.cnblogs.com/moonflow/archive/2012/09/29/2708627.html

加密数据包--加解密部分逆向跟踪相关推荐

  1. xjar加密后运行错误_XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译。...

    XJar Spring Boot JAR 安全加密运行工具,同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或 ...

  2. 解决 IDEA 调用其他类的时候自动加上包路径和类名的情况_惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密...

    前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ❝ ps:日常开发中,我们要有一定的安全 ...

  3. 文件加解密,AIDE入侵检测,扫描与抓包

    加/解密概述 发送方:明文->密文 接收方:密文->明文 加密目的及方式 确保数据的机密性 对称加密:加密/解密用同一个密钥 非对称加密:加密/解密用不同的密钥(公钥.私钥) 保护信息的完 ...

  4. 使用JDK中的安全包对数据进行加解密

    本文以使用DES对称加密算法为例使用jdk对数据进行加密解密. 首先需要了解Provider类,它是jdk引入的密码服务提供者概念,实现了Java安全性的一部分或者全部.Provider 可能实现的服 ...

  5. JS逆向加解密——python 实现AES加解密

    前言 写爬虫项目,做JS逆向或者APP逆向时,经常遇到网站的很多参数都经过AES加密解密,用python实现AES加解密是非常简单的,免去了扣JS代码,并且实现格式固定,所以本文提供实现好的AES加解 ...

  6. 自动加解密请求包响应包插件(autoDecoder)

    之前所立的一个flag:明文传,明文响应:密文传,密文响应 0x01 背景 当数据包里都是密文,我们无从下手:就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要 ...

  7. Java项目安全发布--Jar包(class)加解密实践

    一.背景 有项目需要在客户机器上进行本地部署,这就涉及到自家代码的安全性问题.需要保证以下几点: 代码不能被他人"窃取"(保证源码不可见) 不能通过已有项目复制一份系统出来(即使源 ...

  8. CTF高手教你如何实现文件加解密破解

    0x01 前几日,在公司对客户单位的网站与APP进行授权渗透,在使用用户提供账号登录APP端进行抓包时,发现APP传输包与返回包均进行了加密 bp抓包界面如下: 为破解密文获取请求与传输包中内容,于是 ...

  9. Android金融支付常见加解密算法及安全防护

    引言 因为本人从事的金融 IC 卡和移动支付相关的开发工作,在日常研发过程中,对 APP 信息安全防护方面尤为重视,所以现总结下金融支付相关的加解密算法以及常见的安全防范措施. Android 端常见 ...

最新文章

  1. 以python入门教程新世界-Python打开新世界的大门-入门篇1
  2. httpclient 调取接口_HttpClient调用接口发送文件
  3. python开源爬虫项目违法吗_Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据...
  4. XML学习(二)————属性还是标签?
  5. dede定义全局变量(include/common.inc.php)及调用方式
  6. 苹果悬赏100万美元找漏洞 辞职的理由找到了!
  7. python读取视频占用内存太大_Python 读取大文件内存占用检测示例
  8. Java中condition的用法_java5 Condition用法--实现线程间的通信
  9. 跨域请求/SpringMVC拦截器
  10. 集中式还是分布式?账务类数据库架构的选型
  11. Yii 一些小的问题
  12. 1500ml等于多少l_发动机1.5T、2.0T大概等于多少L?涡轮增压就一定比自然吸气好?...
  13. SQL Server中的日期类型
  14. Node.js IP 库引擎 lib-qqwry v1.3.0 发布,支持命令行下使用
  15. 浅析StackTrace
  16. Unbuntu 出现无法解析或打开软件包的列表或是状态文件的解决办法
  17. kitserver 6.33 完全简体中文版补丁
  18. 谈谈免费的仓库管理软件
  19. 发动机电控系统:T3温度模型标定
  20. 【Uly】团队&团队博客成立典礼~~

热门文章

  1. F. 更改apache端口号
  2. Visual-FoxPro常用命令word版
  3. 50:树中两个结点的最低公共祖先
  4. JavaScript实现输入验证(简单的用户注册)
  5. 【转】蓝牙技术及其系统原理
  6. [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示
  7. 关于页面动态添加控件(转)
  8. Qt-在控件上绘图的方式
  9. TranslateMessage ,GetMessage, DispatchMessage分析
  10. C#实现实体类和XML相互转换