自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 PE学习(5)

当.exe文件调用dll文件里面的函数时,需要给.exe文件提供一个记录了dll文件中函数或变量的名称和地址的清单,这个清单就是导出表。导出表的主要作用是将PE中存在的函数引出到外部,以便其他人或程序可以使用这些函数,实现代码的重用。大多数情况下,exe文件没有导出表,dll文件有导出表(exe文件也可能有)。

2024-08-26 16:11:22 928

原创 Moectf第二周

脱壳打开moectf{ec5390dd-f8cf-4b02-bc29-3bb0c5604c29}就是flag。

2024-08-26 16:09:34 881

原创 ESP定律脱壳

在程序执行过程中,尤其是当函数调用发生时,ESP的值会发生变化,以反映栈上新的栈帧的创建。当函数返回时,ESP的值会恢复到函数调用之前的值,以保持栈的平衡。这就是堆栈平衡定律,也称ESP定律。在加了壳的软件中,程序刚开始加载时,首先会执行解密程序,而ESP栈顶指针会在解密程序执行完毕后,跳回到真正的程序时,有一个大幅度的跳转,这个跳转过程中ESP指针会回到执行解密程序之前的值。根据这一特性,通过跟踪ESP指针的归位时刻,可以找到解密程序的结束位置,进而找到程序的入口点(EP点),从而实现脱壳。

2024-08-21 23:53:58 166

原创 PE学习(4)

节有很多个,在我们扩大节时,一般会选择扩大最后一个节,因为如果扩大其他节,那么要修改这个节后面所有节的偏移和属性,如果扩大最后一个节,那么只需修改最后一个节的数据。

2024-08-19 18:47:28 938

原创 汇编学习笔记(2)

1. 功能:实现循环(计数型循环)2. 格式:LOOP + 标号图中循环将会执行11次,每一次循环AX寄存器里存的数会加2.

2024-08-18 17:54:53 499

原创 PE学习(3)

PE空白区表示PE文件按照对齐方式之后多出来的部分,可以是节与节之间的空白区也可以是节表与节之间的空白区,在图中是绿色部分。完成之后,运行时的顺序是:函数入口(添加的代码的起始地址)——>call指令调用 MessageBoxA函数——>JMP指令跳到修改之前函数开始地址。注意,添加代码是添加在内存对齐后的地址,而不是文件对齐地址。使用十六进制编辑器打开PE文件后的状态是文件对齐状态,所以需要转换成内存对齐的地址。

2024-08-12 19:26:37 380

原创 有限域下的乘法逆元

假设模数是12,任意一个数x,x mod 12的最大值是11,而11+1也就是12刚好等于模数。所以一个数的模数是他取余下的最大值加1。进行逆向求解,则需要*(p+i)=((*(p+i)^(0xd396d+0xdeadbeef))-0xdeadc0de)/0xccffbbbb。具体地说,对于有限域中的元素 a,它的乘法逆元记作 a^(-1),即a * a^(-1) = 1。乘法逆元的求解需要用到a * a^(-1) ≡ 1 (mod p),其中a是要求的数,a^(-1)是他的乘法逆元,p是模数。

2024-08-12 16:48:45 252

原创 Moectf题解

用记事本打开 customize.sh文件。这段代码最后提示了用base64解密。

2024-08-12 16:48:22 822

原创 汇编学习笔记

机器语言:机器语言(Machine Language)是直接被计算机的中央处理器(CPU)识别和执行的一种低级语言。它是计算机能够直接理解并执行的指令集合,由二进制代码(0和1)组成。由于计算机是需要电的,而电路设计只有两种状态:1(真·通电)0(假·未通电),所以计算机中存储的任何文件、接收的任何指令都是由0和1组成的,即计算机只能读懂二进制。汇编语言:汇编语言(Assembly Language)是一种低级语言,它介于机器语言和高级语言之间。

2024-08-12 14:54:23 499

原创 PE文件结构(2)

假设我们需要存储一个人的身份证和学号中的一个,如果用结构体定义两个变量,但是每次都只用到其中一个,那么另一个成员的空间永远是浪费的,为了节省内存,可以使用联合体。联合体的特点:1.联合体成员共享内存空间。2.联合体空间大小是联合体成员中最大成员的空间大小。3.联合体中最多有一个成员有效。

2024-08-05 16:23:36 599

原创 pe文件结构

PE文件的全称是Portable Executable,意为可移植的可执行文件,是微软Windows操作系统上广泛使用的程序文件格式(包括间接被执行的文件,如DLL)。PE文件被称为“可移植的”是因为在所有平台(如x86、Alpha、MIPS等)上实现的Windows NT及其后续版本(如Windows 95、Windows 2000、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 10等)都使用相同的可执行文件格式。

2024-07-29 16:32:12 943

原创 ciscn--arm_re

这一段将数据存储在了[x29,var C0]的位置,跟进去寻找unk 100003F10。上面是加密过程,进行了乘加和异或,四个字节一组,编写脚本。是一串Data,注意小段序。

2024-05-27 00:33:56 231

原创 week 1 --RE

用了upx壳,去壳后用ida打开,有个tea加密与标准的tea加密进行对比发现在v4的值和加密顺序上的进行了魔改,这里对要对比的字符串进行了加密,用动调的方法可以直接得到加密后的值编写脚本并运行。

2024-05-27 00:21:34 153

原创 XYCTF2024

用ida打开无法反汇编出伪代码,只能从汇编代码下手。利用chatgpt得到汇编代码大概意思其实就是将输入的字符串与后一位异或,最后再比较。写出脚本并运行。

2024-05-05 23:58:07 429 2

原创 HZNUCTF2024初赛

但是与v12不同的是, std::string::operator+=(v11, "#")说明v11在加了“#”后经过Xor函数返回值一定是1,故v6一定是0,所以v7必须是1,也就是v12一定是0,因为v12=v15,所以v15一定是0,而v15是v13和v14异或的结果,所以v13=v14,v13是输入的flag,所以flag是v14,因为std::string::basic_string(v14, &v[abi:cxx11]);发现它是比较字符串是否相等的函数,相等返回0,不同返回1。

2024-05-05 23:57:00 1032 3

原创 Buuctf—— Re题解

所以这一段加密就是把A换成N,把N换成A,把B换成O,把O换成B······。fopen函数是打开文件,fread是读取文件后存放数据到ptr数组里,fclose是关闭文件,所以flag就在ptr数组里面,后面是一堆加密和输出,其中i&1是判断奇偶数:1换为二进制是0000 0001,进行与运算无论最后一位前面是1还是零,与运算后一定是0,所以只需要看最后一位,如果最后一位是0,那么i&1就是0,如果最后一位是1,那么i&1结果是1.如果是奇数,那么最后一位一定是1,而偶数则是0.所以它可以判断奇偶性。

2024-04-14 23:48:50 890

原创 FCTF题解

32位无壳,拖入ida是花指令,故需分析汇编代码nop掉无用代码nop方法为:分析哪段代码是多余的->选定无用指令后按u取消定义->修改为90(edit->Patch program->change byte然后将其改为90)亦可以选择ctrl+n直接nop->按c重新识别为代码。全部花指令修复成功后效果如下进行加密前后唯一不变的是Buf1[0],故应从0开始。依据伪代码写程序如下运行出flag。

2024-04-07 20:24:40 206

原创 Linux远程调试

打开虚拟机终端在终端里输入ifconfig获取地址。

2024-03-30 17:32:48 330 2

原创 buuctf 题解——逆向

下载文件后用ida打开,查看伪代码,分析可得该程序需要用户输入一串字符,然年后令该字符的第i位与第i-1位进行异或,异或后的结果与global对应的字符串进行比较,故该题的flag需要我们逆向异或(即从最后一位开始向前异或)后正向输出跟进global得到字符串后转化为十进制数编写程序并运行得到结果。

2024-03-24 20:08:10 771 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除