首页
社区
课程
招聘
[求助]关于C++XXTEA加密的问题,大大们麻烦进来看一下,纠结好几天了
发表于: 2016-9-30 11:34 4603

[求助]关于C++XXTEA加密的问题,大大们麻烦进来看一下,纠结好几天了

2016-9-30 11:34
4603
最近逆向了一个apk, 加密是放在so里面的, 然后我逆向原生得知了他的加密方式是通过XXTEA加密的,然后就到就开始到网上查加密算法, 网上找的xxtea源码如下:
#define DELTA 0x9e3779b9
#define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^ z)))

void btea(uint32_t *v, int n, uint32_t const key[4]) {
        uint32_t y, z, sum;
        unsigned p, rounds, e;
        if (n > 1) {          /* Coding Part */
                rounds = 6 + 52 / n;
                sum = 0;
                z = v[n - 1];
                do {
                        sum += DELTA;
                        e = (sum >> 2) & 3;
                        for (p = 0; p < n - 1; p++) {
                                y = v[p + 1];
                                z = v

+= MX;
                        }
                        y = v[0];
                        z = v[n - 1] += MX;
                } while (--rounds);
        }
        else if (n < -1) {  /* Decoding Part */
                n = -n;
                rounds = 6 + 52 / n;
                sum = rounds*DELTA;
                y = v[0];
                do {
                        e = (sum >> 2) & 3;
                        for (p = n - 1; p > 0; p--) {
                                z = v[p - 1];
                                y = v

-= MX;
                        }
                        z = v[n - 1];
                        y = v[0] -= MX;
                        sum -= DELTA;
                } while (--rounds);
        }
}

机密数据:_memberid=0&_did=3061490255eb09d277b768a99848314f&_dname=Xiaomi&_language=zh&_version=22&_appversion=1.3.5&_model=HM 1SC&_appid=21&_maid=8c:be:be:da:21:fc&_from=baidu&_devicetoken=979bcccf35b593327bc21e9de79628ee&_network=5&_width=720&_height=1280&_lon=0.0&_lat=0.0&_sdkid=0&_systemtype=android&_pkgname=tv.xiaoka.live&_signcode=1849239648
密匙:%2#&(0EoF&O^D
机密结果(这个是通过网上在线加密获得,是正确的):gcGhOU3Noyjlawxhe23ShOaIH4SaE7n1jhQjEPMpFzZQLuOJxJF2fWby-09nVDtqBv_i_INqmiOt7_cur6JNli-yvl45fheunMTzn5sRFaMypACbxxVHKjt8_H-vTcaGRgHnOToq1F7rhKDRdFtbxFjRaBhBoWP6mNebbRLwcDBnGqbW5i73ikDw_LSEhyfbEGlyBfS9l4XcEaJe8AJXskAODLUJzTz75gfCI5ihGvYQ6Eeu3CGftTpuPI3ZO7l4-VC72Zp1xcan1ehBHUtUFOwILWlP0hLo1t8Tu3-1c3J06MoS3DRF6UnPq9TQ6LpPi9VBlqRQhN3ZgUUl3EcPL24eyEutDgiVf_3HLubroXZAcAKVr5QIRmLOSxwyR_uIOOTPuTQ5gp6h1iqhIFSV4d34pLRwxp7N3S6SVGdMgFnDcbYJxMqU-OjGAwPWkQn35RCsIqomD68.

现在遇到的问题就是, c++的那个方法我要怎么调用呢?  毕竟我的加密数据是string类型的, 但是他三个参数都是int的。
大大们 纠结了几天了, 帮我看一下 小弟在此谢过。

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费
支持
分享
最新回复 (7)
雪    币: 393
活跃值: (224)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
2
uint32_t *v 是个指针,而且在下面代码也可以看到是当一个数组使用的
2016-9-30 11:48
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
恩 那我要把string传进去 我要怎么做呢?
2016-9-30 14:25
0
雪    币: 16711
活跃值: (2783)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
4
用你这个我加密不出你的效果, 可能是传的参数或者哪里有问题. 懒得单步调试了.- -, 上github搜了一个, 加密正确
https://github.com/xxtea/xxtea-c
2016-9-30 14:44
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
大大,我把那他代码下下来了,  然后一个一个的复制到一个项目里面  加密的结果不一样呀、
2016-9-30 17:29
0
雪    币: 393
活跃值: (224)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
6
你看不懂代码?那我也没办法 我当不了全职大保姆
2016-9-30 17:36
0
雪    币: 16711
活跃值: (2783)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
7
不用一个一个复制。取xxtea.h xxtea.c文件就行了。
size_t len;
unsigned char *encrypt_data = (unsigned char *)xxtea_encrypt(str.c_str(), str.length(), key, &len);

这时候你会得到一段数据。拿去进行base64加密就是你上面那个机密结果了。
2016-9-30 17:39
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩 问题解决了, 大神 谢谢了哈,  么么哒。
2016-10-3 20:29
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册