zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    adb调试链接真机找不到设备
    Java 遍历指定目录下的文件夹并查找包含指定关键字的文件
    java中遍历制定路径下的文件夹查找出文件并打印出路径
    chrome 设置驱动
    Java+Selenium之KSampleOfCM
    Java+selenium 第一个KeyWordsOfWeb
    QT调用Python脚本运行并打包发布
    使用Qt Installer Framework Manual 制作安装向导
    Redis和Memcache对比及选择
    设计模式学习之----代理模式
  • 原文地址:https://www.cnblogs.com/harmonica11/p/13823978.html
Copyright © 2011-2022 走看看