• [FlareOn1]Challenge7


    第一届flare on的最后一题

    32位exe,拖进ida

    想到我没写过什么关于反调的内容,这里详细说一下每个函数

    FUNC1

    使用IsDebuggerPresent,调试时会返回1

    FUNC2

    使用peb中的BeingDebugged,当调试时这个值为1

    FUNC3

    这里通过IDT检查是否使用虚拟机

    FUNC4

    通过使用特权指令判断是否使用虚拟机

    FUNC5

    此处自定义了一个错误码0x1234,OutputDebugStringW在没有调试的情况下会失败导致错误码刷新,所以v0不是自定义的值

    FUNC6

    此处计算了1e1030到1e1780之间的0xCC数量,未调试时应为0x55

    FUNC7

    还是peb,peb偏移0x68处为未公开的一处位置,调试时这个值为0x70

    FUNC8

    判断是否为周五

    FUNC9

    判断文件名是否为backdoge.exe,并且这个值会被用作密钥解密,所以可以直接动调修改a1

    FUNC10

    要联网

    FUNC11

    判断时间为17点,这个和上面的周五可以修改时间,修改zf也可以

    FUNC12

    要联网

    FUNC13

    这里的szUrl为https://twitter.com/FireEye/status/484033515538116608,要有梯子,不过这里我总是返回0,查看了网址

    这里我跳过了v5的赋值部分,因为后面是 strncpy(v7, v6 + 11, 7u);所以我手动将Secluded HijackRAT写到了v5处

    到此处函数分析完,下面要写到文件中

    经过查看很容易知道两个参数为dos头和pe头的标识,就此可以得到gratz.exe

    gratz.exe分析

    这是个.net文件,拖进dnspy

    public void lulzors()
            {
                lulz lulz = new lulz();
                lulz.datwork();//这条是我加的
                new Thread(new ThreadStart(lulz.datwork)).Start();
                this.label2.Text = lulz.decoder4("vfPu000eu000fBAu0006
    Gu0015Iu001au0001u0016H\	u0002u0013/	^u001dJOa]Cu001bu0005");
            }

    分析后猜测this.label2.Text为flag,可以对此进行解密,但是我懒,所以加了条lulz.datwork();之后在datwork里改为下图

    直接调试查看text得到flag

  • 相关阅读:
    今天没有去上班
    [转]分析ASP.NET读取XML文件4种方法
    Div+CSS布局入门教程
    net 怎么调用迅雷
    类图(Class Diagram)
    asp.net删除文件夹后引起Session丢失的解决办法[转]
    对象图(Object Diagram)
    C#使用Strings.StrConv进行简繁体转换
    ASP.NET使用Memcached高缓存实例(入门级)[转]
    类似豆丁网、百度文库的开源文档播放器源码下载[转]
  • 原文地址:https://www.cnblogs.com/harmonica11/p/13823978.html
Copyright © 2020-2023  润新知