• CTF逆向基础


    更多资源请进入:https://github.com/SycloverTeam/SycRevLearn 查看。

    1 IDA定位main函数

    运行T1.exe。
    在这里插入图片描述
    将可执行程序放入IDA中,并查找字符。
    在这里插入图片描述
    在这里插入图片描述
    双击。
    在这里插入图片描述
    在这里插入图片描述
    按F5,进入代码。
    在这里插入图片描述
    可以对函数进行重新命名,此时也已经得到了flag。

    2 简单的加密算法

    将T2.exe拖入IDA中,定位到main函数,代码如下:
    在这里插入图片描述

    可见3,flag经过了加密变换,所以我们可以将它进行逆运算得到flag。
    写一个C语言脚本。

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char str[] = "gmbh|ZPV`GJOE`JU`IBIB~";
        for (int i = 0; i < strlen(str); i ++)
            --str[i];
        printf("%s\n", str);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    得到flag。
    在这里插入图片描述
    接下来看另一种简单的加密。首先我们需要知道异或的概念。
    在这里插入图片描述
    将T3.exe放入IDA中分析得到:
    在这里插入图片描述
    编写脚本:

    data = [0x66,0x6D,0x63,0x64,0x7F,0x5C,0x49,0x52,0x57,0x4F,0x43,0x45,0x48,0x52,0x47,0x5B,0x4F,0x59,0x53,0x5B,0x55,0x68]
    for i in range(len(data)):
        data[i] ^= i
        print (chr(data[i]),end ="")
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3 Base64编码

    将T4.exe丢入IDA中,查看源码;
    在这里插入图片描述
    在这里插入图片描述

    先处理编码再进行异或解密就可以得到Flag。

    4 Base64 变表逆向

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    5 IDA动态调试

    设置断点。
    2
    调试。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    得到Flag。

    5 IDA动态调试解RC4

    F8单步步过。
    以附加的形式调试绕过反调试。
    在这里插入图片描述
    输入的数据。
    在这里插入图片描述
    v7的数据。
    在这里插入图片描述
    转换。
    在这里插入图片描述
    得到Flag。

    6 IDA代码修复 和 数组识别

    函数返回值没有有意义可以去掉函数类型。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码量就减少了很多,也可以使用快捷键v键。
    还有些变量的类型错误,也可以通过这种方式修改。
    在这里插入图片描述
    在这里插入图片描述

    7 UPX脱壳

    在这里插入图片描述
    远程执行IDA。
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    远程调试器。
    在这里插入图片描述
    在这里插入图片描述
    设置IP地址。
    在这里插入图片描述
    F4程序执行到当前选中代码段。
    单步走。call步过。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    创建函数。
    在这里插入图片描述
    F5反编译。
    在这里插入图片描述
    加粗样式
    得到Flag。

  • 相关阅读:
    Python双人五子棋
    JavaWeb在线问题.分析实例
    Linux - Shell、Console和Terminal的区别
    JavaScript学习笔记03
    深度学习_13_YOLO_图片切片及维度复原
    Java I/O在Android中应用
    常用的shell命令
    C学生管理系统 指定位置插入学生节点
    神经网络解决优化问题,神经网络 样本不平衡
    IMX6ULL | 从零开始移植uboot |(一)单板建立与编译
  • 原文地址:https://blog.csdn.net/weixin_61823031/article/details/125617709