加密数据包--加解密部分逆向跟踪
逆向跟踪了下某雷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
加密数据包--加解密部分逆向跟踪相关推荐
- xjar加密后运行错误_XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译。...
XJar Spring Boot JAR 安全加密运行工具,同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或 ...
- 解决 IDEA 调用其他类的时候自动加上包路径和类名的情况_惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密...
前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ❝ ps:日常开发中,我们要有一定的安全 ...
- 文件加解密,AIDE入侵检测,扫描与抓包
加/解密概述 发送方:明文->密文 接收方:密文->明文 加密目的及方式 确保数据的机密性 对称加密:加密/解密用同一个密钥 非对称加密:加密/解密用不同的密钥(公钥.私钥) 保护信息的完 ...
- 使用JDK中的安全包对数据进行加解密
本文以使用DES对称加密算法为例使用jdk对数据进行加密解密. 首先需要了解Provider类,它是jdk引入的密码服务提供者概念,实现了Java安全性的一部分或者全部.Provider 可能实现的服 ...
- JS逆向加解密——python 实现AES加解密
前言 写爬虫项目,做JS逆向或者APP逆向时,经常遇到网站的很多参数都经过AES加密解密,用python实现AES加解密是非常简单的,免去了扣JS代码,并且实现格式固定,所以本文提供实现好的AES加解 ...
- 自动加解密请求包响应包插件(autoDecoder)
之前所立的一个flag:明文传,明文响应:密文传,密文响应 0x01 背景 当数据包里都是密文,我们无从下手:就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要 ...
- Java项目安全发布--Jar包(class)加解密实践
一.背景 有项目需要在客户机器上进行本地部署,这就涉及到自家代码的安全性问题.需要保证以下几点: 代码不能被他人"窃取"(保证源码不可见) 不能通过已有项目复制一份系统出来(即使源 ...
- CTF高手教你如何实现文件加解密破解
0x01 前几日,在公司对客户单位的网站与APP进行授权渗透,在使用用户提供账号登录APP端进行抓包时,发现APP传输包与返回包均进行了加密 bp抓包界面如下: 为破解密文获取请求与传输包中内容,于是 ...
- Android金融支付常见加解密算法及安全防护
引言 因为本人从事的金融 IC 卡和移动支付相关的开发工作,在日常研发过程中,对 APP 信息安全防护方面尤为重视,所以现总结下金融支付相关的加解密算法以及常见的安全防范措施. Android 端常见 ...
最新文章
- 以python入门教程新世界-Python打开新世界的大门-入门篇1
- httpclient 调取接口_HttpClient调用接口发送文件
- python开源爬虫项目违法吗_Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据...
- XML学习(二)————属性还是标签?
- dede定义全局变量(include/common.inc.php)及调用方式
- 苹果悬赏100万美元找漏洞 辞职的理由找到了!
- python读取视频占用内存太大_Python 读取大文件内存占用检测示例
- Java中condition的用法_java5 Condition用法--实现线程间的通信
- 跨域请求/SpringMVC拦截器
- 集中式还是分布式?账务类数据库架构的选型
- Yii 一些小的问题
- 1500ml等于多少l_发动机1.5T、2.0T大概等于多少L?涡轮增压就一定比自然吸气好?...
- SQL Server中的日期类型
- Node.js IP 库引擎 lib-qqwry v1.3.0 发布,支持命令行下使用
- 浅析StackTrace
- Unbuntu 出现无法解析或打开软件包的列表或是状态文件的解决办法
- kitserver 6.33 完全简体中文版补丁
- 谈谈免费的仓库管理软件
- 发动机电控系统:T3温度模型标定
- 【Uly】团队&团队博客成立典礼~~