吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2980|回复: 20
收起左侧

[Android 求助] BiliBili 1024程序员节 技术对抗赛 逆向 ID-6

  [复制链接]
ahov 发表于 2021-10-24 10:25
本帖最后由 ahov 于 2021-10-24 10:39 编辑

下载地址:https://security.bilibili.com/sec1024/q/test.apk

有没有伙伴能够逆向出解题答案flag的

(最好分享一下解题思路?

免费评分

参与人数 1热心值 +1 收起 理由
wawyw + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Conanbin 发表于 2021-10-24 12:39
在so里,其他题目有头绪吗

[Asm] 纯文本查看 复制代码
if ( *(_DWORD *)res1 == 3553400 && *(unsigned __int16 *)res2 == 57 )
  {
    v1 = fopen("/data/2233", "r");
    if ( v1 )
    {
      fclose(v1);
      strcpy((char *)encrypt, "bili_2233_3322");
      strcpy((char *)encrypt2, "bili_3322_2233");
      *(_OWORD *)context.count = xmmword_1F60;
      *(_QWORD *)&context.state[2] = 0x1032547698BADCFELL;
      v2 = __strlen_chk((const char *)encrypt, 0xFuLL);
      EU(&context, encrypt, v2);
      *(_DWORD *)res3 = context.count[0];
      v24 = context.count[1];
      v3 = (context.count[0] >> 3) & 0x3F;
      if ( v3 >= 0x38 )
        v4 = 120;
      else
        v4 = 56;
      EU(&context, PADDING, v4 - v3);
      EU(&context, res3, 8u);
      *(_DWORD *)decrypt = context.state[0];
      *(_OWORD *)v15.count = xmmword_1F60;
      *(_QWORD *)&decrypt[4] = *(_QWORD *)&context.state[1];
      *(_DWORD *)&decrypt[12] = context.state[3];
      *(_QWORD *)&v15.state[2] = 0x1032547698BADCFELL;
      v5 = __strlen_chk((const char *)encrypt2, 0xFuLL);
      EU(&v15, encrypt2, v5);
      v6 = (v15.count[0] >> 3) & 0x3F;
      *(_DWORD *)res3 = v15.count[0];
      v24 = v15.count[1];
      if ( v6 >= 0x38 )
        v7 = 120;
      else
        v7 = 56;
      EU(&v15, PADDING, v7 - v6);
      EU(&v15, res3, 8u);
      *(_DWORD *)decrypt2 = v15.state[0];
      *(_QWORD *)&decrypt2[4] = *(_QWORD *)&v15.state[1];
      *(_DWORD *)&decrypt2[12] = v15.state[3];
      v10 = fopen("/data/2233", "a+");
      if ( v10 )
      {
        for ( i = 0LL; i != 8; ++i )
        {
          ZL7sprintfPcU17pass_object_size1PKcz(res3, v8, v9, decrypt[i]);
          ZL7sprintfPcU17pass_object_size1PKcz(dest, v12, v13, decrypt2[i]);
          fputs((const char *)res3, v10);
          fputs((const char *)dest, v10);
        }
        fwrite("-----------\n", 0xCuLL, 1uLL, v10);
 楼主| ahov 发表于 2021-10-24 10:53
这个apk有两道逆向题,一个题目ID-5的flag就是516834cc-50e448af-bcf9ed53-9ae4328e

现在这个题目ID-6的,目前都还没人知道了……
ForGot_227 发表于 2021-10-24 11:18
无闻无问 发表于 2021-10-24 11:38
账户密码,先与3异或,然后base64编码,与下面比较…

是这样吗? 要跑码?

73,49,79,122,65,51,89,71,65,117,78,106,78,109,78,122,99,55,89,109,85,61

89, 87, 66, 108, 79, 109, 90, 110, 78, 106, 65, 117, 79, 109, 74, 109, 78, 122, 65, 120, 79, 50, 89, 61
 楼主| ahov 发表于 2021-10-24 11:43
无闻无问 发表于 2021-10-24 11:38
账户密码,先与3异或,然后base64编码,与下面比较…

是这样吗? 要跑码?

IMG_0301.JPG 我也发现了,不过这个好像是第五题的关键代码
Conanbin 发表于 2021-10-24 12:24
我用ida 看到里面有些奇怪的函数,感觉和第6题有关
 楼主| ahov 发表于 2021-10-24 12:31
Conanbin 发表于 2021-10-24 12:24
我用ida 看到里面有些奇怪的函数,感觉和第6题有关

好像在lib-so里面?
 楼主| ahov 发表于 2021-10-24 12:55
Conanbin 发表于 2021-10-24 12:39
在so里,其他题目有头绪吗

[mw_shl_code=asm,true]if ( *(_DWORD *)res1 == 3553400 && *(unsigned __in ...

不太有

输出2233
Flag能出来什么东西吗
 楼主| ahov 发表于 2021-10-24 12:56
6,ida逆向so,会验证abi和系统版本, 改build.prop,ro.product.cpu.abi为x86,ro.build.version.release为9,然后再创建/data/2233,4byte一组变成xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx这样
好烦啊,没看懂什么意思
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 17:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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