自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 攻防世界:bad_python anaconda tea加解密 pyc的16进制头部分内容 pyc反编译成py文件的方法

摘要:本文介绍了如何修复破损的Python 3.6字节码文件(.pyc)并逆向还原出源代码。作者通过分析.pyc文件结构,发现前16字节的Magic部分损坏,需要从正常.pyc文件中提取正确的头部信息。修复后使用uncompyle6工具成功反编译出包含TEA加密算法的Python代码。通过分析加密逻辑,作者用C语言编写了解密程序,最终还原出flag{Th1s_1s_A_Easy_Pyth0n__R3veRse_0}。文章详细记录了从文件修复到逆向分析的全过程,特别强调了处理大/小端字节序的注意事项。

2025-07-29 21:13:00 949

原创 攻防世界:reverse_re3 IDA数据处理 代码分析

摘要:该题目是一个64位ELF文件的地图迷宫题。通过分析main函数发现存在三个地图,每个地图用0、1、3、4表示不同元素(0为墙,1为路,3为起点,4为终点)。解题关键是通过输入方向键(wasd)控制移动,将3移动到4的位置。使用IDA提取675字节的地图数据后,发现需要依次解决三个迷宫。最终输入路径的MD5值即为flag:flag{aeea66fcac7fa80ed8f79f38ad5bb953}。解题过程涉及反汇编分析、数据提取和路径推导。

2025-07-28 15:10:05 625

原创 攻防世界:maze

这篇分析文章探讨了一个迷宫类逆向题目的解题方法。解题思路包括:分析迷宫结构(、确定起始点(0,0)、编写DFS算法搜索路径。最终通过Python脚本自动求解,得到了正确flag

2025-07-25 16:17:10 369

原创 逆向的IDA调试基本使用,简单反调试识别,修改汇编代码,攻防世界:csaw2013reversing2

摘要:本文分析了一道CTF题目中的反调试技术。通过IDA调试32位可执行文件发现,程序使用IsDebuggerPresent()进行反调试检测。调试状态下会跳过关键函数sub_C61000直接执行__debugbreak,而非调试状态下会进入MessageBoxA输出乱码。作者详细介绍了IDA的本地调试方法(F7/F8单步执行),并通过修改jmp跳转和NOP指令绕过"int 3"调试陷阱,最终同时执行sub_C61000和MessageBoxA两个关键函数,成功获取flag{revers

2025-07-24 17:52:15 1095

原创 攻防世界:no-strings-attached

结合之前的wchar_t,这是linux的程序,看到,每隔4个字节有一个数,依次有39左右个数,因为最后一个s的数是4个0,这就像字符串后面的“/0”一样。注意就是,s的数据的提取,记得地址的大小,因为一个s元素有4个字节,记得把地址大的放在前面,比如s的第一个元素就是 “00 00 14 3A”转化成10进制是5178。看到这种的,就去寻找strings了,结果他压根就没有,他是一个一个拆开来的,所以没啥用,这个主函数全是其他函数,很离谱,但是只有最后一个是有用的,我们把他打开。

2025-07-23 20:53:14 166

原创 攻防世界:logmein 关于地址的探究

关于logmein 引发对地址的探究

2025-07-23 13:42:36 361

原创 逆向 攻防世界 :666

这里我一开始以为是错序的,感觉很麻烦,但是实际上,v3就像一个中间变量,只是为了给a1和a2进行传值的,所以依旧是正常逻辑就好了,就行小学的平移律一样,特别的是100^10^10等于等于没有^,这个看看^运行逻辑就出来,所以最后你就得到flag啦。这里最重要的是encode函数,因为他把v5和s都放进去,后面用s与enflag比较,因为一开始s没有定义,没定义的数做比较没啥意义,所以encode函数应该要打开看看的,反正,有函数就找到看看呗。这就是encode函数,v5就a1,s就是a2。

2025-07-20 11:50:49 702

原创 《错—题》

今天写代码遇到了几个错题,虽然参加了学校的acm社团但是我不是很喜欢做题目,也算懒吧,我不是很喜欢那种抠字眼的题目,就是我才刚刚开始学,很多都还不知道,就是想自学,把大致框架学会来,看到有的同学,题目做了很多,都是时间复杂度空间复杂度很大的,做了不少,但是连指针都不知道...当然也不能说谁的比较好吧。其实我还有一个错误的地方就是 '/' 的不太重视,这个只有整数的时候才是特殊的除法,如有有一个浮点数就不一样了。

2024-11-24 20:30:54 141

原创 数组指针的理解

在二维数组中 int(*p)[5]就代表一个拥有5个 int 类型元素的数组,p本质就是取地址了的数组名,所以p+1就是指向下一个数组,下一个数组又是二维数组里面的数,所以可以历遍二维数组的每一个元素。*(p+i)就是解引用,与&相互抵消(在我看来是这样的)就是发现这个可以应用在,一维数组,二维数组,但是数组名本身就是地址,这导致如果仅仅使用在一维数组会很繁琐,明明可以直接使用数组名的。arr2 指的是一个一维数组的地址!不是arr2[0][0]的地址。

2024-11-21 20:36:51 132

原创 指针数组和数组指针的区分

int(*p)[10]就是一个数组指针,一般是int(*p)[10] = &arr ,这么写的。p可以指向一个数组,这个数组有10个元素,每个元素的类型是int。int *p[10] 这就是一个指针数组,“ * ”的作用就是表明p代表一个指针,p的类型是int * [10],所以这么看其实就是p的里面是10个整型指针,char *p[10]也是指针数组,只不过里面会装10个字符指针。根据前面的整型指针,字符指针,指针指向什么就是什么指针,所以不难发现,还有一个数组指针,里面是装数组的。

2024-11-20 20:41:17 150

原创 fgets的理解

在内部,有一个字符数组的指针,一般就是数组名(基本数组名称就是首元素地址),然后第二个 ”int n“ 就是要存储的字符的多少了。第三个就是要提取的字符的途径了,我现在还不是很会,但stdin就是指我在键盘上的输入的值。不管你预计存储多少字符都会提前终止,流程就是把 ”\n“吸收了,再在下一位加上 ”\0“结束。(所以为什么有说法就是fgets只能提取一行字符,你要有多行字符不就会换行了吗...)遇到 ”\0“是字符串的结束符,而不是fgets,fgets和这个没有直接关系。fgets函数如果提前遇到。

2024-11-19 20:22:25 294

原创 一个无法解析的外部符号(多解)

一开始就被吓到了,无法解析的外部符号,以为我的编译器坏了,马上去找相关信息,下载了什么windows SDK,然后就,vs打开,项目—>属性—>平台工具集(使SDK换一个),总之不是我的编译器的问题。在编程课上没有完成的作业,因为不熟悉编译器devc++所以调试都不会用啊...就回寝室打算用vs2022再去看看(一般的程序员都是20%时间写代码,,80%时间用来调试,F9,F10,F11...)操作系统:Windows,Mac,UNIX,DOS...至于他们的区别,我还不知道,下次再说。

2024-11-18 21:02:22 583

原创 初步了解栈相关的知识

内存中有栈,堆(毕竟就了解了一部分,完整的要全面了解,再有一定认知再写吧),在自定义一个函数或一个main函数是就会自动申请栈区的内存内存较小,但速度快,里面一般会提供临时变量的内存空间,函数调用时也会占用空间,在这函数返回时,这部分的内存会得到解放。在CPU中有一块叫ALU的部分,他的作用是逻辑运算和数学运算,不过他无法一次性计算全部,所以需要一个部分来临时储存数据,就有了寄存器(叫AX BX CX)名字真随便啊。内存中拿出一部分做栈区,工作原理就像一个弹夹一样,先进后出。

2024-10-13 18:36:22 191

原创 2024年10月12日 专业课知识整理

(4)>> <<表示这个数的二进制向右向左移动2位,向左移也可以借此看成扩大了2的n个倍数,向右移则反之,注意向右移很有可能不是简单的缩小,比如5的二进制101如果、>>2,得到的值是1,不是1.25。(7)printf中的 %5d 的意思是如果超出了5个数字不管,如果低于5个数字,则用空格补齐(空格在左,%-5d的区别只是空格在右。(6)%u是无符号整型 unsigned (因为把符号位删去了,所以使正数范围扩大,同时负数输入就会因此有很大的偏差)(2)%结果的正负与被除数相同。

2024-10-12 21:23:41 1385

原创 近段时间的错题集

今天主要是记录一些很是困扰的问题,首先是在尝试使用递归时一定要时刻注意好递归的条件,不然会导致栈区的溢出,栈区主要是在执行函数时,函数内局部变量的存储单元都可以在栈上创建,最后还有一个就是一些编译器不支持 “长变量” 就是初始化时不可以 “int arr[a]” 这个时候就不可以做像这种。再有就是一定要调试,不调试很难发现问题,脑子一热想当然就会造成编程的大问题。加入社团后开始写一些题目了,以前总是纸上谈兵,现在才知道。我的第一个for循环的初始值就是错的,后面就全错了。这种要变量又要数组的题。

2024-10-11 22:39:44 335

原创 梦的开始(大一)

后来我在《高老头》看到一句话 “你剥夺了我的理智,却要我感性思考” 是的确实是这样,我不后悔。高考成绩下来时我考了571/750,语文103,数学120,英语92,物理88,化学84,生物84,我考上了浙江科技大学,一所公办本科大学,回望过去,普高是我的奢望,浙大是我的奢望,民办本科是我的奢望,211也曾是我的奢望,其中有的实现了,有的失败了,这很正常,没有一帆风顺,没有平步青云,脚踏实地,我或许不是世界的主人公,但我是我自己人生的主宰,只要我还有希望,我不放弃,我就还有继续下去的筹码!

2024-10-05 11:36:51 383

空空如也

空空如也

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

TA关注的人

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