发现王:发现生活点滴!

软件应用

当前位置:首页 > 文苑资讯 > 软件应用

.Net零基础逆向教程 第十课(de4dot反混淆)

        想了半天才想出这么一个案例,来一起看一看:


 .Net零基础逆向教程 第十课(de4dot反混淆)


        我们要做的操作是分析出人能读懂的源代码

        查壳看一下:


 .Net零基础逆向教程 第十课(de4dot反混淆)


        首先是一个Agile .NET的壳,de4dot搞掉它

        脱壳后显示如图:


 .Net零基础逆向教程 第十课(de4dot反混淆)


        丢入 dnSpy 看看,没脱干净。


 .Net零基础逆向教程 第十课(de4dot反混淆)


        换个查壳工具看一下


 .Net零基础逆向教程 第十课(de4dot反混淆)


        还有一层 .NET Reactor 的壳

        那么 DIE 无法查出这层壳的原因在于它对 .NET Reactor 的判断逻辑


// DIE's signature file
init("protector"".NET Reactor");
function detect(bShowType, bShowVersion, bShowOptions)
{
    if (PE.section[".reacto"])
    {
        if (PE.section[1].FileSize == 0 && PE.section[2].FileSize == 0 && PE.section[3].FileSize == 0)
        {
            sVersion = "2.0-2.1";
            bDetected = 1;
        }
    }
    else if (PE.compareEP("558becb90f0000006a006a004975f951535657b8........e8"))
    {
        sVersion = "2.X-3.X";
        bDetected = 1;
    }
    else if (PE.resource["__"] && PE.compareEP("e8$$$$$$$$8bff558bec83ec10"))
    {
        if (PE.compareEP("e8........e9........6a0c68"))
        {
            sVersion = "4.2";
            bDetected = 1;
        }
        else if (PE.compareEP("e8........e9........8bff558bec83ec208b45085657"))
        {
            sVersion = "4.5-4.7";
            bDetected = 1;
        }
    }
    else if (PE.isNET())
    {
        if (PE.isSignatureInSectionPresent(0"558becb90f0000006a006a004975f951535657b8........e8"))
        {
            sVersion = "3.X";
            bDetected = 1;
        }
        else if (PE.section.length >= 2)
        {
            if (PE.section[1].Characteristics == 0xc0000040)
            {
                if (PE.isSignatureInSectionPresent(1"5266686E204D182276B5331112330C6D0A204D18229EA129611C76B505190158"))
                {
                    sVersion = "4.8-4.9";
                    bDetected = 1;
                }
            }
        }
    }
    return result(bShowType, bShowVersion, bShowOptions);
}

        再用 de4dot 来查一下壳看看:
        使用快捷键 Win+R 打开运行窗口,输入 cmd,点确定

 .Net零基础逆向教程 第十课(de4dot反混淆)

        接下来的操作我们需要在这个窗口里做,因为我电脑 CMD 莫名其妙奔溃,我就在 PentestBox 里写了,命令和效果是一样的。

 .Net零基础逆向教程 第十课(de4dot反混淆)

        如上图,将 de4dot.exe 直接拖拽到 cmd 窗口里,会自动生成一个 "D:\Program Files (x86)\de4dot\de4dot\de4dot.exe" 的路径,然后你需要敲一个空格,然后把要查壳的软件拖进去,再敲一个空格,然后输入 -d
        完整的命令为:
"D:\Program Files (x86)\de4dot\de4dot\de4dot.exe" C:\Users\muruoxi\Desktop\EP10_Locked\Secured\EP10-cleaned.exe -d

        回车执行后你可以看到 Detected .NET Reactor 的字样,说明是 .NET Reactor 的混淆。
        那简单,直接拖入 de4dot 脱壳即可。

 .Net零基础逆向教程 第十课(de4dot反混淆)

        感谢本文作者:慕若曦

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

评论排行榜