• re | [SCTF2019]Who is he


    这是一个winx64的unity逆向。

    主要逻辑在Who is heWho is he_DataManagedAssembly-CSharp.dll中,用dnspy反编译得到关键代码:

    这里将密文解密后与输入的数据对比。

    进入解密函数,发现是DES+base64:

    然后用密文反推,写一个脚本,这里c#的字符存储默认为utf16:

     1 from Crypto.Cipher import DES
     2 import base64
     3 
     4 d_flag = b'1Tsy0ZGotyMinSpxqYzVBWnfMdUcqCMLu0MA+22Jnp+MNwLHvYuFToxRQr0c+ONZc6Q7L0EAmzbycqobZHh4H23U4WDTNmmXwusW4E+SZjygsntGkO2sGA=='
     5 
     6 key = b'1x002x003x004x00'
     7 
     8 generator = DES.new(key, DES.MODE_CBC, iv=key)
     9 flag = generator.decrypt(base64.b64decode(d_flag))
    10 
    11 print(flag.decode('utf-16'))

    得出:He_P1ay_Basketball_Very_We11!Hahahahaha!

    然而并不对。

    之后参考了这篇文章(https://www.anquanke.com/post/id/181019#h3-15)使用CE去附加查看内存数据【CE奇怪的用法增加了2333

    搜索Emmmmm发现4处然后查看内存发现base64的元数据已经不一样了。

    再次尝试解密:

    得到:Oh no!This is a trick!!!

    再找别的,发现密钥和base64都不一样了,再次解密:

    得到:She_P1ay_Black_Hole_Very_Wel1!LOL!XD!

    正确。应该是隐藏在了某个别的dll之中。

    从CE中将完整的dll dump下来,然后再用dnspy打开,可以看到基本一致的解密方式。

    这时候再回去找源文件:unityengine.umbramodule:

    尝试用dnspy打开但是发现不是PE文件,可能是经过了加密或者其他处理,就没有深究了。

  • 相关阅读:
    windows 7 codepage id name 名称
    最大团
    三分的多种写法及对应的精度 三分套三分原理
    AC自动机
    c++ queue
    lca 欧拉序+rmq(st) 欧拉序+rmq(线段树) 离线dfs 倍增
    node *p,*q
    dfs序和欧拉序
    P3861 8月月赛A
    洛谷P3862 8月月赛B
  • 原文地址:https://www.cnblogs.com/Mz1-rc/p/13777354.html
Copyright © 2020-2023  润新知