2020太湖杯ReverseMe(easy-app题解)

查看 82|回复 9
作者:wangxiaobai123   
2020太湖杯easy-app题解
观察是否有壳

直接从oncreate()开始

调用系统函数加载so库

接下来用IDA逆向对应的so层,首先直接crtl+f直接搜索java_come_xxx,
  • 若存在包名,直接点击跳转对应逻辑
  • 若没有则可能动态加载,重点怀疑JNI_Load方法和init,init_arry段

    顺利找到,开始分析(以下步骤均通过静态+动态调试进行):




    线索一
    我们要输入的字符串长度为38位,且前5位为"flag{",最后一位为“}”,而中间是32位进行下一步分析

    接着经过check1()函数处理

    跟进去进一步查看

    这里用的是arm64-v8架构进行逆向,倘若用armabi-v7架构将会有更明显的特征

    push_back 调用中,(unsigned __int8)(*(_BYTE *)(v14 + i) & 0xF0) + (v15 & 0xF) 和 push_back(v3 + 9, (unsigned __int8)(*(_BYTE *)(v17 + i) & 0xF0) + v18) 分别将高四位和低四位组合在一起

    举个例子
    假设一个32位的二进制数为 A B C D E F G H I J K L M N O P,其中:
  • 前16位为 A B C D E F G H
  • 后16位为 I J K L M N O P

    其中:
    [ol]
  • 将前16位的高4位(A B C D)和后16位的低4位(M N O P)组合,存放到后16位。
  • 将后16位的高4位(I J K L)和前16位的低4位(E F G H)组合,存放到前16位。
    [/ol]
    结果可能是这样的:
  • 新的前16位为 I J K L E F G H
  • 新的后16位为 A B C D M N O P


    线索二
    check()函数将前十六位的高四位和后十六位的低四位组合存放到后十六位,将后十六位的高四位和前十六位的低四位组合存放到前十六位。
    重新分组后进入如下算法:


    线索三
    这里将字符串分为4组进行TEA加密,注意key这里运行时候被修改了,正确的应该是0x42,0x37,0x2c,0x21
    接着分析:

    进入了一个类似base64加密函数进行加密,跟进查看




    线索四
    *值得注意的是base64_encode中不止包括了base64加密,还有移位操作。将编码之后的base64,每三位循环向左移动,第四位做分隔符不变.并且通过动态调试发现base64的表为`abcdefghijklmnopqrstuvwxyz!@#$%^&()ABCDEFGHIJKLMNOPQRSTUVWXYZ+/`**

    比较

    代码编写
    综合以上知识,开始编写逆向代码:
    首先编写TEA算法的C语言库以供python调用:

    其次主要逆向脚本如下:



    最终结果如下:

    验证

    题目及脚本
    通过网盘分享的文件:easy-app.zip
    链接: https://pan.baidu.com/s/1E6-WtYpF1f0hiW01S_kO3w?pwd=uj1r 提取码: uj1r

    线索, 太湖

  • justwz   

    图挂了,直接附件形式上传论坛吧。
    Theropej   

    跟着大佬学逆向
    无奈的地刺王   


    cattie 发表于 2024-9-26 18:20
    图挂了,直接附件形式上传论坛吧。

    哈哈哈 开代{过}{滤}理就可以看了·,没问题
    wangxiaobai123
    OP
      

    图床挂了
    wangxiaobai123
    OP
      


    无奈的地刺王 发表于 2024-9-27 11:08
    图床挂了

    puree19890428   


    无奈的地刺王 发表于 2024-9-27 11:08
    图床挂了

    啊,新人不是很懂,我用的图床本地浏览器能加载起来看到。你们都看不到吗?
    GoogleHacking   

    11看看再睡
    collinchen1218   

    怎么看不到图了
    wangxiaobai123
    OP
      


    wangxiaobai123 发表于 2024-9-27 11:32
    啊,新人不是很懂,我用的图床本地浏览器能加载起来看到。你们都看不到吗?

    看不了,注册这个图床:imgse.com,然后图片重新上传
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部