rtx 加密机制_[原创]RTX(腾讯通)本地保存密码TEA变形算法及还原器

[调试逆向]

[原创]RTX(腾讯通)本地保存密码TEA变形算法及还原器

2012-11-11 12:35

16367

[调试逆向]

[原创]RTX(腾讯通)本地保存密码TEA变形算法及还原器

2012-11-11 12:35

16367

上月在研究RTX本地保存密码还原,发现是变形的TEA,伪代码如下:

//TEA test program written by HappyTown   [2006-10-10]

#include

#include

#include "winsock2.h"

#pragma comment(lib,"WS2_32.LIB")

#include "tea.h"

//变形TEADec

void myDecrypt(unsigned char *data,unsigned char *key,unsigned char *out);

//变形TEAEnc

void myEncrypt(unsigned char *data,unsigned char *key,unsigned char *out);

//Ecnrypt

void myEncrypt(unsigned char *data,unsigned char *key,unsigned char *out)

{

int i;

unsigned int y=0,z=0,a,b,c,d;

int        e = 0;

unsigned int sum = 0x61C88647;

//设置y和z

//        printf("%08X\n",*(DWORD*)data);

//        printf("%08X\n",*(DWORD*)(data+4));

y =  ntohl(*(DWORD*)data);

z =  ntohl(*(DWORD*)(data+4));

//        printf("y=%08X z=%08X\n",y,z);

//变形key设置a,b,c,d值

a = ntohl(*(DWORD*)(key+0));

b = ntohl(*(DWORD*)(key+4));

c = ntohl(*(DWORD*)(key+8));

d = ntohl(*(DWORD*)(key+12));

//        printf("a=%08X,b=%08X,c=%08X,d=%08X\n",a,b,c,d);

//        printf("%08X %08X %08X\n",(c+(y<<4)),(d+(y>>5)),(c+(y<<4))^(d+(y>>5)));

//        printf("%08X %08X %08X\n",(delta+y),(delta+y) ^ (c+(y<<4))^(d+(y>>5)),z-((delta+y) ^ (c+(y<<4))^(d+(y>>5))));

//Decrypt

for(i=0; i<16; i++)

{

e -= sum;

y +

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
-原理实现 在上一篇文章中我们,提到了如何获取到sessionkey,如果对此感兴趣的朋友可以自行到[调试逆向]某Qsessionkey查找完整版查看 首先,就是HOOK掉关键传入sessionkey的地方,也就是Common.dll中的Common.oi_symmetry_encrypt2简单的分析一下参数,就可以看到参数中有sessionkey的指针了。 可以说获得了sessionkey基本所有Q的操作我们都可以实现了 简单的分析一下发送的QQ包下面是已经通过sessionkey解的udp数据包 (1) 00000010000000120801120C08 C8A3C3C906 10E30798010008E50F1001220B58 E2D0F3B40D (2) 00000010000000120801120C08 C8A3C3C906 10E30798010008E50F1001220B58 85F99F9103 (3) 00000010000000120801120C08 E2D0F3B40D 10E30798010008E50F1001220B58 C8A3C3C906 (1)和(2)是相同QQ号发送得点赞请求,那么唯一发生变化得就是对方QQ (2)和(3)不同QQ号发送,上面得5字节也发送了变化,那么有理由相信这就是我的QQ号 发送包分析完了,那就得求得加密算法了,QQ转16进制,应该是4字节,而到这里就变成了5字节,那这里一定是加密了,到这里我上网查了一些,没自己分析,就不多bb了,等下下载源码自己看看得了(python中有句话叫不要重复造轮子,确实不想造) 至此感觉,QQ协议不过如此嘛,简简单单,东拼西凑QQ点赞就成了?当然并没有 确实刚做好能点赞,但是当我重新登录得时候,奇怪得事情还是发生了(bug),点赞并没有成功,于是我猜想了一下原因: 原本QQ协议一些参数需要重新获取 源码本身存在问题 已经被tx察觉 发生ip发生了变化 按照这个调bug思路我走了下去,确实问题发生在了ip上 这不就简简单单,内存中搜索一下不就ok了吗?(你看我这臭毛病,总是喜欢自问自答),但是想在QQ中搜到自己想要的数据几乎不可能,于是还是从函数(win32.api)入手吧! 如果想要发送udp的包,那么一定逃不过下面的api ws2_32.dll.sendto ws2_32.dll.WSASendTo 事实上我们的想法确实是有效的,F2下断在参数中我们就找到了指向ip的指针,使用抓包工具,看看ip,确实是这个ip,至此我们要的所有条件就完成了。 下节我们讲如何获取最新的clientkey(也就是快速登录) 基本内容 老版本clientkey如何获取的 简单的抓包即可实现 新版本会遇到什么问题 本地发包验证 解决思路 拦截http请求,断点调试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值