飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3414|回复: 1

[原创] [.NET]利用Mono.Cecil的Bug来Anti .NET Decompiler

[复制链接]
  • TA的每日心情
    开心
    2018-9-21 22:58
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2018-8-6 00:05:05 | 显示全部楼层 |阅读模式
    本帖最后由 wwh1004 于 2018-8-6 11:51 编辑

    不知道有人看得懂么,我就简单的说一说吧

    据我分析,.NET内部加载未压缩的元数据表流的流程应该是这样:
    Snipaste_2018-08-05_23-29-01.png
    代码我自己写的,意思是:
    遍历所有流头,记录下第一次出现的CLR需要的表流和堆。




    为什么这么说呢,我们用dnSpy看看这个UnpackMe(文件名是UnpackMe,程序集名称是CrackMe,emmmm)
    https://forum.tuts4you.com/topic/38164-ben-mhenni-protector-v50-moded/
    没tuts4you账号的点下方
    链接: https://pan.baidu.com/s/1yQWAJsAXay_Bo6IbndCHhg 密码: 2bd5这个UnpackMe启动极慢,最少要十几秒,混淆极端严重(主要是无效元数据导致的)
    第一步先用各种Dump工具把.NET程序集Dump出来,不懂的可以看我以前在52pojie发的教程
    dnSpy将无效元数据流标记红色,有效为橙色
    Snipaste_2018-08-05_23-32-26.png
    WTF?为什么dnSpy认为第二次出现的#US #Strings是有效的呢?
    仔细查看第一次出现的#US,#Strings,其实可以发现这个不是真正的#US,#Strings
    Snipaste_2018-08-05_23-41-29.png
    #Strings堆也是一样的,名字都是多了一个空格,即"#Strings ",从这里可以看出CLR是识别空格的
    接下来我们看看真正的#Strings,和真#Strings之后的那些#Strings
    Snipaste_2018-08-05_23-45-14.png
    Snipaste_2018-08-05_23-45-32.png
    可以看到,被识别到的真#Strings和之后的混淆选项的名字一样,都是"#Strings"
    这样可以运行吗?答案是可以的,可以自行测试。

    我们再来看看dnlib的代码是怎么写的
    Snipaste_2018-08-06_11-45-47.png
    可以看到和我们分析的是一致的。
    BUT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Mono.Cecil是这么写的,Mono.Cecil并不能识别未压缩的元数据
    Snipaste_2018-08-05_23-53-58.png
    这是什么意思呢?
    选择出最后一个CLR所需的表流和堆来使用
    那就会出现什么问题呢?
    如果用ILSpy .NET Reflector JustDecompiler等使用Mono.Cecil作为元数据解析类库的反编译器完全无法获得正确表流和堆
    比如这样:
    Snipaste_2018-08-05_23-56-22.png
    Snipaste_2018-08-05_23-57-10.png
    当然,0xd4d大神的使用dnlib的dnSpy和JB的dotPeek完全不受影响,因为这些工具正确识别了CLR认为有效的表流和堆

    评分

    参与人数 4威望 +16 收起 理由
    GameLife + 4 PYG有你更精彩!
    0xcb + 4 赞一个,这个帖子很给力!
    zeknight + 4 PYG有你更精彩!
    不破不立 + 4 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 08:08
  • 签到天数: 2199 天

    [LV.Master]伴坛终老

    发表于 2018-8-8 08:43:54 | 显示全部楼层
    学习了,谢谢楼主分享经验,楼主有没有编译好的dnspy和dnlib提供?
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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