开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 562|回复: 12
收起左侧

[易语言] xxtea解密求助,有懂的大佬吗

[复制链接]
结帖率:85% (35/41)
发表于 2024-9-2 09:52:03 | 显示全部楼层 |阅读模式   山西省太原市
88精币
如题,在研究某*奇手游加载服务器列表因此卡在了xxtea解密算法上,扣出来自己不会转换成易语言 有没有大佬有个例子 sign跟kye 4meJnPyl   34UFXMgtkz都拿到了但无法正常解密把论坛所有的解密源码都下载下来都无法正常使用尝试转换 成易语言过也没成功。  

评分

参与人数 1精币 +1 收起 理由
714490742 + 1 解出来了没

查看全部评分


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (2/2)

签到天数: 31 天

发表于 2024-9-2 10:11:18 | 显示全部楼层   河北省张家口市
抠出来的发出来,要看你抠出来的能不能正常用,不能的话就是扣错了,再转也没用
回复

使用道具 举报

结帖率:85% (35/41)

签到天数: 2 天

 楼主| 发表于 2024-9-2 10:22:02 | 显示全部楼层   山西省太原市
{
  const char *Bytes; // x0
  __int64 v17; // x21
  __int64 v18; // x22
  int Size; // w0
  unsigned __int8 *v20; // x20
  const char *v21; // x0
  __int64 v22; // x21
  __int64 v23; // x22
  int v24; // w0
  unsigned __int8 *v25; // x20
  const char *v26; // x0
  __int64 v27; // x21
  __int64 v28; // x22
  int v29; // w0
  unsigned __int8 *v30; // x20
  char v31[16]; // [xsp+8h] [xbp-58h] BYREF
  _DWORD v32[2]; // [xsp+18h] [xbp-48h] BYREF
  char *v33; // [xsp+20h] [xbp-40h]
  __int64 v34; // [xsp+28h] [xbp-38h]

  v34 = *(_QWORD *)(_ReadStatusReg(ARM64_SYSREG(3, 3, 13, 0, 2)) + 40);
  cocos2d::Data::Data((cocos2d::Data *)v31);
  *(_QWORD *)v32 = &off_14692C8;
  v33 = v31;
  (*(void (__fastcall **)(__int64, __int64, _DWORD *))(*(_QWORD *)a1 + 56LL))(a1, a2, v32);
  if ( (a3 & 1) == 0 )
  {
    if ( *(_BYTE *)(a1 + 244) )
    {
      if ( (cocos2d::Data::isNull(v31) & 1) == 0 )
      {
        Bytes = (const char *)cocos2d::Data::getBytes(v31);
        if ( !strncmp(Bytes, *(const char **)(a1 + 264), *(_DWORD *)(a1 + 272))
          && cocos2d::Data::getSize(v31) > *(int *)(a1 + 272) )
        {
          v32[0] = 0;
          v17 = cocos2d::Data::getBytes(v31);
          v18 = *(int *)(a1 + 272);
          Size = cocos2d::Data::getSize(v31);
          v20 = (unsigned __int8 *)xxtea_decrypt(
                                     v17 + v18,
                                     Size - *(_DWORD *)(a1 + 272),
                                     *(const void **)(a1 + 248),
                                     *(_DWORD *)(a1 + 256),
                                     v32);
          cocos2d::Data::Data(a5);
          cocos2d::Data::fastSet(a5, v20, v32[0]);
          goto LABEL_20;
        }
      }
    }
    if ( *(_BYTE *)(a1 + 276) )
    {
      if ( (cocos2d::Data::isNull(v31) & 1) == 0 )
      {
        v21 = (const char *)cocos2d::Data::getBytes(v31);
        if ( !strncmp(v21, *(const char **)(a1 + 296), *(_DWORD *)(a1 + 304))
          && cocos2d::Data::getSize(v31) > *(int *)(a1 + 304) )
        {
          v32[0] = 0;
          v22 = cocos2d::Data::getBytes(v31);
          v23 = *(int *)(a1 + 304);
          v24 = cocos2d::Data::getSize(v31);
          v25 = (unsigned __int8 *)xxtea_decrypt(
                                     v22 + v23,
                                     v24 - *(_DWORD *)(a1 + 304),
                                     *(const void **)(a1 + 280),
                                     *(_DWORD *)(a1 + 288),
                                     v32);
          cocos2d::Data::Data(a5);
          cocos2d::Data::fastSet(a5, v25, v32[0]);
          goto LABEL_20;
        }
      }
    }
    if ( *(_BYTE *)(a1 + 208) )
    {
      if ( (cocos2d::Data::isNull(v31) & 1) == 0 )
      {
        v26 = (const char *)cocos2d::Data::getBytes(v31);
        if ( !strncmp(v26, *(const char **)(a1 + 232), *(_DWORD *)(a1 + 240))
          && cocos2d::Data::getSize(v31) > *(int *)(a1 + 240) )
        {
          v32[0] = 0;
          v27 = cocos2d::Data::getBytes(v31);
          v28 = *(int *)(a1 + 240);
          v29 = cocos2d::Data::getSize(v31);
          v30 = (unsigned __int8 *)xxtea_decrypt(
                                     v27 + v28,
                                     v29 - *(_DWORD *)(a1 + 240),
                                     *(const void **)(a1 + 216),
                                     *(_DWORD *)(a1 + 224),
                                     v32);
          cocos2d::Data::Data(a5);
          cocos2d::Data::fastSet(a5, v30, v32[0]);
          goto LABEL_20;
        }
      }
    }
  }
  if ( (a4 & 1) != 0 )
    cocos2d::Data::clear((cocos2d::Data *)v31);
  cocos2d::Data::Data(a5, v31);
LABEL_20:
  cocos2d::Data::~Data((cocos2d::Data *)v31);
  _ReadStatusReg(ARM64_SYSREG(3, 3, 13, 0, 2));
}
回复

使用道具 举报

结帖率:85% (35/41)

签到天数: 2 天

 楼主| 发表于 2024-9-2 10:22:24 | 显示全部楼层   山西省太原市
真IKUN 发表于 2024-9-2 10:11
抠出来的发出来,要看你抠出来的能不能正常用,不能的话就是扣错了,再转也没用 ...

{
  const char *Bytes; // x0
  __int64 v17; // x21
  __int64 v18; // x22
  int Size; // w0
  unsigned __int8 *v20; // x20
  const char *v21; // x0
  __int64 v22; // x21
  __int64 v23; // x22
  int v24; // w0
  unsigned __int8 *v25; // x20
  const char *v26; // x0
  __int64 v27; // x21
  __int64 v28; // x22
  int v29; // w0
  unsigned __int8 *v30; // x20
  char v31[16]; // [xsp+8h] [xbp-58h] BYREF
  _DWORD v32[2]; // [xsp+18h] [xbp-48h] BYREF
  char *v33; // [xsp+20h] [xbp-40h]
  __int64 v34; // [xsp+28h] [xbp-38h]

  v34 = *(_QWORD *)(_ReadStatusReg(ARM64_SYSREG(3, 3, 13, 0, 2)) + 40);
  cocos2d::Data::Data((cocos2d::Data *)v31);
  *(_QWORD *)v32 = &off_14692C8;
  v33 = v31;
  (*(void (__fastcall **)(__int64, __int64, _DWORD *))(*(_QWORD *)a1 + 56LL))(a1, a2, v32);
  if ( (a3 & 1) == 0 )
  {
    if ( *(_BYTE *)(a1 + 244) )
    {
      if ( (cocos2d::Data::isNull(v31) & 1) == 0 )
      {
        Bytes = (const char *)cocos2d::Data::getBytes(v31);
        if ( !strncmp(Bytes, *(const char **)(a1 + 264), *(_DWORD *)(a1 + 272))
          && cocos2d::Data::getSize(v31) > *(int *)(a1 + 272) )
        {
          v32[0] = 0;
          v17 = cocos2d::Data::getBytes(v31);
          v18 = *(int *)(a1 + 272);
          Size = cocos2d::Data::getSize(v31);
          v20 = (unsigned __int8 *)xxtea_decrypt(
                                     v17 + v18,
                                     Size - *(_DWORD *)(a1 + 272),
                                     *(const void **)(a1 + 248),
                                     *(_DWORD *)(a1 + 256),
                                     v32);
          cocos2d::Data::Data(a5);
          cocos2d::Data::fastSet(a5, v20, v32[0]);
          goto LABEL_20;
        }
      }
    }
    if ( *(_BYTE *)(a1 + 276) )
    {
      if ( (cocos2d::Data::isNull(v31) & 1) == 0 )
      {
        v21 = (const char *)cocos2d::Data::getBytes(v31);
        if ( !strncmp(v21, *(const char **)(a1 + 296), *(_DWORD *)(a1 + 304))
          && cocos2d::Data::getSize(v31) > *(int *)(a1 + 304) )
        {
          v32[0] = 0;
          v22 = cocos2d::Data::getBytes(v31);
          v23 = *(int *)(a1 + 304);
          v24 = cocos2d::Data::getSize(v31);
          v25 = (unsigned __int8 *)xxtea_decrypt(
                                     v22 + v23,
                                     v24 - *(_DWORD *)(a1 + 304),
                                     *(const void **)(a1 + 280),
                                     *(_DWORD *)(a1 + 288),
                                     v32);
          cocos2d::Data::Data(a5);
          cocos2d::Data::fastSet(a5, v25, v32[0]);
          goto LABEL_20;
        }
      }
    }
    if ( *(_BYTE *)(a1 + 208) )
    {
      if ( (cocos2d::Data::isNull(v31) & 1) == 0 )
      {
        v26 = (const char *)cocos2d::Data::getBytes(v31);
        if ( !strncmp(v26, *(const char **)(a1 + 232), *(_DWORD *)(a1 + 240))
          && cocos2d::Data::getSize(v31) > *(int *)(a1 + 240) )
        {
          v32[0] = 0;
          v27 = cocos2d::Data::getBytes(v31);
          v28 = *(int *)(a1 + 240);
          v29 = cocos2d::Data::getSize(v31);
          v30 = (unsigned __int8 *)xxtea_decrypt(
                                     v27 + v28,
                                     v29 - *(_DWORD *)(a1 + 240),
                                     *(const void **)(a1 + 216),
                                     *(_DWORD *)(a1 + 224),
                                     v32);
          cocos2d::Data::Data(a5);
          cocos2d::Data::fastSet(a5, v30, v32[0]);
          goto LABEL_20;
        }
      }
    }
  }
  if ( (a4 & 1) != 0 )
    cocos2d::Data::clear((cocos2d::Data *)v31);
  cocos2d::Data::Data(a5, v31);
LABEL_20:
  cocos2d::Data::~Data((cocos2d::Data *)v31);
  _ReadStatusReg(ARM64_SYSREG(3, 3, 13, 0, 2));
}
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 9 天

发表于 2024-9-2 12:08:10 | 显示全部楼层   四川省德阳市
coco2djs?
回复

使用道具 举报

签到天数: 30 天

发表于 2024-9-2 12:59:53 | 显示全部楼层   广东省揭阳市
看数据很熟悉 忘记是哪个了 以前搞过~

回复

使用道具 举报

签到天数: 23 天

发表于 2024-9-2 13:01:52 | 显示全部楼层   广东省广州市
XXTEADecrypt.rar (77.01 KB, 下载次数: 25)

评分

参与人数 1好评 +1 精币 +1 收起 理由
bianyuan456 + 1 + 1 感谢分享,很给力!~

查看全部评分

回复

使用道具 举报

结帖率:85% (35/41)

签到天数: 2 天

 楼主| 发表于 2024-9-3 01:53:11 | 显示全部楼层   山西省太原市

对是的
回复

使用道具 举报

结帖率:85% (35/41)

签到天数: 2 天

 楼主| 发表于 2024-9-3 01:54:14 | 显示全部楼层   山西省太原市
baitso 发表于 2024-9-2 13:01
用这个去解,写入sign与key就可以了!
xxtea易语言没有找到直接的实现方法,要么就是用js,要么就是用C++的 ...

没用,这个东西我不是去解lua脚本,我是想提交返回的网页内容然后进行解密 返回的是游戏大区列表
回复

使用道具 举报

签到天数: 4 天

发表于 2024-9-21 04:45:18 | 显示全部楼层   浙江省温州市
大佬, 你这个kye   34UFXMgtkz  是怎么取出来的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表