RE February 04, 2021

sm4国密加密算法研究

Words count 374 Reading time 1 mins.

一、sm4算法

1、其实和aes和des类似,sm4算法也是一种分组加密算法。

2、密钥长度128bit(16字节),分组长度也是128bit(16字节),也就是16位字符为一个组作为输入进行加密,得到...

Read article

RE October 07, 2020

PE文件结构详解

Words count 6.6k Reading time 6 mins.

一、PE文件基础介绍

pe文件是windows操作系统下的可执行文件的一种称呼,常见的有exe文件和dll文件等,32位是PE32,64位的是PE+或者PE32+。

二、PE文件格式

1、PE文件种类如下表所示

种类 主扩展名
可执行系列 EXE, SCR
库系列 DLL, OCX, CPL, DRV
驱动程序系列 SYS, VXD
对象文件系列 OBJ

2、我们直接用010editer看下test.exe文件的情况

往后还有3个节区,分别是.text、.rdata、.data...

Read article

RE September 01, 2020

babyre题解

Words count 28k Reading time 26 mins.

一、babyre

这题直接写个魔改的rc4算法计算s_box的值得到smc加密的异或值,然后进行patch操作即可还原出真实的judge加密逻辑:

1
2
3
4
5
s_box = [0x83,0x24,0x84,0xcf,0x6c,0x8f,0x35,0x80,0x62,0xe6,0x3b,0x0c,0xc4,0x7c,0xad,0x1b,0xbe,0xbc,0x75,0x01,0x91,0x56,0xf5,0xb8,0x03,0xc9,0xcd,0xa8,0x85,0x56,0xdc,0xbb,0x5a...
Read article

RE May 22, 2020

smc加密研究

Words count 4.8k Reading time 4 mins.

一、smc的概念

所谓SMC(Self Modifying Code)技术,就是一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具(比如一些常见的反汇编工具)对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解密,从而正常运行程序和访问数据。计算机病毒通常也会采用SMC技术动态修改内存中的可执行代码来达到变形或对代码加密的目的,从而躲过杀毒软件的查杀或者迷惑反病毒工作者对代码进行分析。现在,很多加密软件(或者称为“壳”程序)为了防止Cracker(破解者)跟踪自己的代码,也采...

Read article

RE April 23, 2020

windows下的壳研究

Words count 3.7k Reading time 3 mins.

一、什么是壳

加壳的全称是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码。要经过脱壳才可以查看源代码。

加壳是利用特殊的算法,对EXE、DLL文件里的资源进行压缩、加密。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成,因此我们需要dump内存。

壳的类型通常分为压缩壳和加密壳两类。压缩壳的特点是减小软件体积大小,加密保护不是重点,

例如: Aspack, UPX(ctf比赛中中最常见的壳), PeCompact...

Read article

RE April 17, 2020

看雪ctf二进制题解

Words count 2.6k Reading time 2 mins.

一、keygenme(逆向)

是一个crackme,已经知道用户名是KCTF的情况下,计算出序列号。这题真的是很好地锻炼了动态调试的能力,学到了~

1、首先ida分析逻辑:

这里要求输入name是大于3位小于20位,sn一定是64位的

接着进入check

这里因为进行了去符号表:

所以我们可以通过修复符号表+自定义函数名来进行加密算法的查看:

ida中shift+f5然后导入我们的静态链接库,这个库可以从github下载:

https://github.com/push0ebp/sig-database...

Read article

RE January 03, 2020

桂林CTF逆向题解

Words count 58k Reading time 53 mins.

一、逆向

1、re

第一题,拖进ida发现是打不开的,怀疑题目加壳了,elf文件加壳的话,拖进虚拟机,直接打命令:

strings re

看到:

UPX的壳直接脱了,upx -d 文件名

看到函数名被隐藏了,但是很简单,直接shift +f12查找字符串,input flag,双击定位到那里,查看引用,ctrl + x,就可以定位到主逻辑了,F5,就是上面的界面了,接着分析一波,看到correct,直接进去:

可以知道是除法,但是少了a1[6]的检验,出题粗心吧?!直接脚本搞出来,a1[6]...

Read article

RE January 03, 2020

OD动态查看栈技巧

Words count 8.9k Reading time 8 mins.

一、准备工作:

题目链接:https://pan.baidu.com/s/1p3s_RpW_fO_CUWXriFGuAQ

提取码:4lvd
(提示:给出的这道题是我脱壳后的,因为没有及时保存原题,抱歉,不过是简单的UXP壳,大家直接用工具去脱也是可以的,所以相信大家没毛病)

二、开始分析:

这题是当时打南宁杯时的题目,拿到题目一起分析下:

1、首先用PEID查壳,发现是UXP壳,直接用工具脱壳,我的工具如下(这一步相信都没问题的):

2、脱完壳,拖进OD,看看情况:

要求输入flag
3、接着拖进ida看...

Read article

RE January 03, 2020

VM下的RE和PWN学习

Words count 656k Reading time 9:56

一、前言

前段时间一直碰到vm的pwn题,之前打re也是,遇到就懵,所以花时间好好整理下这部分知识点。

二、VM下的逆向

首先需要搞清楚的是,vm是一种逻辑,就是自己实现一个小型的虚拟机来实现简单的操作,有点自己开发计算机的感觉。

下面一步步讲解下最重要的内容:

1、register

1
2
3
4
5
6
7
enum regist
{
R1 = 0xe1,
R2 = 0xe2,
R3 = 0xe3,
R4 = 0xe5,
};

这是我们虚拟机的寄存器,想要的数量和类型可以自己设置,这里我们枚举...

Read article

RE January 03, 2020

0CTF逆向writeup

Words count 4.6k Reading time 4 mins.

一、Elemnet

这题当时在算时,解出来的精度不够,所以一直提交writeup不正确,当时觉得很可惜哎,工具没找对~后来看了大佬的writeup,果然时精度的问题,他说手动调试那个值,直到精确为止,于是开始了复现之旅…..

看看ida:

一开始,从上往下分析逻辑,。接下来看看为何是这样:

这个函数将输入的大写转成小写(上网查),继续

输入44个字节,以-为分隔符号,切割出12个字符,那么flag{a-b-c},其中a和b和c都是16进制的数。

这堆东西,一开始看不懂,v12是一个数...

Read article
0%