《CTF特训营》——Reverse:干扰分析技术及破解

本文详细介绍了CTF比赛中常见的逆向分析技术,包括花指令、反调试策略(ptrace、proc文件检测、父进程检测)、加壳技术、控制流混淆、双进程保护(Debug Blocker)以及虚拟机保护。通过对这些技术的深入理解,有助于提高逆向工程和安全分析的能力。
摘要由CSDN通过智能技术生成

常见的干扰逆向分析的技术有花指令、反调试、加壳、控制流混淆、双进程保护、虚拟机保护等技术。

目录

一、花指令

1.定义

2.基本思路

3.实例分析

二、反调试

1.利用ptrace

2.proc文件检测系统

3.父进程检测

4.实例分析

三、加壳

1.基本思路

四、控制流混淆

1.基本思路

2.实例分析

五、双进程保护

1.Debug Blocker特点

2.基本思路

3.实例分析

六、虚拟机保护

1.定义

2.基本思路

3.实例分析

4.虚拟机指令集以及意义


一、花指令

1.定义

花指令只一种保护代码比较简单的方式,其原理是在原始代码中插入一段无用或者能干扰反汇编引擎的代码,这段代码并没有什么功能性作用,只是一种扰乱代码分析的手段。

2.基本思路

花指令主要影响静态分析,在IDA中表现为一些指令无法识别,导致某些函数未能识别,从而无法对这些函数进行反编译。在IDA中手动将花指令patch成nop空指令,可以去除花指令,若二进制程序中的花指令较多,那么可以通过分析花指令的特定模式,编写IDAPython脚本对花指令进行自动化搜索。

3.实例分析

花指令影响IDA反汇编

 

通过patch去除花指令

 进一步分析这个程序,可以得到花指令的指令模式,主要是在某些特定的指令序列之后插入一到两个无用字节,通过IDA脚本自动化去除花指令代码如下:

from idaapi import *
from idc import *
from idautils import *
start_ea = 0x40100
print 'start....'

patterns = [('73,02',2), ('EB 03 ', 1), ('72 03 73 01', 1), ('74 03 75 01', 1), ('7E 03 7F 
           01', 1), ('74 04 75 02', 2)]

for pattern in patterns:
    ea = start_ea
    while True:
        ea = FindBinary(ea, SEARCH_DOWN, pattern[0])
        if ea == idapi.BADADDR
            break
        ea += len(pattern[0].replace(' ','')/2

        for i in range(pattern[1]):
            PatchByte(ea+i, 0x90)
            MakeCode(ea+i)

二、反调试

反调试是指在程序运行的过程中探测其是否处于被调试状态,若发现其正在被调试,则使其无法正常运行。在Windows下通过OD的strongOD插件可以过滤掉大多数反调试方法,所以一下主要针对Linux。

1.利用ptrace

Linux下的调试主要是通过ptrace系统调用实现的,一个进程只能被一个程序跟踪,所以若程序被跟踪之后再来调用ptrace(PTRACE_TRACEME)自然是不会成功的。

#include <stdio.h>
#include <sys/ptrace.h>
int main (int argc, char * argv[])
{ 
  if (ptrace (PTRACE_TRACEME,0,0,0) == -1)
      {
         printf ( "Debugger detected\n");
         return 1;
       }
  printf ("OK\n")
  return 0 ;
}

2.proc文件检测系统

读取/proce/self目录下的部分文件,根据程序在调试和费调试状态下的文件的不同来进行反调试。例如:/proce/self/status在非调试状态下,则TracePid为0,反之不为0,而是跟踪Pid进程号。

3.父进程检测

通过getppid系统调试用获取得到程序的父进程,若父进程是gbd,strace或者Itrace,则可以证明程序正在被调试。

4.实例分析

直接运行程序时,程序会提示输入密码,但是在gdb中运行时,不会有任何输出,猜测程序有反调试。

CTF特训营是一种为了训练和提高参与者网络安全知识和技能的活动或培训。CTF代表Capture The Flag(夺旗赛),是一种网络安全竞技,参赛选手通常需要在一定时间内解决一系列与信息安全相关的题目,攻击和防守并获取旗帜来获得积分。 PDF文件通常是一种常用的电子文档格式,可包含文本、图像、链接、表单等内容。PDF格式文件的特点是易于共享、可读性好且文件大小较小,广泛应用于文件传输、存储和打印等方面。 CSDN是中文IT技术社区平台,为开发者提供技术博客、问答、培训等服务。在CSDN上,用户可以发布技术文章、分享经验、解答问题,也可以浏览其他用户分享的技术资源。 结合以上三个关键词,可以推测出"CTF特训营 PDF CSDN"的含义可能是关于CTF特训营PDF文件在CSDN上的相关内容。可能是包含CTF特训营相关介绍、教程、参考资料等的PDF文件可以在CSDN平台上找到和下载。 CTF特训营PDF文件在CSDN平台上的存在,为参与者提供了方便快捷的学习和参考资源。学习者们可以通过下载PDF文件,了解CTF竞技的规则、技巧和策略,提高他们在网络安全领域的知识水平和技能。同时,他们还可以借助其他CSDN用户的经验分享,深入理解和学习关于CTF特训营的知识。 总之,CTF特训营PDF文件在CSDN上的存在对于提高参与者的网络安全知识和技能非常有帮助,同时也丰富了CSDN平台上关于网络安全方面的技术资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值